2import 'package:flutter/material.dart';
3import 'package:flutter_pdfview/flutter_pdfview.dart';
4import 'package:flutter_screenutil/flutter_screenutil.dart';
5import 'package:path_provider/path_provider.dart';
6import 'package:flutter/services.dart';
8import '../../../../core/ui/widgets/custom_scaffold.dart';
17 required this.pdfPath,
18 required this.courseId,
19 required this.onComplete,
23 State<PdfViewerScreen>
createState() => _PdfViewerScreenState();
26class _PdfViewerScreenState
extends State<PdfViewerScreen> {
42 final ByteData data = await rootBundle.load(widget.pdfPath);
43 final List<int> bytes = data.buffer.asUint8List();
46 final dir = await getTemporaryDirectory();
49 final file = File(
'${dir.path}/${widget.pdfPath.split('/
').last}');
52 await file.writeAsBytes(bytes);
59 print(
'Error loading PDF: $e');
67 Widget
build(BuildContext context) {
68 return CustomScaffold(
69 title:
'Learning Material',
70 isLeadingVisible:
true,
73 ? Center(
child: CircularProgressIndicator())
83 mainAxisAlignment: MainAxisAlignment.spaceBetween,
86 '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);
116 ?
'Marked as Complete'
117 :
"I've Read the PDF",
118 style: Theme.of(context)
122 color: Theme.of(context)
156 swipeHorizontal:
true,
161 fitPolicy: FitPolicy.BOTH,
162 preventLinkNavigation:
false,
165 _totalPages = pages!;
170 print(
'Error loading PDF: $error');
172 onPageError: (page, error) {
173 print(
'Error loading page $page: $error');
175 onViewCreated: (PDFViewController pdfViewController) {
178 onPageChanged: (
int? page,
int? total) {
override void initState()
class App extends StatefulWidget build(BuildContext context)
Future< void > _loadPdfFromAssets() async
class PdfViewerScreen extends StatefulWidget _totalPages
style Text( '${ 'scheduling.reference'.tr()}:${collection.internalCode}', style:Theme.of(context).textTheme.bodySmall,)
style Column(crossAxisAlignment:CrossAxisAlignment.end, children:[Container(padding:EdgeInsets.symmetric(horizontal:8.w, vertical:4.h), decoration:BoxDecoration(color:ColorPalette.tiffanyBlue.withValues(alpha:0.1), borderRadius:BorderRadius.circular(12),), child:Text(collection.type ?? '', style:Theme.of(context).textTheme.bodySmall?.copyWith(color:ColorPalette.tiffanyBlue, fontWeight:FontWeight.bold,),),),],)