2import 'package:connect/core/localization/app_localizations.dart';
3import 'package:flutter/material.dart';
4import 'package:flutter_pdfview/flutter_pdfview.dart';
5import 'package:flutter_screenutil/flutter_screenutil.dart';
6import 'package:path_provider/path_provider.dart';
7import 'package:flutter/services.dart';
9import '../../../../core/ui/widgets/custom_scaffold.dart';
18 required this.pdfPath,
19 required this.courseId,
20 required this.onComplete,
24 State<PdfViewerScreen>
createState() => _PdfViewerScreenState();
27class _PdfViewerScreenState
extends State<PdfViewerScreen> {
43 final ByteData data = await rootBundle.load(widget.pdfPath);
44 final List<int> bytes = data.buffer.asUint8List();
47 final dir = await getTemporaryDirectory();
50 final file = File(
'${dir.path}/${widget.pdfPath.split('/
').last}');
53 await file.writeAsBytes(bytes);
67 Widget
build(BuildContext context) {
68 return CustomScaffold(
70 isLeadingVisible:
true,
73 ? Center(
child: CircularProgressIndicator())
83 mainAxisAlignment: MainAxisAlignment.spaceBetween,
86 '${AppLocalizations.of(context).translate('Page
')} $_currentPage of $_totalPages',
87 style: Theme.of(context)
92 Theme.of(context).colorScheme.primary,
96 style: ElevatedButton.styleFrom(
101 shape: RoundedRectangleBorder(
102 borderRadius: BorderRadius.circular(200),
109 _hasMarkedComplete = true;
111 widget.onComplete(0.5);
112 Navigator.pop(context);
117 .translate(
'Marked as Complete')
119 .translate(
'I\'ve Read the PDF'),
120 style: Theme.of(context)
124 color: Theme.of(context)
160 swipeHorizontal:
true,
165 fitPolicy: FitPolicy.BOTH,
166 preventLinkNavigation:
false,
169 _totalPages = pages!;
174 onPageError: (page, error) {},
175 onViewCreated: (PDFViewController pdfViewController) {
178 onPageChanged: (
int? page,
int?
total) {
AppLocalizations(this.locale)
String translate(String key)
static AppLocalizations of(BuildContext context)
override void initState()
override Widget build(BuildContext context)
Future< void > _loadPdfFromAssets() async