pdf_page_widget.dart 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. import 'package:flutter/material.dart';
  2. import 'package:kmpdfkit_demo/widgets/compdfkit/compdfkit_widget.dart';
  3. import 'package:kmpdfkit_demo/widgets/config.dart';
  4. import 'package:kmpdfkit_demo/widgets/events.dart';
  5. import 'package:kmpdfkit_demo/widgets/page_routes.dart';
  6. import '../function/pdf_buttom_annot_fun_widget.dart';
  7. class PDFPageWidget extends StatefulWidget {
  8. final String? documentPath;
  9. const PDFPageWidget({Key? key, this.documentPath}) : super(key: key);
  10. @override
  11. State<PDFPageWidget> createState() => _PDFPageWidgetState();
  12. }
  13. class _PDFPageWidgetState extends State<PDFPageWidget> {
  14. bool _fullScreen = false;
  15. bool isInit = false;
  16. @override
  17. Widget build(BuildContext context) {
  18. return Scaffold(
  19. body: Stack(
  20. children: [
  21. SafeArea(
  22. child: ComPDFKitWidget(
  23. documentPath: widget.documentPath,
  24. configuration: applyNormalConfiguration(),
  25. onComPDFKitWidgetCreate: () {
  26. setState(() {
  27. isInit = true;
  28. });
  29. setReaderViewCallbackListener(onTapMainDocArea: () {
  30. setState(() {
  31. _fullScreen = !_fullScreen;
  32. });
  33. });
  34. },
  35. )),
  36. Builder(builder: (context) {
  37. return Positioned(
  38. top: 0,
  39. left: 0,
  40. right: 0,
  41. child: AnimatedOpacity(
  42. opacity: _fullScreen ? 0.0 : 1.0,
  43. duration: const Duration(milliseconds: 200),
  44. child: AppBar(
  45. actions: [
  46. IconButton(
  47. onPressed: () {
  48. Navigator.pushNamed(context, PageRoutes.settings);
  49. },
  50. icon: const Icon(Icons.more_vert))
  51. ],
  52. )));
  53. }),
  54. Positioned(
  55. bottom: 0,
  56. left: 0,
  57. right: 0,
  58. child: AnimatedOpacity(
  59. opacity: _fullScreen ? 0.0 : 1.0,
  60. duration: const Duration(milliseconds: 200),
  61. child: isInit
  62. ? const PDFButtonAnnotFunWidget()
  63. : Container(
  64. color: const Color(0xFFEFF4FD),
  65. width: double.infinity,
  66. height: 60))),
  67. ],
  68. ),
  69. );
  70. }
  71. }