nutrient_flutter_android 2.0.0
nutrient_flutter_android: ^2.0.0 copied to clipboard
Android implementation of the nutrient_flutter plugin.
2.0.0 29 Jul 2026 #
- Updates to Nutrient Android SDK 11.6.1 and regenerates the JNI bindings against it. Raises the plugin's
minSdkVersionto 24 (Nougat) to match the SDK's new minimum. - Populates
PageInfo.labelfromPdfDocument.getPageLabel(int, boolean)on Android (was previously alwaysnull). Falls back tonullwhen the PDF has no explicit label dictionary entry. (J#HYB-951) - BREAKING:
io.flutter.embedding.android.FlutterAppCompatActivitymoved fromnutrient_fluttertonutrient_flutter_android, and the class is re-synced with upstreamFlutterFragmentActivityat flutter/flutter@0541913d8. The Nutrient-specific deltas are now limited to (a) extendingandroidx.appcompat.app.AppCompatActivityinstead ofandroidx.fragment.app.FragmentActivity, and (b) the class rename. The previousAiAssistantProviderintegration that delegated toPSPDFKitView.Companion.getAiAssistant()has been removed because it required reaching into the legacynutrient_flutterAndroid module. Apps that need the legacy AI Assistant binding can subclassFlutterAppCompatActivityin their own module,implements io.nutrient.domain.ai.AiAssistantProvider, and register the subclass in theirAndroidManifest.xmlinstead. Seenutrient_flutter's migration notes for details. (J#HYB-951) - Implements seven view-scoped methods on
AndroidAdaptervia JNI (thePdfFragmentandViewProjectionKotlin SDK classes):getVisibleRect,zoomToRect,getZoomScale,enterAnnotationCreationMode,exitAnnotationCreationMode,convertViewPointToPdfPoint,convertPdfPointToViewPoint. (J#HYB-952) - Adds
utils/annotation_tool_android_mapping.dartwithandroidAnnotationToolNameFor(testable, JNI-free) andtoAndroidAnnotationTool(FFI-touching) helpers, mapping the platform-interfaceAnnotationToolenum to the JNI-bound Java enum. (J#HYB-952) - Adds
utils/jni_rect_f.dart, a small raw-JNI helper that constructs and reads backandroid.graphics.RectFinstances since jnigen does not bind it. (J#HYB-952) - Wires
AndroidAdapterto drive the cross-platformeventsstream via JNI listeners onPdfFragment:DocumentListenerfor load/save/page/zoom/click,AnnotationProvider$OnAnnotationUpdatedListenerfor annotation CRUD,OnAnnotationSelectedListenerfor selection/deselection,FormManager$OnFormElementUpdatedListenerfor form field updates, andTextSelectionManager$OnTextSelectionChangeListenerfor text selection. Listener wiring runs inonPdfFragmentReadybefore the newonFragmentReadysubclass hook. (J#HYB-957) - Adds
AndroidNutrientEventsealed class andandroidEventsbroadcast stream onAndroidAdapterfor events that don't have a cross-platform equivalent:AndroidAnnotationZOrderChangedEvent,AndroidDocumentZoomedEvent,AndroidDocumentSaveFailedEvent,AndroidDocumentSaveCancelledEvent,AndroidActivityPausedEvent,AndroidFragmentAddedEvent,AndroidFormEditingModeChangedEvent,AndroidAnnotationCreationModeChangedEvent. Subclasses can call the protectedemitAndroidEvent(...)helper to push their own platform-specific events. (J#HYB-957) - Splits the
onPdfFragmentReadylifecycle hook: the SDK now wires its built-in listeners inonPdfFragmentReadyand calls a new@protected onFragmentReady(PdfFragment)hook for subclasses. Subclasses that previously overrodeonPdfFragmentReadyshould switch to overridingonFragmentReadyso the SDK's listeners stay registered. (J#HYB-957) - Implements
NutrientDocumentInterface.exportPdfon the federated Android plugin via the synchronousPdfProcessor.processDocument(task, file, saveOptions)JNI overload. HonoursDocumentSaveOptions.flattenandDocumentSaveOptions.excludeAnnotationsviaPdfProcessorTask.changeAllAnnotations(FLATTEN | DELETE), andDocumentSaveOptions.optimizeviaDocumentSaveOptions.setRewriteAndOptimizeFileSize. The processor writes to a JVM temp file (viajava.io.File.createTempFile), the Dart side reads it back as bytes and best-effort-deletes it. Password / permissions / pdf-version mapping is still defaults-only — track richer save-options support as a follow-up. (J#HYB-951) - Adds
utils/jni_file.dart, a small raw-JNI helper forjava.io.File(constructor from path,createTempFile,getAbsolutePath,delete). jnigen doesn't bindjava.io.Filesince it isn't part of the Nutrient SDK surface, but the syncPdfProcessor.processDocument(...)overload needs one. (J#HYB-951)
1.2.0 18 Jun 2026 #
- Adds AI Assistant support to
NutrientInstantViewAndroidviaNutrientViewConfiguration.aiAssistantConfiguration. - Honours
NutrientViewConfiguration.enableInstantCommentsinAndroidConfigurationBuilderby appendingINSTANT_COMMENT_MARKERandINSTANT_HIGHLIGHT_COMMENTto the enabled annotation tools. - Updates to Nutrient Android SDK 11.5.1, migrating to the 11.5 toolbar APIs and jni 1.0 bindings. (#54079)
1.1.0 09 Apr 2026 #
- Adds
NutrientInstantViewAndroid, an Android implementation of the embedded Instant document widget usingInstantPdfUiFragmentvia JNI. (J#HYB-988) - Adds
AndroidConfigurationBuilderto convertNutrientViewConfigurationinto the native Android viewer configuration. (J#HYB-988) - Sets Android
compileSdkVersionandtargetSdkVersionto 36. (J#HYB-990)
1.0.0 13 Feb 2026 #
- Initial release as standalone pub.dev package.
- Native Android bindings using JNI for direct Nutrient Android SDK integration.
- Provides platform adapter to extend
nutrient_flutterwith native bindings. - Implements
nutrient_flutter_platform_interfacefor the federated plugin architecture.