From a28f5dc14014ad20135a6e408bc9db292b354a9f Mon Sep 17 00:00:00 2001 From: Julius Kato Mutumba Date: Wed, 12 Mar 2025 00:10:50 +0300 Subject: [PATCH 1/5] custom toolbar items --- .../flutter/pspdfkit/FlutterPdfUiFragment.kt | 144 ++- .../pspdfkit/flutter/pspdfkit/PSPDFKitView.kt | 19 +- .../flutter/pspdfkit/api/PspdfkitApi.g.kt | 33 +- .../lib/pspdfkit_toolbar_customization.dart | 21 + ios/Classes/api/PspdfkitApi.g.swift | 39 +- lib/pspdfkit.dart | 1 + lib/src/api/pspdfkit_api.g.dart | 1067 ++++++----------- lib/src/toolbar/custom_toolbar_item.dart | 63 + lib/src/types.dart | 2 + ...pdfkit_flutter_widget_controller_impl.dart | 10 +- lib/src/widgets/pspdfkit_widget.dart | 11 + .../pspdfkit_widget_controller_native.dart | 3 +- pigeons/pspdfkit.dart | 7 + 13 files changed, 724 insertions(+), 696 deletions(-) create mode 100644 lib/src/toolbar/custom_toolbar_item.dart diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt index 0a28f9e..644daaa 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt @@ -9,21 +9,149 @@ package com.pspdfkit.flutter.pspdfkit -/// Copyright © 2021-2025 PSPDFKit GmbH. 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 PSPDFKIT LICENSE AGREEMENT. -/// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES. -/// This notice may not be removed from this file. -/// +import android.graphics.Color +import android.graphics.drawable.Drawable +import android.os.Bundle +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem +import android.view.View +import androidx.core.content.ContextCompat +import androidx.core.graphics.drawable.DrawableCompat import com.pspdfkit.document.PdfDocument +import com.pspdfkit.flutter.pspdfkit.api.CustomToolbarCallbacks import com.pspdfkit.ui.PdfUiFragment +/** + * A custom PdfUiFragment that supports custom toolbar items. + * It extends PdfUiFragment from PSPDFKit and adds functionality for handling custom toolbar items. + */ class FlutterPdfUiFragment : PdfUiFragment() { + // Maps identifier strings to menu item IDs to track custom toolbar items + private val customToolbarItemIds = HashMap() + private var customToolbarCallbacks: CustomToolbarCallbacks? = null + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + // Enable options menu for the fragment + setHasOptionsMenu(true) + } + + /** + * Called when the document is loaded. Notifies Flutter that the document has been loaded. + * + * @param document The loaded PDF document. + */ override fun onDocumentLoaded(document: PdfDocument) { super.onDocumentLoaded(document) - // Notify the Flutter PSPDFKit plugin that the document has been loaded. + // Notify the Flutter PSPDFKit plugin that the document has been loaded. EventDispatcher.getInstance().notifyDocumentLoaded(document) } + + /** + * Sets the custom toolbar items to be displayed in the toolbar. + * + * @param items List of custom toolbar item configurations from Flutter. + * @param callbacks Callbacks to notify Flutter when a custom toolbar item is tapped. + */ + fun setCustomToolbarItems(items: List>, callbacks: CustomToolbarCallbacks) { + this.customToolbarCallbacks = callbacks + // Clear existing custom items + activity?.invalidateOptionsMenu() + customToolbarItemIds.clear() + // Add the new items + addCustomToolbarItems(items) + } + + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + super.onCreateOptionsMenu(menu, inflater) + + // Add all registered custom toolbar items + for ((identifier, itemId) in customToolbarItemIds) { + // Only add it if it's not already in the menu + if (menu.findItem(itemId) == null) { + // Get the stored configuration for this item + val title = getCustomToolbarItemTitle(identifier) + val drawable = getCustomToolbarItemDrawable(identifier) + + menu.add(Menu.NONE, itemId, Menu.NONE, title) + .setIcon(drawable) + .setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS) + } + } + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean { + // Check if this is one of our custom toolbar items + val matchingIdentifier = customToolbarItemIds.entries.find { it.value == item.itemId }?.key + if (matchingIdentifier != null) { + // Notify Flutter about the tap + customToolbarCallbacks?.onCustomToolbarItemTapped(matchingIdentifier) + return true + } + + return super.onOptionsItemSelected(item) + } + + // Store titles for custom toolbar items + private val customToolbarItemTitles = HashMap() + // Store drawables for custom toolbar items + private val customToolbarItemDrawables = HashMap() + + private fun getCustomToolbarItemTitle(identifier: String): String { + return customToolbarItemTitles[identifier] ?: "" + } + + private fun getCustomToolbarItemDrawable(identifier: String): Drawable? { + return customToolbarItemDrawables[identifier] + } + + /** + * Adds custom toolbar items based on the configuration from Flutter. + * + * @param items The list of custom toolbar item configurations. + */ + private fun addCustomToolbarItems(items: List>) { + if (items.isEmpty()) return + + val activity = activity ?: return + + for (itemConfig in items) { + val identifier = itemConfig["identifier"] as? String ?: continue + val title = itemConfig["title"] as? String ?: continue + val iconName = itemConfig["iconName"] as? String + val iconColorHex = itemConfig["iconColor"] as? String + + // Store the title for this item + customToolbarItemTitles[identifier] = title + + // Generate a unique ID for this menu item + val itemId = identifier.hashCode() + customToolbarItemIds[identifier] = itemId + + // Load drawable if available + if (iconName != null) { + val fragmentContext = activity.applicationContext ?: continue + val resourceId = fragmentContext.resources.getIdentifier(iconName, "drawable", fragmentContext.packageName) + if (resourceId != 0) { + val drawable = ContextCompat.getDrawable(fragmentContext, resourceId)?.mutate() + + // Apply tint if specified + if (drawable != null && iconColorHex != null) { + try { + val color = Color.parseColor(iconColorHex) + DrawableCompat.setTint(drawable, color) + } catch (e: Exception) { + // Invalid color format, use default + } + } + + customToolbarItemDrawables[identifier] = drawable + } + } + } + // Update the menu + activity.invalidateOptionsMenu() + } } \ No newline at end of file diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt index f7f89bd..5da9972 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt @@ -26,6 +26,7 @@ import com.pspdfkit.document.processor.PdfProcessor import com.pspdfkit.document.processor.PdfProcessor.ProcessorProgress import com.pspdfkit.document.processor.PdfProcessorTask import com.pspdfkit.flutter.pspdfkit.AnnotationConfigurationAdaptor.Companion.convertAnnotationConfigurations +import com.pspdfkit.flutter.pspdfkit.api.CustomToolbarCallbacks import com.pspdfkit.flutter.pspdfkit.api.NutrientEventsCallbacks import com.pspdfkit.flutter.pspdfkit.api.PspdfkitWidgetCallbacks import com.pspdfkit.flutter.pspdfkit.api.PspdfkitWidgetControllerApi @@ -65,6 +66,7 @@ internal class PSPDFKitView( private val messenger: BinaryMessenger, documentPath: String? = null, configurationMap: HashMap? = null, + customToolbarItems: List> ) : PlatformView, MethodCallHandler { private var fragmentContainerView: FragmentContainerView? = FragmentContainerView(context) @@ -73,8 +75,8 @@ internal class PSPDFKitView( private var fragmentCallbacks: FlutterPdfUiFragmentCallbacks? = null private val pspdfkitViewImpl: PspdfkitViewImpl = PspdfkitViewImpl() private val nutrientEventsCallbacks: NutrientEventsCallbacks = NutrientEventsCallbacks(messenger, "events.callbacks.$id") - private val widgetCallbacks: PspdfkitWidgetCallbacks = - PspdfkitWidgetCallbacks(messenger, "widget.callbacks.$id") + private val widgetCallbacks: PspdfkitWidgetCallbacks = PspdfkitWidgetCallbacks(messenger, "widget.callbacks.$id") + private val customToolbarCallbacks: CustomToolbarCallbacks? = null init { fragmentContainerView?.id = View.generateViewId() @@ -125,7 +127,12 @@ internal class PSPDFKitView( if (toolbarGroupingItems != null) { val groupingRule = FlutterMenuGroupingRule(context, toolbarGroupingItems) val flutterViewModeController = FlutterViewModeController(groupingRule) - pdfUiFragment.setOnContextualToolbarLifecycleListener(flutterViewModeController) + pdfUiFragment.setOnContextualToolbarLifecycleListener(flutterViewModeController) + } + + // Process custom toolbar items + if (customToolbarItems.isNotEmpty() && f is FlutterPdfUiFragment && customToolbarCallbacks != null) { + f.setCustomToolbarItems(customToolbarItems, customToolbarCallbacks) } } } @@ -177,6 +184,7 @@ internal class PSPDFKitView( val flutterEventsHelper = FlutterEventsHelper(nutrientEventsCallbacks) pspdfkitViewImpl.setEventDispatcher(flutterEventsHelper) PspdfkitWidgetControllerApi.setUp(messenger, pspdfkitViewImpl, id.toString()) + // Set up custom toolbar API } @SuppressLint("CheckResult") @@ -186,8 +194,10 @@ internal class PSPDFKitView( if (!pdfUiFragment.isAdded) { return } - val document = pdfUiFragment.document ?: return + // For other operations, we need the document to be loaded + val document = pdfUiFragment.document ?: return + when (call.method) { "applyInstantJson" -> { val annotationsJson: String? = call.argument("annotationsJson") @@ -684,6 +694,7 @@ class PSPDFKitViewFactory( messenger, creationParams?.get("document") as String?, creationParams?.get("configuration") as HashMap?, + creationParams?.get("customToolbarItems") as List> ) } } diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/api/PspdfkitApi.g.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/api/PspdfkitApi.g.kt index cc73d84..70cb6c6 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/api/PspdfkitApi.g.kt +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/api/PspdfkitApi.g.kt @@ -4,7 +4,7 @@ // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT. // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES. // This notice may not be removed from this file. -// Autogenerated from Pigeon (v24.2.1), do not edit directly. +// Autogenerated from Pigeon (v24.2.2), do not edit directly. // See also: https://pub.dev/packages/pigeon @file:Suppress("UNCHECKED_CAST", "ArrayInDataClass") @@ -2592,3 +2592,34 @@ class AnalyticsEventsCallback(private val binaryMessenger: BinaryMessenger, priv } } } +/** + * Callbacks for custom toolbar item interactions + * + * Generated class from Pigeon that represents Flutter messages that can be called from Kotlin. + */ +class CustomToolbarCallbacks(private val binaryMessenger: BinaryMessenger, private val messageChannelSuffix: String = "") { + companion object { + /** The codec used by CustomToolbarCallbacks. */ + val codec: MessageCodec by lazy { + PspdfkitApiPigeonCodec() + } + } + /** Called when a custom toolbar item is tapped */ + fun onCustomToolbarItemTapped(identifierArg: String, callback: (Result) -> Unit) +{ + val separatedMessageChannelSuffix = if (messageChannelSuffix.isNotEmpty()) ".$messageChannelSuffix" else "" + val channelName = "dev.flutter.pigeon.pspdfkit_flutter.CustomToolbarCallbacks.onCustomToolbarItemTapped$separatedMessageChannelSuffix" + val channel = BasicMessageChannel(binaryMessenger, channelName, codec) + channel.send(listOf(identifierArg)) { + if (it is List<*>) { + if (it.size > 1) { + callback(Result.failure(PspdfkitApiError(it[0] as String, it[1] as String, it[2] as String?))) + } else { + callback(Result.success(Unit)) + } + } else { + callback(Result.failure(createConnectionError(channelName))) + } + } + } +} diff --git a/example/lib/pspdfkit_toolbar_customization.dart b/example/lib/pspdfkit_toolbar_customization.dart index 4e8dd00..7c94501 100644 --- a/example/lib/pspdfkit_toolbar_customization.dart +++ b/example/lib/pspdfkit_toolbar_customization.dart @@ -40,6 +40,27 @@ class PspdfkitToolbarCustomization extends StatelessWidget { ? const EdgeInsets.only(top: kToolbarHeight) : null, child: PspdfkitWidget( + customToolbarItems: [ + CustomToolbarItem( + title: 'Custom ToolbarItem', + identifier: 'custom-toolbar-item', + iconColor: "#000000", + iconName: "toolbar_item", + ), + CustomToolbarItem( + title: 'Custom ToolbarItem 2', + identifier: 'custom-toolbar-item-2', + iconColor: "#000000", + iconName: "toolbar_item", + ), + ], + onCustomToolbarItemTapped: (identifier) { + ScaffoldMessenger.of(context).showSnackBar( + const SnackBar( + content: Text('Hello from custom button!'), + ), + ); + }, documentPath: documentPath, configuration: PdfConfiguration( androidShowAnnotationListAction: false, diff --git a/ios/Classes/api/PspdfkitApi.g.swift b/ios/Classes/api/PspdfkitApi.g.swift index 6ae21bf..a879e9e 100644 --- a/ios/Classes/api/PspdfkitApi.g.swift +++ b/ios/Classes/api/PspdfkitApi.g.swift @@ -4,7 +4,7 @@ // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT. // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES. // This notice may not be removed from this file. -// Autogenerated from Pigeon (v24.2.1), do not edit directly. +// Autogenerated from Pigeon (v24.2.2), do not edit directly. // See also: https://pub.dev/packages/pigeon import Foundation @@ -2482,3 +2482,40 @@ class AnalyticsEventsCallback: AnalyticsEventsCallbackProtocol { } } } +/// Callbacks for custom toolbar item interactions +/// +/// Generated protocol from Pigeon that represents Flutter messages that can be called from Swift. +protocol CustomToolbarCallbacksProtocol { + /// Called when a custom toolbar item is tapped + func onCustomToolbarItemTapped(identifier identifierArg: String, completion: @escaping (Result) -> Void) +} +class CustomToolbarCallbacks: CustomToolbarCallbacksProtocol { + private let binaryMessenger: FlutterBinaryMessenger + private let messageChannelSuffix: String + init(binaryMessenger: FlutterBinaryMessenger, messageChannelSuffix: String = "") { + self.binaryMessenger = binaryMessenger + self.messageChannelSuffix = messageChannelSuffix.count > 0 ? ".\(messageChannelSuffix)" : "" + } + var codec: PspdfkitApiPigeonCodec { + return PspdfkitApiPigeonCodec.shared + } + /// Called when a custom toolbar item is tapped + func onCustomToolbarItemTapped(identifier identifierArg: String, completion: @escaping (Result) -> Void) { + let channelName: String = "dev.flutter.pigeon.pspdfkit_flutter.CustomToolbarCallbacks.onCustomToolbarItemTapped\(messageChannelSuffix)" + let channel = FlutterBasicMessageChannel(name: channelName, binaryMessenger: binaryMessenger, codec: codec) + channel.sendMessage([identifierArg] as [Any?]) { response in + guard let listResponse = response as? [Any?] else { + completion(.failure(createConnectionError(withChannelName: channelName))) + return + } + if listResponse.count > 1 { + let code: String = listResponse[0] as! String + let message: String? = nilOrValue(listResponse[1]) + let details: String? = nilOrValue(listResponse[2]) + completion(.failure(PspdfkitApiError(code: code, message: message, details: details))) + } else { + completion(.success(())) + } + } + } +} diff --git a/lib/pspdfkit.dart b/lib/pspdfkit.dart index a1b0c66..3d6b063 100644 --- a/lib/pspdfkit.dart +++ b/lib/pspdfkit.dart @@ -33,6 +33,7 @@ export 'src/api/pspdfkit_api.g.dart'; export 'src/pspdfkit_processor.dart'; export 'src/annotation_preset_configurations.dart'; export 'src/annotations/annotations.dart'; +export 'src/toolbar/custom_toolbar_item.dart'; /// PSPDFKit plugin to load PDF and image documents on both platform iOS and Android. class Pspdfkit { diff --git a/lib/src/api/pspdfkit_api.g.dart b/lib/src/api/pspdfkit_api.g.dart index 1d17572..7164196 100644 --- a/lib/src/api/pspdfkit_api.g.dart +++ b/lib/src/api/pspdfkit_api.g.dart @@ -4,7 +4,7 @@ // AND MAY NOT BE RESOLD OR REDISTRIBUTED. USAGE IS BOUND TO THE PSPDFKIT LICENSE AGREEMENT. // UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES. // This notice may not be removed from this file. -// Autogenerated from Pigeon (v24.2.1), do not edit directly. +// Autogenerated from Pigeon (v24.2.2), do not edit directly. // See also: https://pub.dev/packages/pigeon // ignore_for_file: public_member_api_docs, non_constant_identifier_names, avoid_as, unused_import, unnecessary_parenthesis, prefer_null_aware_operators, omit_local_variable_types, unused_shown_name, unnecessary_import, no_leading_underscores_for_local_identifiers @@ -21,8 +21,7 @@ PlatformException _createConnectionError(String channelName) { ); } -List wrapResponse( - {Object? result, PlatformException? error, bool empty = false}) { +List wrapResponse({Object? result, PlatformException? error, bool empty = false}) { if (empty) { return []; } @@ -132,25 +131,18 @@ enum AnnotationProcessingMode { enum DocumentPermissions { /// Allow printing of document. printing, - /// Modify the contents of the document. modification, - /// Copy text and images from the document. extract, - /// Add or modify text annotations, fill in interactive form fields. annotationsAndForms, - /// Fill in existing interactive form fields (including signature fields). fillForms, - /// Extract text and images from the document. extractAccessibility, - /// Assemble the document (insert, rotate, or delete pages and create document outline items or thumbnail images). assemble, - /// Print high quality. printHighQuality, } @@ -181,28 +173,20 @@ enum PdfFormFieldTypes { enum NutrientEvent { /// Event triggered when annotations are created. annotationsCreated, - /// Event triggered when annotations are pressed. annotationsDeselected, - /// Event triggered when annotations are updated. annotationsUpdated, - /// Event triggered when annotations are deleted. annotationsDeleted, - /// Event triggered when annotations are focused. annotationsSelected, - /// Event triggered when form field values are updated. formFieldValuesUpdated, - /// Event triggered when form fields are loaded. formFieldSelected, - /// Event triggered when form fields are about to be saved. formFieldDeselected, - /// Event triggered when text selection changes. textSelectionChanged, } @@ -491,6 +475,7 @@ class PointF { } } + class _PigeonCodec extends StandardMessageCodec { const _PigeonCodec(); @override @@ -498,49 +483,49 @@ class _PigeonCodec extends StandardMessageCodec { if (value is int) { buffer.putUint8(4); buffer.putInt64(value); - } else if (value is AndroidPermissionStatus) { + } else if (value is AndroidPermissionStatus) { buffer.putUint8(129); writeValue(buffer, value.index); - } else if (value is AnnotationType) { + } else if (value is AnnotationType) { buffer.putUint8(130); writeValue(buffer, value.index); - } else if (value is AnnotationTool) { + } else if (value is AnnotationTool) { buffer.putUint8(131); writeValue(buffer, value.index); - } else if (value is AnnotationToolVariant) { + } else if (value is AnnotationToolVariant) { buffer.putUint8(132); writeValue(buffer, value.index); - } else if (value is AnnotationProcessingMode) { + } else if (value is AnnotationProcessingMode) { buffer.putUint8(133); writeValue(buffer, value.index); - } else if (value is DocumentPermissions) { + } else if (value is DocumentPermissions) { buffer.putUint8(134); writeValue(buffer, value.index); - } else if (value is PdfVersion) { + } else if (value is PdfVersion) { buffer.putUint8(135); writeValue(buffer, value.index); - } else if (value is PdfFormFieldTypes) { + } else if (value is PdfFormFieldTypes) { buffer.putUint8(136); writeValue(buffer, value.index); - } else if (value is NutrientEvent) { + } else if (value is NutrientEvent) { buffer.putUint8(137); writeValue(buffer, value.index); - } else if (value is PdfRect) { + } else if (value is PdfRect) { buffer.putUint8(138); writeValue(buffer, value.encode()); - } else if (value is PageInfo) { + } else if (value is PageInfo) { buffer.putUint8(139); writeValue(buffer, value.encode()); - } else if (value is DocumentSaveOptions) { + } else if (value is DocumentSaveOptions) { buffer.putUint8(140); writeValue(buffer, value.encode()); - } else if (value is PdfFormOption) { + } else if (value is PdfFormOption) { buffer.putUint8(141); writeValue(buffer, value.encode()); - } else if (value is FormFieldData) { + } else if (value is FormFieldData) { buffer.putUint8(142); writeValue(buffer, value.encode()); - } else if (value is PointF) { + } else if (value is PointF) { buffer.putUint8(143); writeValue(buffer, value.encode()); } else { @@ -551,44 +536,44 @@ class _PigeonCodec extends StandardMessageCodec { @override Object? readValueOfType(int type, ReadBuffer buffer) { switch (type) { - case 129: + case 129: final int? value = readValue(buffer) as int?; return value == null ? null : AndroidPermissionStatus.values[value]; - case 130: + case 130: final int? value = readValue(buffer) as int?; return value == null ? null : AnnotationType.values[value]; - case 131: + case 131: final int? value = readValue(buffer) as int?; return value == null ? null : AnnotationTool.values[value]; - case 132: + case 132: final int? value = readValue(buffer) as int?; return value == null ? null : AnnotationToolVariant.values[value]; - case 133: + case 133: final int? value = readValue(buffer) as int?; return value == null ? null : AnnotationProcessingMode.values[value]; - case 134: + case 134: final int? value = readValue(buffer) as int?; return value == null ? null : DocumentPermissions.values[value]; - case 135: + case 135: final int? value = readValue(buffer) as int?; return value == null ? null : PdfVersion.values[value]; - case 136: + case 136: final int? value = readValue(buffer) as int?; return value == null ? null : PdfFormFieldTypes.values[value]; - case 137: + case 137: final int? value = readValue(buffer) as int?; return value == null ? null : NutrientEvent.values[value]; - case 138: + case 138: return PdfRect.decode(readValue(buffer)!); - case 139: + case 139: return PageInfo.decode(readValue(buffer)!); - case 140: + case 140: return DocumentSaveOptions.decode(readValue(buffer)!); - case 141: + case 141: return PdfFormOption.decode(readValue(buffer)!); - case 142: + case 142: return FormFieldData.decode(readValue(buffer)!); - case 143: + case 143: return PointF.decode(readValue(buffer)!); default: return super.readValueOfType(type, buffer); @@ -601,11 +586,9 @@ class PspdfkitApi { /// Constructor for [PspdfkitApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - PspdfkitApi( - {BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + PspdfkitApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -613,10 +596,8 @@ class PspdfkitApi { final String pigeonVar_messageChannelSuffix; Future getFrameworkVersion() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getFrameworkVersion$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getFrameworkVersion$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -638,16 +619,13 @@ class PspdfkitApi { } Future setLicenseKey(String? licenseKey) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setLicenseKey$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setLicenseKey$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([licenseKey]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([licenseKey]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -663,18 +641,14 @@ class PspdfkitApi { } } - Future setLicenseKeys(String? androidLicenseKey, String? iOSLicenseKey, - String? webLicenseKey) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setLicenseKeys$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future setLicenseKeys(String? androidLicenseKey, String? iOSLicenseKey, String? webLicenseKey) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setLicenseKeys$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel - .send([androidLicenseKey, iOSLicenseKey, webLicenseKey]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([androidLicenseKey, iOSLicenseKey, webLicenseKey]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -690,18 +664,14 @@ class PspdfkitApi { } } - Future present(String document, - {Map? configuration}) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.present$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future present(String document, {Map? configuration}) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.present$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([document, configuration]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([document, configuration]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -717,21 +687,14 @@ class PspdfkitApi { } } - Future presentInstant( - String serverUrl, - String jwt, { - Map? configuration, - }) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.presentInstant$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future presentInstant(String serverUrl, String jwt, {Map? configuration, }) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.presentInstant$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([serverUrl, jwt, configuration]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([serverUrl, jwt, configuration]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -747,18 +710,14 @@ class PspdfkitApi { } } - Future setFormFieldValue( - String value, String fullyQualifiedName) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setFormFieldValue$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future setFormFieldValue(String value, String fullyQualifiedName) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setFormFieldValue$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([value, fullyQualifiedName]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([value, fullyQualifiedName]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -775,16 +734,13 @@ class PspdfkitApi { } Future getFormFieldValue(String fullyQualifiedName) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getFormFieldValue$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getFormFieldValue$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([fullyQualifiedName]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([fullyQualifiedName]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -801,16 +757,13 @@ class PspdfkitApi { } Future applyInstantJson(String annotationsJson) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.applyInstantJson$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.applyInstantJson$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([annotationsJson]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([annotationsJson]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -827,10 +780,8 @@ class PspdfkitApi { } Future exportInstantJson() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.exportInstantJson$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.exportInstantJson$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -852,16 +803,13 @@ class PspdfkitApi { } Future addAnnotation(String annotation, String? attachment) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.addAnnotation$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.addAnnotation$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([annotation, attachment]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([annotation, attachment]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -878,16 +826,13 @@ class PspdfkitApi { } Future removeAnnotation(String annotation) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.removeAnnotation$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.removeAnnotation$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([annotation]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([annotation]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -904,16 +849,13 @@ class PspdfkitApi { } Future getAnnotations(int pageIndex, String type) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getAnnotations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getAnnotations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([pageIndex, type]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([pageIndex, type]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -930,10 +872,8 @@ class PspdfkitApi { } Future getAllUnsavedAnnotations() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getAllUnsavedAnnotations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getAllUnsavedAnnotations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -955,16 +895,13 @@ class PspdfkitApi { } Future updateAnnotation(String annotation) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.updateAnnotation$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.updateAnnotation$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([annotation]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([annotation]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -980,18 +917,14 @@ class PspdfkitApi { } } - Future processAnnotations(AnnotationType type, - AnnotationProcessingMode processingMode, String destinationPath) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.processAnnotations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future processAnnotations(AnnotationType type, AnnotationProcessingMode processingMode, String destinationPath) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.processAnnotations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel - .send([type, processingMode, destinationPath]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([type, processingMode, destinationPath]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1008,16 +941,13 @@ class PspdfkitApi { } Future importXfdf(String xfdfString) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.importXfdf$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.importXfdf$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([xfdfString]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([xfdfString]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1034,16 +964,13 @@ class PspdfkitApi { } Future exportXfdf(String xfdfPath) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.exportXfdf$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.exportXfdf$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([xfdfPath]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([xfdfPath]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1060,10 +987,8 @@ class PspdfkitApi { } Future save() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.save$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.save$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -1085,16 +1010,13 @@ class PspdfkitApi { } Future setDelayForSyncingLocalChanges(double delay) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setDelayForSyncingLocalChanges$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setDelayForSyncingLocalChanges$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([delay]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([delay]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1111,16 +1033,13 @@ class PspdfkitApi { } Future setListenToServerChanges(bool listen) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setListenToServerChanges$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setListenToServerChanges$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([listen]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([listen]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1137,10 +1056,8 @@ class PspdfkitApi { } Future syncAnnotations() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.syncAnnotations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.syncAnnotations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -1162,10 +1079,8 @@ class PspdfkitApi { } Future checkAndroidWriteExternalStoragePermission() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.checkAndroidWriteExternalStoragePermission$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.checkAndroidWriteExternalStoragePermission$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -1186,12 +1101,9 @@ class PspdfkitApi { } } - Future - requestAndroidWriteExternalStoragePermission() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.requestAndroidWriteExternalStoragePermission$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future requestAndroidWriteExternalStoragePermission() async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.requestAndroidWriteExternalStoragePermission$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -1218,10 +1130,8 @@ class PspdfkitApi { } Future openAndroidSettings() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.openAndroidSettings$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.openAndroidSettings$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -1242,18 +1152,14 @@ class PspdfkitApi { } } - Future setAnnotationPresetConfigurations( - Map configurations) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setAnnotationPresetConfigurations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future setAnnotationPresetConfigurations(Map configurations) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setAnnotationPresetConfigurations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([configurations]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([configurations]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1270,10 +1176,8 @@ class PspdfkitApi { } Future getTemporaryDirectory() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getTemporaryDirectory$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getTemporaryDirectory$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -1300,16 +1204,13 @@ class PspdfkitApi { } Future setAuthorName(String name) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setAuthorName$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.setAuthorName$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([name]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([name]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1326,10 +1227,8 @@ class PspdfkitApi { } Future getAuthorName() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getAuthorName$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.getAuthorName$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -1359,18 +1258,14 @@ class PspdfkitApi { /// [pages]: [NewPage]s to be added to the PDF. /// [outputPath]: The path to the output file. /// Returns the path to the generated PDF path or null if the input is invalid or if the PDF generation fails. - Future generatePdf( - List> pages, String outputPath) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.generatePdf$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future generatePdf(List> pages, String outputPath) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.generatePdf$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([pages, outputPath]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([pages, outputPath]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1391,18 +1286,14 @@ class PspdfkitApi { /// [html]: The HTML string to be converted to PDF. /// [outPutFile]: The path to the output file. /// Returns the path to the generated PDF file or null if the input is invalid or if the PDF generation fails. - Future generatePdfFromHtmlString( - String html, String outPutFile, Map? options) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.generatePdfFromHtmlString$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future generatePdfFromHtmlString(String html, String outPutFile, Map? options) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.generatePdfFromHtmlString$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([html, outPutFile, options]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([html, outPutFile, options]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1418,18 +1309,14 @@ class PspdfkitApi { } } - Future generatePdfFromHtmlUri( - String htmlUri, String outPutFile, Map? options) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.generatePdfFromHtmlUri$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future generatePdfFromHtmlUri(String htmlUri, String outPutFile, Map? options) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.generatePdfFromHtmlUri$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([htmlUri, outPutFile, options]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([htmlUri, outPutFile, options]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1447,16 +1334,13 @@ class PspdfkitApi { /// Configure Nutrient Analytics events. Future enableAnalyticsEvents(bool enable) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.enableAnalyticsEvents$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitApi.enableAnalyticsEvents$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([enable]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([enable]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1512,19 +1396,11 @@ abstract class PspdfkitFlutterApiCallbacks { /// Called when instant document download fails. void onInstantDownloadFailed(String documentId, String error); - static void setUp( - PspdfkitFlutterApiCallbacks? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + static void setUp(PspdfkitFlutterApiCallbacks? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onPdfActivityOnPause$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onPdfActivityOnPause$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); @@ -1535,19 +1411,15 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onPdfFragmentAdded$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onPdfFragmentAdded$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); @@ -1558,26 +1430,22 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onDocumentLoaded$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onDocumentLoaded$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onDocumentLoaded was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onDocumentLoaded was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -1587,19 +1455,15 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onPdfViewControllerWillDismiss$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onPdfViewControllerWillDismiss$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); @@ -1610,19 +1474,15 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onPdfViewControllerDidDismiss$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onPdfViewControllerDidDismiss$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); @@ -1633,26 +1493,22 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncStarted$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncStarted$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncStarted was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncStarted was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -1662,26 +1518,22 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncFinished$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncFinished$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncFinished was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncFinished was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -1691,26 +1543,22 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncFailed$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncFailed$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncFailed was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantSyncFailed was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -1723,26 +1571,22 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantAuthenticationFinished$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantAuthenticationFinished$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantAuthenticationFinished was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantAuthenticationFinished was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -1755,26 +1599,22 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantAuthenticationFailed$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantAuthenticationFailed$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantAuthenticationFailed was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantAuthenticationFailed was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -1787,26 +1627,22 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantDownloadFinished$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantDownloadFinished$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantDownloadFinished was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantDownloadFinished was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -1816,26 +1652,22 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantDownloadFailed$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantDownloadFailed$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantDownloadFailed was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitFlutterApiCallbacks.onInstantDownloadFailed was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -1848,9 +1680,8 @@ abstract class PspdfkitFlutterApiCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } @@ -1862,11 +1693,9 @@ class PspdfkitWidgetControllerApi { /// Constructor for [PspdfkitWidgetControllerApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - PspdfkitWidgetControllerApi( - {BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + PspdfkitWidgetControllerApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -1875,18 +1704,14 @@ class PspdfkitWidgetControllerApi { /// Sets the value of a form field by specifying its fully qualified field name. /// This method is deprecated. Use [PdfDocument.setFormFieldValue] instead. - Future setFormFieldValue( - String value, String fullyQualifiedName) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.setFormFieldValue$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future setFormFieldValue(String value, String fullyQualifiedName) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.setFormFieldValue$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([value, fullyQualifiedName]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([value, fullyQualifiedName]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1904,16 +1729,13 @@ class PspdfkitWidgetControllerApi { /// Gets the form field value by specifying its fully qualified name. Future getFormFieldValue(String fullyQualifiedName) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.getFormFieldValue$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.getFormFieldValue$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([fullyQualifiedName]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([fullyQualifiedName]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1931,16 +1753,13 @@ class PspdfkitWidgetControllerApi { /// Applies Instant document JSON to the presented document. Future applyInstantJson(String annotationsJson) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.applyInstantJson$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.applyInstantJson$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([annotationsJson]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([annotationsJson]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -1958,10 +1777,8 @@ class PspdfkitWidgetControllerApi { /// Exports Instant document JSON from the presented document. Future exportInstantJson() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.exportInstantJson$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.exportInstantJson$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -1985,16 +1802,13 @@ class PspdfkitWidgetControllerApi { /// Adds the given annotation to the presented document. /// `jsonAnnotation` can either be a JSON string or a valid JSON Dictionary (iOS) / HashMap (Android). Future addAnnotation(String annotation) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.addAnnotation$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.addAnnotation$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([annotation]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([annotation]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2013,16 +1827,13 @@ class PspdfkitWidgetControllerApi { /// Removes the given annotation from the presented document. /// `jsonAnnotation` can either be a JSON string or a valid JSON Dictionary (iOS) / HashMap (Android). Future removeAnnotation(String annotation) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.removeAnnotation$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.removeAnnotation$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([annotation]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([annotation]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2040,16 +1851,13 @@ class PspdfkitWidgetControllerApi { /// Returns a list of JSON dictionaries for all the annotations of the given `type` on the given `pageIndex`. Future getAnnotations(int pageIndex, String type) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.getAnnotations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.getAnnotations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([pageIndex, type]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([pageIndex, type]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2072,10 +1880,8 @@ class PspdfkitWidgetControllerApi { /// Returns a list of JSON dictionaries for all the unsaved annotations in the presented document. Future getAllUnsavedAnnotations() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.getAllUnsavedAnnotations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.getAllUnsavedAnnotations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -2103,18 +1909,14 @@ class PspdfkitWidgetControllerApi { /// Processes annotations of the given type with the provided processing /// mode and stores the PDF at the given destination path. - Future processAnnotations(AnnotationType type, - AnnotationProcessingMode processingMode, String destinationPath) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.processAnnotations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future processAnnotations(AnnotationType type, AnnotationProcessingMode processingMode, String destinationPath) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.processAnnotations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = pigeonVar_channel - .send([type, processingMode, destinationPath]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([type, processingMode, destinationPath]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2137,16 +1939,13 @@ class PspdfkitWidgetControllerApi { /// Imports annotations from the XFDF file at the given path. Future importXfdf(String xfdfString) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.importXfdf$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.importXfdf$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([xfdfString]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([xfdfString]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2169,16 +1968,13 @@ class PspdfkitWidgetControllerApi { /// Exports annotations to the XFDF file at the given path. Future exportXfdf(String xfdfPath) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.exportXfdf$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.exportXfdf$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([xfdfPath]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([xfdfPath]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2202,10 +1998,8 @@ class PspdfkitWidgetControllerApi { /// Saves the document back to its original location if it has been changed. /// If there were no changes to the document, the document file will not be modified. Future save() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.save$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.save$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -2235,18 +2029,14 @@ class PspdfkitWidgetControllerApi { /// @param configurations A map of annotation tools and their corresponding configurations. /// @param modifyAssociatedAnnotations Whether to modify the annotations associated with the old configuration. Only used for Android. /// @return True if the configurations were set successfully, false otherwise. - Future setAnnotationConfigurations( - Map> configurations) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.setAnnotationConfigurations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future setAnnotationConfigurations(Map> configurations) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.setAnnotationConfigurations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([configurations]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([configurations]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2266,16 +2056,13 @@ class PspdfkitWidgetControllerApi { /// pageIndex The index of the page. This is a zero-based index. /// Returns a [Future] that completes with the visible rect of the given page. Future getVisibleRect(int pageIndex) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.getVisibleRect$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.getVisibleRect$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([pageIndex]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([pageIndex]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2300,18 +2087,14 @@ class PspdfkitWidgetControllerApi { /// pageIndex The index of the page. This is a zero-based index. /// rect The rect to zoom to. /// Returns a [Future] that completes when the zoom operation is done. - Future zoomToRect( - int pageIndex, PdfRect rect, bool? animated, double? duration) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.zoomToRect$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future zoomToRect(int pageIndex, PdfRect rect, bool? animated, double? duration) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.zoomToRect$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([pageIndex, rect, animated, duration]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([pageIndex, rect, animated, duration]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2336,16 +2119,13 @@ class PspdfkitWidgetControllerApi { /// pageIndex The index of the page. This is a zero-based index. /// Returns a [Future] that completes with the zoom scale of the given page. Future getZoomScale(int pageIndex) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.getZoomScale$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.getZoomScale$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([pageIndex]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([pageIndex]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2367,16 +2147,13 @@ class PspdfkitWidgetControllerApi { } Future addEventListener(NutrientEvent event) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.addEventListener$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.addEventListener$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([event]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([event]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2393,16 +2170,13 @@ class PspdfkitWidgetControllerApi { } Future removeEventListener(NutrientEvent event) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.removeEventListener$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.removeEventListener$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([event]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([event]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2425,18 +2199,14 @@ class PspdfkitWidgetControllerApi { /// /// Returns a [Future] that completes with a boolean indicating whether /// entering annotation creation mode was successful. - Future enterAnnotationCreationMode( - AnnotationTool? annotationTool) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.enterAnnotationCreationMode$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future enterAnnotationCreationMode(AnnotationTool? annotationTool) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.enterAnnotationCreationMode$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([annotationTool]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([annotationTool]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2457,10 +2227,8 @@ class PspdfkitWidgetControllerApi { /// Returns a [Future] that completes with a boolean indicating whether /// exiting annotation creation mode was successful. Future exitAnnotationCreationMode() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.exitAnnotationCreationMode$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetControllerApi.exitAnnotationCreationMode$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -2486,11 +2254,9 @@ class PdfDocumentApi { /// Constructor for [PdfDocumentApi]. The [binaryMessenger] named argument is /// available for dependency injection. If it is left null, the default /// BinaryMessenger will be used which routes to the host platform. - PdfDocumentApi( - {BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) + PdfDocumentApi({BinaryMessenger? binaryMessenger, String messageChannelSuffix = ''}) : pigeonVar_binaryMessenger = binaryMessenger, - pigeonVar_messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + pigeonVar_messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; final BinaryMessenger? pigeonVar_binaryMessenger; static const MessageCodec pigeonChannelCodec = _PigeonCodec(); @@ -2500,16 +2266,13 @@ class PdfDocumentApi { /// Returns the page info for the given page index. /// pageIndex The index of the page. This is a zero-based index. Future getPageInfo(int pageIndex) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getPageInfo$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getPageInfo$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([pageIndex]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([pageIndex]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2534,16 +2297,13 @@ class PdfDocumentApi { /// options:[DocumentSaveOptions] The options to use when exporting the document. /// Returns a [Uint8List] containing the exported PDF data. Future exportPdf(DocumentSaveOptions? options) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.exportPdf$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.exportPdf$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([options]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([options]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2565,16 +2325,13 @@ class PdfDocumentApi { } Future> getFormField(String fieldName) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getFormField$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getFormField$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([fieldName]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([fieldName]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2591,17 +2348,14 @@ class PdfDocumentApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (pigeonVar_replyList[0] as Map?)! - .cast(); + return (pigeonVar_replyList[0] as Map?)!.cast(); } } /// Returns a list of all form fields in the document. Future>> getFormFields() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getFormFields$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getFormFields$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -2623,24 +2377,19 @@ class PdfDocumentApi { message: 'Host platform returned null value for non-null return value.', ); } else { - return (pigeonVar_replyList[0] as List?)! - .cast>(); + return (pigeonVar_replyList[0] as List?)!.cast>(); } } /// Sets the value of a form field by specifying its fully qualified field name. - Future setFormFieldValue( - String value, String fullyQualifiedName) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.setFormFieldValue$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + Future setFormFieldValue(String value, String fullyQualifiedName) async { + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.setFormFieldValue$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([value, fullyQualifiedName]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([value, fullyQualifiedName]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2658,16 +2407,13 @@ class PdfDocumentApi { /// Gets the form field value by specifying its fully qualified name. Future getFormFieldValue(String fullyQualifiedName) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getFormFieldValue$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getFormFieldValue$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([fullyQualifiedName]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([fullyQualifiedName]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2685,16 +2431,13 @@ class PdfDocumentApi { /// Applies Instant document JSON to the presented document. Future applyInstantJson(String annotationsJson) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.applyInstantJson$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.applyInstantJson$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([annotationsJson]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([annotationsJson]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2712,10 +2455,8 @@ class PdfDocumentApi { /// Exports Instant document JSON from the presented document. Future exportInstantJson() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.exportInstantJson$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.exportInstantJson$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -2739,16 +2480,13 @@ class PdfDocumentApi { /// Adds the given annotation to the presented document. /// `jsonAnnotation` can either be a JSON string or a valid JSON Dictionary (iOS) / HashMap (Android). Future addAnnotation(String jsonAnnotation, Object? attachment) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.addAnnotation$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.addAnnotation$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([jsonAnnotation, attachment]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([jsonAnnotation, attachment]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2767,16 +2505,13 @@ class PdfDocumentApi { /// Updates the given annotation in the presented document. /// `jsonAnnotation` can either be a JSON string or a valid JSON Dictionary (iOS) / HashMap (Android). Future updateAnnotation(String jsonAnnotation) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.updateAnnotation$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.updateAnnotation$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([jsonAnnotation]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([jsonAnnotation]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2795,16 +2530,13 @@ class PdfDocumentApi { /// Removes the given annotation from the presented document. /// `jsonAnnotation` can either be a JSON string or a valid JSON Dictionary (iOS) / HashMap (Android). Future removeAnnotation(String jsonAnnotation) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.removeAnnotation$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.removeAnnotation$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([jsonAnnotation]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([jsonAnnotation]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2822,16 +2554,13 @@ class PdfDocumentApi { /// Returns a list of JSON dictionaries for all the annotations of the given `type` on the given `pageIndex`. Future getAnnotations(int pageIndex, String type) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getAnnotations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getAnnotations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([pageIndex, type]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([pageIndex, type]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2854,10 +2583,8 @@ class PdfDocumentApi { /// Returns a list of JSON dictionaries for all the unsaved annotations in the presented document. Future getAllUnsavedAnnotations() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getAllUnsavedAnnotations$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getAllUnsavedAnnotations$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -2885,16 +2612,13 @@ class PdfDocumentApi { /// Imports annotations from the XFDF file at the given path. Future importXfdf(String xfdfString) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.importXfdf$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.importXfdf$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([xfdfString]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([xfdfString]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2917,16 +2641,13 @@ class PdfDocumentApi { /// Exports annotations to the XFDF file at the given path. Future exportXfdf(String xfdfPath) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.exportXfdf$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.exportXfdf$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([xfdfPath]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([xfdfPath]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2950,16 +2671,13 @@ class PdfDocumentApi { /// Saves the document back to its original location if it has been changed. /// If there were no changes to the document, the document file will not be modified. Future save(String? outputPath, DocumentSaveOptions? options) async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.save$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.save$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, ); - final Future pigeonVar_sendFuture = - pigeonVar_channel.send([outputPath, options]); + final Future pigeonVar_sendFuture = pigeonVar_channel.send([outputPath, options]); final List? pigeonVar_replyList = await pigeonVar_sendFuture as List?; if (pigeonVar_replyList == null) { @@ -2982,10 +2700,8 @@ class PdfDocumentApi { /// Get the total number of pages in the document. Future getPageCount() async { - final String pigeonVar_channelName = - 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getPageCount$pigeonVar_messageChannelSuffix'; - final BasicMessageChannel pigeonVar_channel = - BasicMessageChannel( + final String pigeonVar_channelName = 'dev.flutter.pigeon.pspdfkit_flutter.PdfDocumentApi.getPageCount$pigeonVar_messageChannelSuffix'; + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( pigeonVar_channelName, pigeonChannelCodec, binaryMessenger: pigeonVar_binaryMessenger, @@ -3021,31 +2737,22 @@ abstract class PspdfkitWidgetCallbacks { void onPageChanged(String documentId, int pageIndex); - void onPageClick( - String documentId, int pageIndex, PointF? point, Object? annotation); + void onPageClick(String documentId, int pageIndex, PointF? point, Object? annotation); void onDocumentSaved(String documentId, String? path); - static void setUp( - PspdfkitWidgetCallbacks? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + static void setUp(PspdfkitWidgetCallbacks? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentLoaded$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentLoaded$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentLoaded was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentLoaded was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -3055,26 +2762,22 @@ abstract class PspdfkitWidgetCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentError$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentError$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentError was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentError was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -3087,26 +2790,22 @@ abstract class PspdfkitWidgetCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onPageChanged$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onPageChanged$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onPageChanged was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onPageChanged was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -3119,26 +2818,22 @@ abstract class PspdfkitWidgetCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onPageClick$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onPageClick$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onPageClick was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onPageClick was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -3147,33 +2842,28 @@ abstract class PspdfkitWidgetCallbacks { assert(arg_pageIndex != null, 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onPageClick was null, expected non-null int.'); final PointF? arg_point = (args[2] as PointF?); - final Object? arg_annotation = args[3]; + final Object? arg_annotation = (args[3] as Object?); try { - api.onPageClick( - arg_documentId!, arg_pageIndex!, arg_point, arg_annotation); + api.onPageClick(arg_documentId!, arg_pageIndex!, arg_point, arg_annotation); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } } { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentSaved$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentSaved$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentSaved was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.PspdfkitWidgetCallbacks.onDocumentSaved was null.'); final List args = (message as List?)!; final String? arg_documentId = (args[0] as String?); assert(arg_documentId != null, @@ -3184,9 +2874,8 @@ abstract class PspdfkitWidgetCallbacks { return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } @@ -3199,39 +2888,30 @@ abstract class NutrientEventsCallbacks { void onEvent(NutrientEvent event, Object? data); - static void setUp( - NutrientEventsCallbacks? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + static void setUp(NutrientEventsCallbacks? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.NutrientEventsCallbacks.onEvent$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.NutrientEventsCallbacks.onEvent$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.NutrientEventsCallbacks.onEvent was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.NutrientEventsCallbacks.onEvent was null.'); final List args = (message as List?)!; final NutrientEvent? arg_event = (args[0] as NutrientEvent?); assert(arg_event != null, 'Argument for dev.flutter.pigeon.pspdfkit_flutter.NutrientEventsCallbacks.onEvent was null, expected non-null NutrientEvent.'); - final Object? arg_data = args[1]; + final Object? arg_data = (args[1] as Object?); try { api.onEvent(arg_event!, arg_data); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } @@ -3244,40 +2924,67 @@ abstract class AnalyticsEventsCallback { void onEvent(String event, Map? attributes); - static void setUp( - AnalyticsEventsCallback? api, { - BinaryMessenger? binaryMessenger, - String messageChannelSuffix = '', - }) { - messageChannelSuffix = - messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + static void setUp(AnalyticsEventsCallback? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; { - final BasicMessageChannel< - Object?> pigeonVar_channel = BasicMessageChannel< - Object?>( - 'dev.flutter.pigeon.pspdfkit_flutter.AnalyticsEventsCallback.onEvent$messageChannelSuffix', - pigeonChannelCodec, + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.AnalyticsEventsCallback.onEvent$messageChannelSuffix', pigeonChannelCodec, binaryMessenger: binaryMessenger); if (api == null) { pigeonVar_channel.setMessageHandler(null); } else { pigeonVar_channel.setMessageHandler((Object? message) async { assert(message != null, - 'Argument for dev.flutter.pigeon.pspdfkit_flutter.AnalyticsEventsCallback.onEvent was null.'); + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.AnalyticsEventsCallback.onEvent was null.'); final List args = (message as List?)!; final String? arg_event = (args[0] as String?); assert(arg_event != null, 'Argument for dev.flutter.pigeon.pspdfkit_flutter.AnalyticsEventsCallback.onEvent was null, expected non-null String.'); - final Map? arg_attributes = - (args[1] as Map?)?.cast(); + final Map? arg_attributes = (args[1] as Map?)?.cast(); try { api.onEvent(arg_event!, arg_attributes); return wrapResponse(empty: true); } on PlatformException catch (e) { return wrapResponse(error: e); - } catch (e) { - return wrapResponse( - error: PlatformException(code: 'error', message: e.toString())); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); + } + }); + } + } + } +} + +/// Callbacks for custom toolbar item interactions +abstract class CustomToolbarCallbacks { + static const MessageCodec pigeonChannelCodec = _PigeonCodec(); + + /// Called when a custom toolbar item is tapped + void onCustomToolbarItemTapped(String identifier); + + static void setUp(CustomToolbarCallbacks? api, {BinaryMessenger? binaryMessenger, String messageChannelSuffix = '',}) { + messageChannelSuffix = messageChannelSuffix.isNotEmpty ? '.$messageChannelSuffix' : ''; + { + final BasicMessageChannel pigeonVar_channel = BasicMessageChannel( + 'dev.flutter.pigeon.pspdfkit_flutter.CustomToolbarCallbacks.onCustomToolbarItemTapped$messageChannelSuffix', pigeonChannelCodec, + binaryMessenger: binaryMessenger); + if (api == null) { + pigeonVar_channel.setMessageHandler(null); + } else { + pigeonVar_channel.setMessageHandler((Object? message) async { + assert(message != null, + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.CustomToolbarCallbacks.onCustomToolbarItemTapped was null.'); + final List args = (message as List?)!; + final String? arg_identifier = (args[0] as String?); + assert(arg_identifier != null, + 'Argument for dev.flutter.pigeon.pspdfkit_flutter.CustomToolbarCallbacks.onCustomToolbarItemTapped was null, expected non-null String.'); + try { + api.onCustomToolbarItemTapped(arg_identifier!); + return wrapResponse(empty: true); + } on PlatformException catch (e) { + return wrapResponse(error: e); + } catch (e) { + return wrapResponse(error: PlatformException(code: 'error', message: e.toString())); } }); } diff --git a/lib/src/toolbar/custom_toolbar_item.dart b/lib/src/toolbar/custom_toolbar_item.dart new file mode 100644 index 0000000..b39b3ad --- /dev/null +++ b/lib/src/toolbar/custom_toolbar_item.dart @@ -0,0 +1,63 @@ +/// +/// Copyright © 2018-2025 PSPDFKit GmbH. 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 PSPDFKIT LICENSE AGREEMENT. +/// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES. +/// This notice may not be removed from this file. +/// + +/// Represents a custom toolbar item for PSPDFKit. +class CustomToolbarItem { + /// The identifier for the toolbar item. Must be unique. + final String identifier; + + /// The title for the toolbar item. Displayed in the overflow menu. + final String title; + + /// Icon name for Android (resource name in drawable) or iOS (SF Symbol name). + final String? iconName; + + /// Optional color for the toolbar item icon. Will be applied based on platform capabilities. + final String? iconColor; + + /// Optional grouped position of the toolbar item. + /// For iOS, this corresponds to the position in the navigation bar. + /// For Android, this is used to determine positioning in the toolbar. + final ToolbarPosition position; + + /// Constructor for CustomToolbarItem. + CustomToolbarItem({ + required this.identifier, + required this.title, + this.iconName, + this.iconColor, + this.position = ToolbarPosition.primary, + }); + + /// Convert to a map for platform channel communication. + Map toMap() { + return { + 'identifier': identifier, + 'title': title, + 'iconName': iconName, + 'iconColor': iconColor, + 'position': position.name, + }; + } +} + +/// Defines the position of toolbar items. +enum ToolbarPosition { + /// Primary position, typically visible in the main toolbar. + primary, + + /// Secondary position, may be in overflow menu. + secondary, + + /// For iOS, represents the navigation bar left (leading) position. + iosLeft, + + /// For iOS, represents the navigation bar right (trailing) position. + iosRight, +} diff --git a/lib/src/types.dart b/lib/src/types.dart index f568d44..697693a 100644 --- a/lib/src/types.dart +++ b/lib/src/types.dart @@ -260,6 +260,8 @@ typedef PageClickedCallback = void Function( typedef PdfDocumentSavedCallback = void Function( String documentId, String? path); +typedef OnCustomToolbarItemTappedCallback = void Function(String identifier); + extension WebShowSignatureValidationStatusMode on ShowSignatureValidationStatusMode { String? get webName { diff --git a/lib/src/widgets/pspdfkit_flutter_widget_controller_impl.dart b/lib/src/widgets/pspdfkit_flutter_widget_controller_impl.dart index 4f2757a..d2fa884 100644 --- a/lib/src/widgets/pspdfkit_flutter_widget_controller_impl.dart +++ b/lib/src/widgets/pspdfkit_flutter_widget_controller_impl.dart @@ -9,13 +9,15 @@ class PspdfkitFlutterWidgetControllerImpl implements PspdfkitWidgetController, PspdfkitWidgetCallbacks, - NutrientEventsCallbacks { + NutrientEventsCallbacks, + CustomToolbarCallbacks { final PspdfkitWidgetControllerApi _pspdfkitWidgetControllerApi; final PdfDocumentLoadedCallback? onPdfDocumentLoaded; final PdfDocumentLoadFailedCallback? onPdfDocumentLoadFailed; final PageChangedCallback? onPdfPageChanged; final PdfDocumentSavedCallback? onPdfDocumentSaved; final PageClickedCallback? onPageClicked; + final OnCustomToolbarItemTappedCallback? onCustomToolbarItemTappedListener; final Map _eventListeners = {}; PspdfkitFlutterWidgetControllerImpl( @@ -24,6 +26,7 @@ class PspdfkitFlutterWidgetControllerImpl this.onPdfDocumentLoadFailed, this.onPdfPageChanged, this.onPdfDocumentSaved, + this.onCustomToolbarItemTappedListener, this.onPageClicked, }); @@ -291,4 +294,9 @@ class PspdfkitFlutterWidgetControllerImpl void onDocumentSaved(String documentId, String? path) { onPdfDocumentSaved?.call(documentId, path); } + + @override + void onCustomToolbarItemTapped(String identifier) { + onCustomToolbarItemTappedListener?.call(identifier); + } } diff --git a/lib/src/widgets/pspdfkit_widget.dart b/lib/src/widgets/pspdfkit_widget.dart index efa8a68..a868903 100644 --- a/lib/src/widgets/pspdfkit_widget.dart +++ b/lib/src/widgets/pspdfkit_widget.dart @@ -22,12 +22,14 @@ import 'pspdfkit_widget_controller_native.dart'; class PspdfkitWidget extends StatefulWidget { final String documentPath; final dynamic configuration; + final List customToolbarItems; final PspdfkitWidgetCreatedCallback? onPspdfkitWidgetCreated; final PdfDocumentLoadedCallback? onPdfDocumentLoaded; final PdfDocumentLoadFailedCallback? onPdfDocumentError; final PageChangedCallback? onPageChanged; final PageClickedCallback? onPageClicked; final PdfDocumentSavedCallback? onPdfDocumentSaved; + final OnCustomToolbarItemTappedCallback? onCustomToolbarItemTapped; const PspdfkitWidget({ Key? key, required this.documentPath, @@ -38,6 +40,8 @@ class PspdfkitWidget extends StatefulWidget { this.onPageChanged, this.onPageClicked, this.onPdfDocumentSaved, + this.onCustomToolbarItemTapped, + this.customToolbarItems = const [], }) : super(key: key); @override @@ -74,6 +78,8 @@ class _PspdfkitWidgetState extends State { final Map creationParams = { 'document': widget.documentPath, 'configuration': config ?? {}, + 'customToolbarItems': + widget.customToolbarItems.map((item) => item.toMap()).toList(), }; if (defaultTargetPlatform == TargetPlatform.iOS) { @@ -131,6 +137,7 @@ class _PspdfkitWidgetState extends State { ? PspdfkitWidgetControllerNative( channel, onPageChanged: widget.onPageChanged, + onCustomToolbarItemTapped: widget.onCustomToolbarItemTapped, onPdfDocumentLoadFailed: widget.onPdfDocumentError, onPdfDocumentLoaded: widget.onPdfDocumentLoaded, ) @@ -150,6 +157,10 @@ class _PspdfkitWidgetState extends State { NutrientEventsCallbacks.setUp( controller as PspdfkitFlutterWidgetControllerImpl, messageChannelSuffix: 'events.callbacks.$id'); + + CustomToolbarCallbacks.setUp( + controller as PspdfkitFlutterWidgetControllerImpl, + messageChannelSuffix: 'custom-toolbar.callbacks.$id'); } } diff --git a/lib/src/widgets/pspdfkit_widget_controller_native.dart b/lib/src/widgets/pspdfkit_widget_controller_native.dart index a7f10b4..8c86999 100644 --- a/lib/src/widgets/pspdfkit_widget_controller_native.dart +++ b/lib/src/widgets/pspdfkit_widget_controller_native.dart @@ -20,7 +20,8 @@ class PspdfkitWidgetControllerNative extends PspdfkitWidgetController { PspdfkitWidgetControllerNative(this._channel, {PdfDocumentLoadedCallback? onPdfDocumentLoaded, PdfDocumentLoadFailedCallback? onPdfDocumentLoadFailed, - PageChangedCallback? onPageChanged}) { + PageChangedCallback? onPageChanged, + OnCustomToolbarItemTappedCallback? onCustomToolbarItemTapped}) { _channel.setMethodCallHandler((call) async { switch (call.method) { case 'onDocumentLoaded': diff --git a/pigeons/pspdfkit.dart b/pigeons/pspdfkit.dart index ee2307f..39b8635 100644 --- a/pigeons/pspdfkit.dart +++ b/pigeons/pspdfkit.dart @@ -708,3 +708,10 @@ enum NutrientEvent { abstract class AnalyticsEventsCallback { void onEvent(String event, Map? attributes); } + +/// Callbacks for custom toolbar item interactions +@FlutterApi() +abstract class CustomToolbarCallbacks { + /// Called when a custom toolbar item is tapped + void onCustomToolbarItemTapped(String identifier); +} From 184c2e1fef044b9a8667a11d186d95077473f186 Mon Sep 17 00:00:00 2001 From: Julius Kato Mutumba Date: Wed, 12 Mar 2025 14:24:26 +0300 Subject: [PATCH 2/5] custom menu items --- .../flutter/pspdfkit/FlutterPdfUiFragment.kt | 8 ++- .../pspdfkit/flutter/pspdfkit/PSPDFKitView.kt | 7 +-- .../lib/pspdfkit_toolbar_customization.dart | 49 +++++++++++++++---- lib/src/widgets/pspdfkit_widget.dart | 5 +- 4 files changed, 51 insertions(+), 18 deletions(-) diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt index 644daaa..80c619e 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt @@ -87,10 +87,10 @@ class FlutterPdfUiFragment : PdfUiFragment() { val matchingIdentifier = customToolbarItemIds.entries.find { it.value == item.itemId }?.key if (matchingIdentifier != null) { // Notify Flutter about the tap - customToolbarCallbacks?.onCustomToolbarItemTapped(matchingIdentifier) + customToolbarCallbacks?.onCustomToolbarItemTapped(matchingIdentifier){ + } return true } - return super.onOptionsItemSelected(item) } @@ -114,8 +114,7 @@ class FlutterPdfUiFragment : PdfUiFragment() { */ private fun addCustomToolbarItems(items: List>) { if (items.isEmpty()) return - - val activity = activity ?: return + val activity = requireActivity() for (itemConfig in items) { val identifier = itemConfig["identifier"] as? String ?: continue @@ -146,7 +145,6 @@ class FlutterPdfUiFragment : PdfUiFragment() { // Invalid color format, use default } } - customToolbarItemDrawables[identifier] = drawable } } diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt index 5da9972..0e5d35a 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt @@ -44,6 +44,7 @@ import com.pspdfkit.forms.ChoiceFormElement import com.pspdfkit.forms.EditableButtonFormElement import com.pspdfkit.forms.SignatureFormElement import com.pspdfkit.forms.TextFormElement +import com.pspdfkit.ui.PdfFragment import com.pspdfkit.ui.PdfUiFragment import com.pspdfkit.ui.PdfUiFragmentBuilder import io.flutter.plugin.common.BinaryMessenger @@ -76,7 +77,7 @@ internal class PSPDFKitView( private val pspdfkitViewImpl: PspdfkitViewImpl = PspdfkitViewImpl() private val nutrientEventsCallbacks: NutrientEventsCallbacks = NutrientEventsCallbacks(messenger, "events.callbacks.$id") private val widgetCallbacks: PspdfkitWidgetCallbacks = PspdfkitWidgetCallbacks(messenger, "widget.callbacks.$id") - private val customToolbarCallbacks: CustomToolbarCallbacks? = null + private val customToolbarCallbacks: CustomToolbarCallbacks = CustomToolbarCallbacks(messenger, "customToolbar.callbacks.$id") init { fragmentContainerView?.id = View.generateViewId() @@ -131,8 +132,8 @@ internal class PSPDFKitView( } // Process custom toolbar items - if (customToolbarItems.isNotEmpty() && f is FlutterPdfUiFragment && customToolbarCallbacks != null) { - f.setCustomToolbarItems(customToolbarItems, customToolbarCallbacks) + if (customToolbarItems.isNotEmpty() && f is PdfFragment) { + (pdfUiFragment as FlutterPdfUiFragment).setCustomToolbarItems(customToolbarItems, customToolbarCallbacks) } } } diff --git a/example/lib/pspdfkit_toolbar_customization.dart b/example/lib/pspdfkit_toolbar_customization.dart index 7c94501..32bc4ad 100644 --- a/example/lib/pspdfkit_toolbar_customization.dart +++ b/example/lib/pspdfkit_toolbar_customization.dart @@ -13,11 +13,21 @@ import 'package:flutter/material.dart'; import 'package:pspdfkit_flutter/pspdfkit.dart'; import 'utils/platform_utils.dart'; -class PspdfkitToolbarCustomization extends StatelessWidget { +class PspdfkitToolbarCustomization extends StatefulWidget { final String documentPath; const PspdfkitToolbarCustomization({super.key, required this.documentPath}); + @override + State createState() => + _PspdfkitToolbarCustomizationState(); +} + +class _PspdfkitToolbarCustomizationState + extends State { + PspdfkitWidgetController? _pspdfkitWidgetController; + PdfDocument? _pdfDocument; + @override Widget build(BuildContext context) { // Get the default web toolbar items. @@ -42,26 +52,47 @@ class PspdfkitToolbarCustomization extends StatelessWidget { child: PspdfkitWidget( customToolbarItems: [ CustomToolbarItem( - title: 'Custom ToolbarItem', + title: 'Save', identifier: 'custom-toolbar-item', iconColor: "#000000", iconName: "toolbar_item", ), CustomToolbarItem( - title: 'Custom ToolbarItem 2', + title: 'Signature', identifier: 'custom-toolbar-item-2', iconColor: "#000000", iconName: "toolbar_item", ), ], onCustomToolbarItemTapped: (identifier) { - ScaffoldMessenger.of(context).showSnackBar( - const SnackBar( - content: Text('Hello from custom button!'), - ), - ); + switch (identifier) { + case 'custom-toolbar-item': + { + _pdfDocument?.save(); + ScaffoldMessenger.of(context) + .showSnackBar(const SnackBar( + content: Text('Document saved'), + )); + } + break; + case 'custom-toolbar-item-2': + _pspdfkitWidgetController + ?.enterAnnotationCreationMode( + AnnotationTool.signature); + break; + } + }, + documentPath: widget.documentPath, + onPdfDocumentLoaded: (document) { + setState(() { + _pdfDocument = document; + }); + }, + onPspdfkitWidgetCreated: (view) { + setState(() { + _pspdfkitWidgetController = view; + }); }, - documentPath: documentPath, configuration: PdfConfiguration( androidShowAnnotationListAction: false, androidShowSearchAction: false, diff --git a/lib/src/widgets/pspdfkit_widget.dart b/lib/src/widgets/pspdfkit_widget.dart index a868903..ca9dcaf 100644 --- a/lib/src/widgets/pspdfkit_widget.dart +++ b/lib/src/widgets/pspdfkit_widget.dart @@ -148,6 +148,7 @@ class _PspdfkitWidgetState extends State { onPdfDocumentLoaded: widget.onPdfDocumentLoaded, onPageClicked: widget.onPageClicked, onPdfDocumentSaved: widget.onPdfDocumentSaved, + onCustomToolbarItemTappedListener: widget.onCustomToolbarItemTapped, ); widget.onPspdfkitWidgetCreated?.call(controller); if (controller is PspdfkitFlutterWidgetControllerImpl) { @@ -160,7 +161,7 @@ class _PspdfkitWidgetState extends State { CustomToolbarCallbacks.setUp( controller as PspdfkitFlutterWidgetControllerImpl, - messageChannelSuffix: 'custom-toolbar.callbacks.$id'); + messageChannelSuffix: 'customToolbar.callbacks.$id'); } } @@ -170,6 +171,8 @@ class _PspdfkitWidgetState extends State { messageChannelSuffix: 'widget.callbacks.$_id'); NutrientEventsCallbacks.setUp(null, messageChannelSuffix: 'events.callbacks.$_id'); + CustomToolbarCallbacks.setUp(null, + messageChannelSuffix: 'customToolbar.callbacks.$_id'); super.dispose(); } } From 65689d7a2531b751bdd987c7b7d7bee668dc5e26 Mon Sep 17 00:00:00 2001 From: Julius Kato Mutumba Date: Wed, 12 Mar 2025 17:27:17 +0300 Subject: [PATCH 3/5] ios --- example/lib/examples.dart | 11 ++ ...nutrient_custom_toolbar_items_example.dart | 102 ++++++++++++++++++ .../lib/pspdfkit_toolbar_customization.dart | 56 +--------- ios/Classes/CustomeToolbarHelper.swift | 96 +++++++++++++++++ ios/Classes/PspdfPlatformView.m | 6 +- ios/Classes/PspdfkitPlatformViewImpl.swift | 8 +- 6 files changed, 223 insertions(+), 56 deletions(-) create mode 100644 example/lib/nutrient_custom_toolbar_items_example.dart create mode 100644 ios/Classes/CustomeToolbarHelper.swift diff --git a/example/lib/examples.dart b/example/lib/examples.dart index b8fd518..0ca9dd6 100644 --- a/example/lib/examples.dart +++ b/example/lib/examples.dart @@ -17,6 +17,7 @@ import 'package:pspdfkit_example/models/papsdkit_example_item.dart'; import 'package:pspdfkit_example/pspdfkit_toolbar_customization.dart'; import 'instant_collaboration_web.dart'; +import 'nutrient_custom_toolbar_items_example.dart'; import 'pspdfkit_annotation_preset_customisation.dart'; import 'pspdfkit_document_example.dart'; import 'pspdfkit_event_listeners_example.dart'; @@ -189,6 +190,16 @@ List examples(BuildContext context) => [ ), context)); }), + PspdfkitExampleItem( + title: 'Custom Toolbar Items', + description: 'Shows how to add custom toolbar items to PDF view.', + onTap: () async { + await extractAsset(context, _documentPath).then((value) => goTo( + NutrientCustomToolbarItemsExample( + documentPath: value.path, + ), + context)); + }), if (kIsWeb) PspdfkitExampleItem( title: 'Instant collaboration Web', diff --git a/example/lib/nutrient_custom_toolbar_items_example.dart b/example/lib/nutrient_custom_toolbar_items_example.dart new file mode 100644 index 0000000..669ab6f --- /dev/null +++ b/example/lib/nutrient_custom_toolbar_items_example.dart @@ -0,0 +1,102 @@ +import 'package:flutter/material.dart'; + +import 'package:pspdfkit_flutter/pspdfkit.dart'; +import 'utils/platform_utils.dart'; + +class NutrientCustomToolbarItemsExample extends StatefulWidget { + final String documentPath; + + const NutrientCustomToolbarItemsExample( + {super.key, required this.documentPath}); + + @override + State createState() => + _NutrientCustomToolbarItemsExampleState(); +} + +class _NutrientCustomToolbarItemsExampleState + extends State { + PspdfkitWidgetController? _pspdfkitWidgetController; + PdfDocument? _pdfDocument; + + @override + Widget build(BuildContext context) { + return Scaffold( + extendBodyBehindAppBar: PlatformUtils.isAndroid(), + // Do not resize the the document view on Android or + // it won't be rendered correctly when filling forms. + resizeToAvoidBottomInset: PlatformUtils.isIOS(), + appBar: AppBar( + title: const Text('Custom Toolbar Items'), + ), + body: SafeArea( + top: false, + bottom: false, + child: Container( + padding: PlatformUtils.isAndroid() + ? const EdgeInsets.only(top: kToolbarHeight) + : null, + child: PspdfkitWidget( + customToolbarItems: [ + CustomToolbarItem( + title: 'Save', + identifier: 'custom-toolbar-item', + iconColor: "#000000", + iconName: "toolbar_item", + ), + CustomToolbarItem( + title: 'Signature', + identifier: 'custom-toolbar-item-2', + iconColor: "#000000", + iconName: "toolbar_item", + ), + CustomToolbarItem( + identifier: 'custom-toolbar-item-3', + title: 'Pen', + iconColor: "#000000", + iconName: "toolbar_item", + ), + ], + onCustomToolbarItemTapped: (identifier) { + switch (identifier) { + case 'custom-toolbar-item': + { + _pdfDocument?.save(); + ScaffoldMessenger.of(context) + .showSnackBar(const SnackBar( + content: Text('Document saved'), + )); + } + break; + case 'custom-toolbar-item-2': + _pspdfkitWidgetController + ?.enterAnnotationCreationMode( + AnnotationTool.signature); + break; + case 'custom-toolbar-item-3': + _pspdfkitWidgetController + ?.enterAnnotationCreationMode( + AnnotationTool.inkPen); + break; + } + }, + documentPath: widget.documentPath, + onPdfDocumentLoaded: (document) { + setState(() { + _pdfDocument = document; + }); + }, + onPspdfkitWidgetCreated: (view) { + setState(() { + _pspdfkitWidgetController = view; + }); + }, + configuration: PdfConfiguration( + androidShowAnnotationListAction: false, + androidShowSearchAction: false, + androidShowShareAction: false, + androidShowDocumentInfoView: false, + androidShowThumbnailGridAction: false, + androidShowPrintAction: false))))); + } +} diff --git a/example/lib/pspdfkit_toolbar_customization.dart b/example/lib/pspdfkit_toolbar_customization.dart index 32bc4ad..4e8dd00 100644 --- a/example/lib/pspdfkit_toolbar_customization.dart +++ b/example/lib/pspdfkit_toolbar_customization.dart @@ -13,21 +13,11 @@ import 'package:flutter/material.dart'; import 'package:pspdfkit_flutter/pspdfkit.dart'; import 'utils/platform_utils.dart'; -class PspdfkitToolbarCustomization extends StatefulWidget { +class PspdfkitToolbarCustomization extends StatelessWidget { final String documentPath; const PspdfkitToolbarCustomization({super.key, required this.documentPath}); - @override - State createState() => - _PspdfkitToolbarCustomizationState(); -} - -class _PspdfkitToolbarCustomizationState - extends State { - PspdfkitWidgetController? _pspdfkitWidgetController; - PdfDocument? _pdfDocument; - @override Widget build(BuildContext context) { // Get the default web toolbar items. @@ -50,49 +40,7 @@ class _PspdfkitToolbarCustomizationState ? const EdgeInsets.only(top: kToolbarHeight) : null, child: PspdfkitWidget( - customToolbarItems: [ - CustomToolbarItem( - title: 'Save', - identifier: 'custom-toolbar-item', - iconColor: "#000000", - iconName: "toolbar_item", - ), - CustomToolbarItem( - title: 'Signature', - identifier: 'custom-toolbar-item-2', - iconColor: "#000000", - iconName: "toolbar_item", - ), - ], - onCustomToolbarItemTapped: (identifier) { - switch (identifier) { - case 'custom-toolbar-item': - { - _pdfDocument?.save(); - ScaffoldMessenger.of(context) - .showSnackBar(const SnackBar( - content: Text('Document saved'), - )); - } - break; - case 'custom-toolbar-item-2': - _pspdfkitWidgetController - ?.enterAnnotationCreationMode( - AnnotationTool.signature); - break; - } - }, - documentPath: widget.documentPath, - onPdfDocumentLoaded: (document) { - setState(() { - _pdfDocument = document; - }); - }, - onPspdfkitWidgetCreated: (view) { - setState(() { - _pspdfkitWidgetController = view; - }); - }, + documentPath: documentPath, configuration: PdfConfiguration( androidShowAnnotationListAction: false, androidShowSearchAction: false, diff --git a/ios/Classes/CustomeToolbarHelper.swift b/ios/Classes/CustomeToolbarHelper.swift new file mode 100644 index 0000000..416ff16 --- /dev/null +++ b/ios/Classes/CustomeToolbarHelper.swift @@ -0,0 +1,96 @@ +// +// Copyright © 2024-2025 PSPDFKit GmbH. 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 PSPDFKIT LICENSE AGREEMENT. +// UNAUTHORIZED REPRODUCTION OR DISTRIBUTION IS SUBJECT TO CIVIL AND CRIMINAL PENALTIES. +// This notice may not be removed from this file. +// + +import Foundation +import PSPDFKit + +@objc class CustomToolbarHelper: NSObject { + private static var customToolbarItems = [String: UIBarButtonItem]() + private static weak var callbacksRef: CustomToolbarCallbacks? + + /// Sets up custom toolbar items in the PDF view controller + /// - Parameters: + /// - pdfViewController: The PDF view controller + /// - customToolbarItems: Array of custom toolbar items + /// - callbacks: The callbacks instance to notify when a custom toolbar item is tapped + static func setupCustomToolbarItems(for pdfViewController: PDFViewController, customToolbarItems: [[String: Any]], callbacks: CustomToolbarCallbacks?) { + guard !customToolbarItems.isEmpty else { return } + + // Store callbacks reference + self.callbacksRef = callbacks + + // Clean up existing custom items + self.customToolbarItems.removeAll() + + // Get existing right bar button items + var rightItems = pdfViewController.navigationItem.rightBarButtonItems ?? [] + + for itemConfig in customToolbarItems { + guard let identifier = itemConfig["identifier"] as? String, !identifier.isEmpty, + let title = itemConfig["title"] as? String, !title.isEmpty else { + continue + } + + // Create a toolbar button with selector action + let buttonItem = UIBarButtonItem(title: title, style: .plain, target: self, action: #selector(customToolbarItemTapped(_:))) + + // Configure icon if available + configureIcon(for: buttonItem, from: itemConfig) + + // Store the identifier with the button using objc_setAssociatedObject + objc_setAssociatedObject(buttonItem, UnsafeRawPointer(bitPattern: 1)!, identifier, .OBJC_ASSOCIATION_RETAIN_NONATOMIC) + + // Store the button for later reference + self.customToolbarItems[identifier] = buttonItem + + // Add to toolbar + rightItems.append(buttonItem) + } + + // Update the navigation bar + pdfViewController.navigationItem.setRightBarButtonItems(rightItems, animated: true) + } + + /// Configures the icon for a toolbar button item + /// - Parameters: + /// - buttonItem: The button item to configure + /// - config: The configuration dictionary for the item + private static func configureIcon(for buttonItem: UIBarButtonItem, from config: [String: Any]) { + if let iconName = config["iconName"] as? String, !iconName.isEmpty { + // First try to find the icon in the app's bundle + if let image = UIImage(named: iconName) { + buttonItem.image = image + buttonItem.title = nil + } + // If not found in app bundle, try system icons + else if let systemImage = UIImage(systemName: iconName) { + buttonItem.image = systemImage + buttonItem.title = nil + } + + // Apply icon color if specified + if let iconColorHex = config["iconColor"] as? String, !iconColorHex.isEmpty { + // Use UIColorExtension if available + if let color = UIColor.init(hexString: iconColorHex) { + buttonItem.tintColor = color + } + } + } + } + + /// Handler for custom toolbar item taps + /// - Parameter sender: The button that was tapped + @objc static func customToolbarItemTapped(_ sender: UIBarButtonItem) { + // Retrieve the identifier + if let identifier = objc_getAssociatedObject(sender, UnsafeRawPointer(bitPattern: 1)!) as? String { + // Notify Flutter about the tap + callbacksRef?.onCustomToolbarItemTapped(identifier: identifier) { _ in } + } + } +} diff --git a/ios/Classes/PspdfPlatformView.m b/ios/Classes/PspdfPlatformView.m index 26fba87..683bf68 100644 --- a/ios/Classes/PspdfPlatformView.m +++ b/ios/Classes/PspdfPlatformView.m @@ -43,7 +43,11 @@ - (instancetype)initWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewId argum _navigationController.view.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; _navigationController.view.frame = frame; _platformViewImpl = [[PspdfkitPlatformViewImpl alloc] init]; - [_platformViewImpl registerWithBinaryMessenger:messenger viewId:[NSString stringWithFormat:@"%lld",viewId]]; + + // Get the list of custom toolbar items as an array of dictionaries + NSArray *customToolbarItems = args[@"customToolbarItems"]; + + [_platformViewImpl registerWithBinaryMessenger:messenger viewId:[NSString stringWithFormat:@"%lld",viewId] customToolbarItems: customToolbarItems]; // View controller containment _flutterViewController = [UIApplication sharedApplication].delegate.window.rootViewController; diff --git a/ios/Classes/PspdfkitPlatformViewImpl.swift b/ios/Classes/PspdfkitPlatformViewImpl.swift index 3827956..a7a12cf 100644 --- a/ios/Classes/PspdfkitPlatformViewImpl.swift +++ b/ios/Classes/PspdfkitPlatformViewImpl.swift @@ -15,8 +15,10 @@ public class PspdfkitPlatformViewImpl: NSObject, PspdfkitWidgetControllerApi, PD private var pdfViewController: PDFViewController? = nil; private var pspdfkitWidgetCallbacks: PspdfkitWidgetCallbacks? = nil; + private var customToolbarCallbacks: CustomToolbarCallbacks? = nil; private var viewId: String? = nil; private var eventsHelper: FlutterEventsHelper? = nil; + private var customToolbarItems: [[String: Any]] = [] @objc public func setViewController(controller: PDFViewController){ self.pdfViewController = controller @@ -24,6 +26,7 @@ public class PspdfkitPlatformViewImpl: NSObject, PspdfkitWidgetControllerApi, PD // Set the host view for the annotation toolbar controller controller.annotationToolbarController?.updateHostView(nil, container: nil, viewController: controller) + CustomToolbarHelper.setupCustomToolbarItems(for: pdfViewController!, customToolbarItems:customToolbarItems, callbacks: customToolbarCallbacks) } public func pdfViewController(_ pdfController: PDFViewController, didChange document: Document?) { @@ -345,9 +348,10 @@ public class PspdfkitPlatformViewImpl: NSObject, PspdfkitWidgetControllerApi, PD } } - @objc public func register( binaryMessenger: FlutterBinaryMessenger, viewId: String){ + @objc public func register( binaryMessenger: FlutterBinaryMessenger, viewId: String, customToolbarItems: [[String: Any]]){ self.viewId = viewId pspdfkitWidgetCallbacks = PspdfkitWidgetCallbacks(binaryMessenger: binaryMessenger, messageChannelSuffix: "widget.callbacks.\(viewId)") + customToolbarCallbacks = CustomToolbarCallbacks(binaryMessenger: binaryMessenger, messageChannelSuffix: "customToolbar.callbacks.\(viewId)") PspdfkitWidgetControllerApiSetup.setUp(binaryMessenger: binaryMessenger, api: self, messageChannelSuffix:viewId) let nutreintEventCallback: NutrientEventsCallbacks = NutrientEventsCallbacks(binaryMessenger: binaryMessenger, messageChannelSuffix: "events.callbacks.\(viewId)") eventsHelper = FlutterEventsHelper(nutrientCallback: nutreintEventCallback) @@ -355,11 +359,13 @@ public class PspdfkitPlatformViewImpl: NSObject, PspdfkitWidgetControllerApi, PD selector: #selector(spreadIndexDidChange(_:)), name: .PSPDFDocumentViewControllerSpreadIndexDidChange, object: nil) + self.customToolbarItems = customToolbarItems } @objc public func unRegister(binaryMessenger: FlutterBinaryMessenger){ NotificationCenter.default.removeObserver(self) pspdfkitWidgetCallbacks = nil + customToolbarCallbacks = nil PspdfkitWidgetControllerApiSetup.setUp(binaryMessenger: binaryMessenger, api: nil, messageChannelSuffix: viewId ?? "") if eventsHelper != nil { From 0dcc0f4eea86c82f06ccd9f5df2721f133011555 Mon Sep 17 00:00:00 2001 From: Julius Kato Mutumba Date: Thu, 13 Mar 2025 17:55:54 +0300 Subject: [PATCH 4/5] show pickers --- ...nutrient_custom_toolbar_items_example.dart | 16 +++------- ios/Classes/PspdfkitPlatformViewImpl.swift | 31 +++++++++++++++---- 2 files changed, 29 insertions(+), 18 deletions(-) diff --git a/example/lib/nutrient_custom_toolbar_items_example.dart b/example/lib/nutrient_custom_toolbar_items_example.dart index 669ab6f..9856783 100644 --- a/example/lib/nutrient_custom_toolbar_items_example.dart +++ b/example/lib/nutrient_custom_toolbar_items_example.dart @@ -17,7 +17,6 @@ class NutrientCustomToolbarItemsExample extends StatefulWidget { class _NutrientCustomToolbarItemsExampleState extends State { PspdfkitWidgetController? _pspdfkitWidgetController; - PdfDocument? _pdfDocument; @override Widget build(BuildContext context) { @@ -39,7 +38,7 @@ class _NutrientCustomToolbarItemsExampleState child: PspdfkitWidget( customToolbarItems: [ CustomToolbarItem( - title: 'Save', + title: 'Image', identifier: 'custom-toolbar-item', iconColor: "#000000", iconName: "toolbar_item", @@ -61,11 +60,9 @@ class _NutrientCustomToolbarItemsExampleState switch (identifier) { case 'custom-toolbar-item': { - _pdfDocument?.save(); - ScaffoldMessenger.of(context) - .showSnackBar(const SnackBar( - content: Text('Document saved'), - )); + _pspdfkitWidgetController + ?.enterAnnotationCreationMode( + AnnotationTool.image); } break; case 'custom-toolbar-item-2': @@ -81,11 +78,6 @@ class _NutrientCustomToolbarItemsExampleState } }, documentPath: widget.documentPath, - onPdfDocumentLoaded: (document) { - setState(() { - _pdfDocument = document; - }); - }, onPspdfkitWidgetCreated: (view) { setState(() { _pspdfkitWidgetController = view; diff --git a/ios/Classes/PspdfkitPlatformViewImpl.swift b/ios/Classes/PspdfkitPlatformViewImpl.swift index a7a12cf..dbd54db 100644 --- a/ios/Classes/PspdfkitPlatformViewImpl.swift +++ b/ios/Classes/PspdfkitPlatformViewImpl.swift @@ -286,17 +286,37 @@ public class PspdfkitPlatformViewImpl: NSObject, PspdfkitWidgetControllerApi, PD do { if let annotationTool = annotationTool { - // Get the Flutter tool name - // Use AnnotationHelper to map the Flutter tool to iOS tool if let toolWithVariant = AnnotationHelper.getIOSAnnotationToolWithVariantFromFlutterName(annotationTool) { // Set the annotation tool if pdfViewController.annotationToolbarController?.isToolbarVisible == false { pdfViewController.annotationToolbarController?.showToolbar(animated: true) } - pdfViewController.annotationStateManager.toggleState(toolWithVariant.annotationTool, variant: toolWithVariant.variant) - // Ensure the annotation toolbar is visible - completion(.success(true)) + + // Handle special cases for tools that need to show pickers or dialogs + if toolWithVariant.annotationTool == .stamp { + // Show the stamp picker +// pdfViewController.annotationStateManager.setState(toolWithVariant.annotationTool, variant: toolWithVariant.variant) + pdfViewController.annotationStateManager.toggleStampController(nil) + // The stamp picker will be shown automatically when the tool is selected + completion(.success(true)) + } else if toolWithVariant.annotationTool == .image { + // For image tool, we need to use the annotation state manager to trigger the image picker +// pdfViewController.annotationStateManager.setState(toolWithVariant.annotationTool, variant: toolWithVariant.variant) + pdfViewController.annotationStateManager.toggleImagePickerController(nil) + // The image picker will be shown automatically when the tool is selected + completion(.success(true)) + } else if toolWithVariant.annotationTool == .signature { + // For signature tool, we need to use the annotation state manager to trigger the signature controller +// pdfViewController.annotationStateManager.setState(toolWithVariant.annotationTool, variant: toolWithVariant.variant) + pdfViewController.annotationStateManager.toggleSignatureController(nil) + // The signature dialog will be shown automatically when the tool is selected + completion(.success(true)) + } else { + // For all other annotation tools, just toggle the state + pdfViewController.annotationStateManager.toggleState(toolWithVariant.annotationTool, variant: toolWithVariant.variant) + completion(.success(true)) + } } else { // Default to ink pen if the tool is not supported let defaultTool = AnnotationToolWithVariant(annotationTool: .ink, variant: nil) @@ -304,7 +324,6 @@ public class PspdfkitPlatformViewImpl: NSObject, PspdfkitWidgetControllerApi, PD pdfViewController.annotationToolbarController?.showToolbar(animated: true) } pdfViewController.annotationStateManager.toggleState(defaultTool.annotationTool, variant: defaultTool.variant) - // Ensure the annotation toolbar is visible completion(.success(true)) } } else { From 7175b0dd7aac697b8c5edb5b98a44ef11e5cea5d Mon Sep 17 00:00:00 2001 From: Julius Kato Mutumba Date: Fri, 14 Mar 2025 10:19:29 +0300 Subject: [PATCH 5/5] singature storage --- .../flutter/pspdfkit/ConfigurationAdapter.java | 4 ++++ .../pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt | 7 +++++++ .../com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt | 2 ++ ios/Classes/PspdfPlatformView.m | 11 ++++++++++- 4 files changed, 23 insertions(+), 1 deletion(-) diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/ConfigurationAdapter.java b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/ConfigurationAdapter.java index 2c71220..5ad3784 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/ConfigurationAdapter.java +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/ConfigurationAdapter.java @@ -29,6 +29,7 @@ import com.pspdfkit.configuration.search.SearchType; import com.pspdfkit.configuration.settings.SettingsMenuItemType; import com.pspdfkit.configuration.sharing.ShareFeatures; +import com.pspdfkit.configuration.signatures.SignatureSavingStrategy; import com.pspdfkit.configuration.theming.ThemeMode; import com.pspdfkit.preferences.PSPDFKitPreferences; import com.pspdfkit.ui.special_mode.controller.AnnotationTool; @@ -858,6 +859,9 @@ PdfActivityConfiguration build() { this.configuration .enabledAnnotationTools(annotationTools); } + //https://www.nutrient.io/guides/android/signatures/signature-storage/ + // Configure to save the signature if it is selected. You can also configure it to always save or never save. + configuration.signatureSavingStrategy(SignatureSavingStrategy.SAVE_IF_SELECTED); return configuration.build(); } } diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt index 80c619e..93078c6 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/FlutterPdfUiFragment.kt @@ -20,6 +20,8 @@ import androidx.core.content.ContextCompat import androidx.core.graphics.drawable.DrawableCompat import com.pspdfkit.document.PdfDocument import com.pspdfkit.flutter.pspdfkit.api.CustomToolbarCallbacks +import com.pspdfkit.signatures.storage.DatabaseSignatureStorage +import com.pspdfkit.signatures.storage.SignatureStorage import com.pspdfkit.ui.PdfUiFragment /** @@ -36,6 +38,11 @@ class FlutterPdfUiFragment : PdfUiFragment() { super.onViewCreated(view, savedInstanceState) // Enable options menu for the fragment setHasOptionsMenu(true) + // See guides: https://www.nutrient.io/guides/android/signatures/signature-storage/ + // Set the signature storage for the PdfFragment. + val storage: SignatureStorage = DatabaseSignatureStorage + .withName(requireContext(),"MyCoolSignatureDatabase") + pdfFragment?.signatureStorage = storage } /** diff --git a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt index 0e5d35a..8059a24 100644 --- a/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt +++ b/android/src/main/java/com/pspdfkit/flutter/pspdfkit/PSPDFKitView.kt @@ -44,6 +44,8 @@ import com.pspdfkit.forms.ChoiceFormElement import com.pspdfkit.forms.EditableButtonFormElement import com.pspdfkit.forms.SignatureFormElement import com.pspdfkit.forms.TextFormElement +import com.pspdfkit.signatures.storage.DatabaseSignatureStorage +import com.pspdfkit.signatures.storage.SignatureStorage import com.pspdfkit.ui.PdfFragment import com.pspdfkit.ui.PdfUiFragment import com.pspdfkit.ui.PdfUiFragmentBuilder diff --git a/ios/Classes/PspdfPlatformView.m b/ios/Classes/PspdfPlatformView.m index 683bf68..7dcdf08 100644 --- a/ios/Classes/PspdfPlatformView.m +++ b/ios/Classes/PspdfPlatformView.m @@ -73,7 +73,16 @@ - (instancetype)initWithFrame:(CGRect)frame viewIdentifier:(int64_t)viewId argum BOOL isImageDocument = [PspdfkitFlutterHelper isImageDocument:documentPath]; PSPDFConfiguration *configuration = [PspdfkitFlutterConverter configuration:configurationDictionary isImageDocument:isImageDocument]; - _pdfViewController = [[PSPDFViewController alloc] initWithDocument:document configuration:configuration]; + // Add signature store and signature saving strategy + // Signature store is used to save and load signatures from the keychain + // Signature saving strategy is used to determine when to save signatures + // See guides: https://www.nutrient.io/guides/ios/signatures/signature-storage/ + PSPDFConfiguration *updatedConfig = [configuration configurationUpdatedWithBuilder:^(PSPDFConfigurationBuilder *builder) { + builder.signatureStore = [[PSPDFKeychainSignatureStore alloc] init]; + builder.signatureSavingStrategy = PSPDFSignatureSavingStrategyAlwaysSave; // Always save signatures + // Other options: PSPDFSignatureSavingStrategyNeverSave, PSPDFSignatureSavingStrategySaveIfSelected + }]; + _pdfViewController = [[PSPDFViewController alloc] initWithDocument:document configuration:updatedConfig]; _pdfViewController.appearanceModeManager.appearanceMode = [PspdfkitFlutterConverter appearanceMode:configurationDictionary]; _pdfViewController.pageIndex = [PspdfkitFlutterConverter pageIndex:configurationDictionary]; _pdfViewController.delegate = self;