ux: bulk WIP — UxPlugin→XPlugin rename + new anim/core/navi/reactive packages

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.
This commit is contained in:
agra
2026-05-21 08:58:07 +03:00
parent a508aca2bb
commit d68a2978eb
83 changed files with 5006 additions and 275 deletions

View File

@@ -2,12 +2,12 @@
A Flutter toolkit for building fluid, native-feeling UIs.
## UxKeyboard
## XKeyboard
Frame-accurate keyboard height tracking for iOS and Android, with interactive dismiss.
Flutter's built-in `MediaQuery.viewInsets.bottom` lags behind the actual keyboard position
and doesn't support interactive dismiss. `UxKeyboard` reads the keyboard height directly
and doesn't support interactive dismiss. `XKeyboard` reads the keyboard height directly
from the native layer via FFI — zero channel latency, every frame.
### Features
@@ -21,7 +21,7 @@ from the native layer via FFI — zero channel latency, every frame.
### Quick start
```dart
final keyboard = UxKeyboard.instance;
final keyboard = XKeyboard.instance;
// Enable swipe-to-dismiss. trackingInset is the height of your input bar.
keyboard.enableInteractiveDismiss(trackingInset: 56);
@@ -66,7 +66,7 @@ Scaffold(
| Member | Description |
|---|---|
| `UxKeyboard.instance` | Singleton instance |
| `XKeyboard.instance` | Singleton instance |
| `.height` | Current keyboard height in logical pixels |
| `.systemHeight` | Last system-reported keyboard height |
| `.isOpen` | Whether the keyboard is visible |
@@ -78,7 +78,7 @@ Scaffold(
### Key points
- Set `resizeToAvoidBottomInset: false` on your `Scaffold` — otherwise Flutter's built-in
resize fights with `UxKeyboard`
resize fights with `XKeyboard`
- Use `MediaQuery.viewPaddingOf(context).bottom` for the safe area (not `paddingOf`, which
is consumed by `Scaffold`)
- Use `max(keyboardHeight, safeBottom)` for bottom padding — the keyboard height includes