import 'package:compdfkit_flutter/core/cpdf_view_ctrl.dart'; import 'package:flutter/material.dart'; import '../dialog/cpdf_base_input_dialog_widget.dart'; /// Copyright © 2014-2023 PDF Technologies, Inc. All Rights Reserved. /// /// THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW /// AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT. /// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES. /// This notice may not be removed from this file. class CPDFPageIndicator extends StatefulWidget { CPDFViewCtrl ctrl; CPDFPageIndicator({required this.ctrl, super.key}); @override State createState() => _CPDFPageIndicatorState(); } class _CPDFPageIndicatorState extends State { int _currentPage = 0; int _pageCount = 0; bool _enterTextIsEmpty = true; @override void initState() { super.initState(); _initDocumentData(); setReaderViewCallback(); } void _initDocumentData() async { int pageCount = await widget.ctrl.document.getPageCount(); setState(() { _pageCount = pageCount; }); } @override Widget build(BuildContext context) { var textStyle = const TextStyle(color: Colors.white); return GestureDetector( child: Container( decoration: const BoxDecoration( color: Color(0xCC000000), borderRadius: BorderRadius.all(Radius.circular(2))), padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8), child: Row( mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ Text((_currentPage + 1).toString(), style: textStyle), Text('/', style: textStyle), Text(_pageCount.toString(), style: textStyle) ], ), ), onTap: () async { int? jumpPageIndex = await showDialog( context: context, builder: (BuildContext context) { return CPDFPageNavigationWidget( pageCount: _pageCount, hintText: 'Page (1/$_pageCount)', ); }); if (jumpPageIndex != null) { widget.ctrl.setDisplayPageIndex(jumpPageIndex); } }, ); } void setReaderViewCallback() { widget.ctrl.setReaderViewCallback( onMoveToChild: (pageIndex) { setState(() { _currentPage = pageIndex; }); }, onScrollEnd: () {}, onRecordLastJumpPageNum: (pageIndex) {}); } }