NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #3668 most downloaded on pub.dev
Android implementation of the nutrient_flutter plugin.
Last release 2 months ago
29 Jul 2026
Ships on a steady schedule
a new release about every 2 months
Nearly every release is documented
notes for 4 of 4 stable releases
Nothing withdrawn
no release was ever pulled
7 months old
4 releases · first in 2026
One column per month.
First pub.dev published version.
Changed
First pub.dev published version. ( #28157 )
Changed
Updates the minimum required Flutter SDK version to 1.12.0. ( #28157 )
minSdkVersion to 24 (Nougat) to match the SDK's new minimum.PageInfo.label from PdfDocument.getPageLabel(int, boolean) on Android (was previously always null). Falls back to null when the PDF has no explicit label dictionary entry. (J#HYB-951)io.flutter.embedding.android.FlutterAppCompatActivity moved from nutrient_flutter to nutrient_flutter_android, and the class is re-synced with upstream FlutterFragmentActivity at flutter/flutter@0541913d8. The Nutrient-specific deltas are now limited to (a) extending androidx.appcompat.app.AppCompatActivity instead of androidx.fragment.app.FragmentActivity, and (b) the class rename. The previous AiAssistantProvider integration that delegated to PSPDFKitView.Companion.getAiAssistant() has been removed because it required reaching into the legacy nutrient_flutter Android module. Apps that need the legacy AI Assistant binding can subclass FlutterAppCompatActivity in their own module, implements io.nutrient.domain.ai.AiAssistantProvider, and register the subclass in their AndroidManifest.xml instead. See nutrient_flutter's migration notes for details. (J#HYB-951)AndroidAdapter via JNI (the PdfFragment and ViewProjection Kotlin SDK classes): getVisibleRect, zoomToRect, getZoomScale, enterAnnotationCreationMode, exitAnnotationCreationMode, convertViewPointToPdfPoint, convertPdfPointToViewPoint. (J#HYB-952)utils/annotation_tool_android_mapping.dart with androidAnnotationToolNameFor (testable, JNI-free) and toAndroidAnnotationTool (FFI-touching) helpers, mapping the platform-interface AnnotationTool enum to the JNI-bound Java enum. (J#HYB-952)utils/jni_rect_f.dart, a small raw-JNI helper that constructs and reads back android.graphics.RectF instances since jnigen does not bind it. (J#HYB-952)AndroidAdapter to drive the cross-platform events stream via JNI listeners on PdfFragment: DocumentListener for load/save/page/zoom/click, AnnotationProvider$OnAnnotationUpdatedListener for annotation CRUD, OnAnnotationSelectedListener for selection/deselection, FormManager$OnFormElementUpdatedListener for form field updates, and TextSelectionManager$OnTextSelectionChangeListener for text selection. Listener wiring runs in onPdfFragmentReady before the new onFragmentReady subclass hook. (J#HYB-957)AndroidNutrientEvent sealed class and androidEvents broadcast stream on AndroidAdapter for events that don't have a cross-platform equivalent: AndroidAnnotationZOrderChangedEvent, AndroidDocumentZoomedEvent, AndroidDocumentSaveFailedEvent, AndroidDocumentSaveCancelledEvent, AndroidActivityPausedEvent, AndroidFragmentAddedEvent, AndroidFormEditingModeChangedEvent, AndroidAnnotationCreationModeChangedEvent. Subclasses can call the protected emitAndroidEvent(...) helper to push their own platform-specific events. (J#HYB-957)onPdfFragmentReady lifecycle hook: the SDK now wires its built-in listeners in onPdfFragmentReady and calls a new @protected onFragmentReady(PdfFragment) hook for subclasses. Subclasses that previously overrode onPdfFragmentReady should switch to overriding onFragmentReady so the SDK's listeners stay registered. (J#HYB-957)NutrientDocumentInterface.exportPdf on the federated Android plugin via the synchronous PdfProcessor.processDocument(task, file, saveOptions) JNI overload. Honours DocumentSaveOptions.flatten and DocumentSaveOptions.excludeAnnotations via PdfProcessorTask.changeAllAnnotations(FLATTEN | DELETE), and DocumentSaveOptions.optimize via DocumentSaveOptions.setRewriteAndOptimizeFileSize. The processor writes to a JVM temp file (via java.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)utils/jni_file.dart, a small raw-JNI helper for java.io.File (constructor from path, createTempFile, getAbsolutePath, delete). jnigen doesn't bind java.io.File since it isn't part of the Nutrient SDK surface, but the sync PdfProcessor.processDocument(...) overload needs one. (J#HYB-951)Adds AI Assistant support to NutrientInstantViewAndroid via NutrientViewConfiguration.aiAssistantConfiguration.
NutrientInstantViewAndroid via NutrientViewConfiguration.aiAssistantConfiguration.NutrientViewConfiguration.enableInstantComments in AndroidConfigurationBuilder by appending INSTANT_COMMENT_MARKER and INSTANT_HIGHLIGHT_COMMENT to the enabled annotation tools.Adds NutrientInstantViewAndroid, an Android implementation of the embedded Instant document widget using InstantPdfUiFragment via JNI. (J#HYB-988)
NutrientInstantViewAndroid, an Android implementation of the embedded Instant document widget using InstantPdfUiFragment via JNI. (J#HYB-988)AndroidConfigurationBuilder to convert NutrientViewConfiguration into the native Android viewer configuration. (J#HYB-988)compileSdkVersion and targetSdkVersion to 36. (J#HYB-990)Initial release as standalone pub.dev package.
nutrient_flutter with native bindings.nutrient_flutter_platform_interface for the federated plugin architecture.Your coding agent can read these notes before it upgrades. Set up the MCP server →