Catch-all commit for outstanding pre-existing local changes. Mixes several themes that would normally be split: - Rename: UxPlugin → XPlugin across iOS, macOS, Android registrants. - New top-level packages under lib/src/: anim/ (animated values, panes, sheets, dock, measured), core/ (Emitter, ReactiveBuilder scaffolding, presenter/widget/value/dispose primitives), navi/ (Screen/ScreenStack/Router/hero/transitions), reactive/. - Edits across existing plugins (clipboard, crash, file, gallery, keyboard, scanner, sensor, url) to align with the new core. - Test updates and CHANGELOG/README touches accompanying the above.
4.2 KiB
4.2 KiB
0.9.0
XScanner: new platform-view widget for QR-code (and forward-compat barcode) scanning. iOS usesAVCaptureMetadataOutput(no extra pod); Android uses CameraX preview + ZXing decoder (com.google.zxing:core:3.5.3, ~470 KB jar, no Play Services dep).XScannerPermission.requestCamera()requests OS permission first; decoded payloads stream throughEventChannel('ux/scanner/events').
0.8.0
Log: pretty, production-ready logger. Static entry (Log.d/i/w/e/f/t), scoped loggers viaLog.tag('KB'), lazy messages (Log.d(() => expensive)), structuredfields, ANSI-coloredConsoleSink,DeveloperSinkfor DevTools,MemorySinkring buffer (tests + breadcrumbs),NoopSink. Sinks fan out via+with per-sinkminLevel; throwing sinks can't take down the pipeline.Log.configure: one-call setup that also wiresFlutterError.onError,PlatformDispatcher.onError, and isolate errors throughLog.e. Pair of log-then-rethrow is deduped via anExpandomark so crash handlers don't double-report. Override thecaptureCrasheshook to customise or pass() {}to opt out.XKeyboard: adaptive-learning debug output now usesLog.tag('KB').dinstead ofprint, lazy-built so the formatted line is only constructed when debug level is enabled.
0.7.0
AutoMap<K, V>: insertion-ordered collection with O(1) lookup by key and by index. Backed by aList<V>+Map<K, int>kept in sync by four mutation methods (add,addAll,remove,clear); both fields are private so callers cannot break the invariant. ExtendsIterable<V>forwhere/map/firstWhere/ etc.removeis O(n) to preserve order; every other op is O(1).
0.6.0
XFile: new module for handing files to the OSXFile.share(path, {title, mimeType, sourceRect})— iOSUIActivityViewController, macOSNSSharingServicePicker, AndroidIntent.ACTION_SENDvia FileProvider.sourceRectanchors the popover on iPad / macOS.XFile.open(path, {mimeType})— in-app preview where possible: iOSQLPreviewController, macOSQLPreviewPanel(preview on top of the app, no foreground loss), AndroidIntent.ACTION_VIEWwith MIME inference fromMimeTypeMap+ a fallback set of text/code extensions so unknown types still resolve totext/plaininstead ofapplication/octet-stream.
- macOS: new platform. Plugin registry +
FilePlugin; keyboard and sensor plugins remain iOS-only. - Android: ships a FileProvider under
${applicationId}.ux.fileproviderscoped toux_share/in the app cache — host apps don't need manifest plumbing. - iOS:
XWindowhelper (keyWindow/topViewController) inNativePlugin.swift, shared between keyboard and file plugins.
0.5.0
XSensor.orientation: accelerometer-driven physical device rotation, independent of the OS auto-rotate setting or UI orientation lockAppInfo: version + buildNumber surfaceXKeyboard: focus tracking integration
0.4.0
package:ux/testing.dart: new entry point for test-only utilitiesmatchesTextGolden(path, {update}):matchesGoldenFile-style matcher for plain-text snapshots (RPC responses, log output, formatted data). Writes on first run or whenupdate: true; compares byte-for-byte otherwise. Runtime stays flutter_test-free — depends only onpackage:matcher. For flutter_test users, passupdate: autoUpdateGoldenFilessoflutter test --update-goldensregenerates text goldens too.
0.3.0
XKeyboard: fix interactive dismiss race conditions — keyboard height no longer gets stuck when rapidly dismissing and re-focusingXKeyboard: handle zero-duration keyboard notifications (instant snap)XKeyboard: gate adaptive learning debug output behindkDebugMode- Example: rewrite as chat UI demonstrating
ListenableBuilder, scroll freeze, and interactive dismiss - Example: modernize Android project (v2 embedding, AGP 8.7, Gradle 8.11)
0.2.0
XKeyboard: sampled native animation curves (iOS & Android) with adaptive learningXKeyboard: interactive dismiss via pan gesture- Android: keyboard height tracking via JNI/FFI bridge
0.1.1
- Bezier utilities
0.0.3
- Action Plan
0.0.2
- BendBox