cpdf_reader_widget.dart 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /// Copyright © 2014-2024 PDF Technologies, Inc. All Rights Reserved.
  2. ///
  3. /// THIS SOURCE CODE AND ANY ACCOMPANYING DOCUMENTATION ARE PROTECTED BY INTERNATIONAL COPYRIGHT LAW
  4. /// AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE ComPDFKit LICENSE AGREEMENT.
  5. /// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES.
  6. /// This notice may not be removed from this file.
  7. import 'dart:io';
  8. import 'package:compdfkit_flutter/cpdf_configuration.dart';
  9. import 'package:flutter/foundation.dart';
  10. import 'package:flutter/gestures.dart';
  11. import 'package:flutter/material.dart';
  12. import 'package:flutter/rendering.dart';
  13. import 'package:flutter/services.dart';
  14. class CPDFReaderWidget extends StatefulWidget {
  15. /// pdf file path
  16. final String document;
  17. final String? password;
  18. /// init ComPDFKit SDK configuration
  19. final CPDFConfiguration configuration;
  20. /// init callback
  21. const CPDFReaderWidget({
  22. Key? key,
  23. required this.document,
  24. this.password = '',
  25. required this.configuration,
  26. }) : super(key: key);
  27. @override
  28. State<CPDFReaderWidget> createState() => _CPDFReaderWidgetState();
  29. }
  30. class _CPDFReaderWidgetState extends State<CPDFReaderWidget> {
  31. @override
  32. Widget build(BuildContext context) {
  33. const String viewType = 'com.compdfkit.flutter.ui.pdfviewer';
  34. final Map<String, dynamic> creationParams = <String, dynamic>{
  35. 'document': widget.document,
  36. 'password': widget.password,
  37. 'configuration': widget.configuration.toJson()
  38. };
  39. if (Platform.isAndroid) {
  40. return PlatformViewLink(
  41. surfaceFactory:
  42. (BuildContext context, PlatformViewController controller) {
  43. return AndroidViewSurface(
  44. controller: controller as AndroidViewController,
  45. hitTestBehavior: PlatformViewHitTestBehavior.opaque,
  46. gestureRecognizers: const <Factory<
  47. OneSequenceGestureRecognizer>>{});
  48. },
  49. onCreatePlatformView: (PlatformViewCreationParams params) {
  50. return PlatformViewsService.initSurfaceAndroidView(
  51. id: params.id,
  52. viewType: viewType,
  53. creationParams: creationParams,
  54. creationParamsCodec: const StandardMessageCodec(),
  55. layoutDirection: TextDirection.ltr)
  56. ..addOnPlatformViewCreatedListener(params.onPlatformViewCreated)
  57. ..addOnPlatformViewCreatedListener(onPlatformViewCreated)
  58. ..create();
  59. },
  60. viewType: viewType);
  61. } else if (Platform.isIOS) {
  62. return UiKitView(
  63. viewType: viewType,
  64. layoutDirection: TextDirection.ltr,
  65. hitTestBehavior: PlatformViewHitTestBehavior.opaque,
  66. creationParams: creationParams,
  67. creationParamsCodec: const StandardMessageCodec(),
  68. onPlatformViewCreated: (id) {
  69. onPlatformViewCreated(id);
  70. },
  71. );
  72. } else {
  73. return const Center(child: Text('only support android and ios'));
  74. }
  75. }
  76. Future<void> onPlatformViewCreated(int id) async {
  77. // if (widget.onComPDFKitWidgetCreate != null) {
  78. // widget.onComPDFKitWidgetCreate!(CPDFViewCtrl(id));
  79. // }
  80. }
  81. }