Sync FFI from Dart into platform detectors: - iOS / macOS: NSDataDetector(.link | .phoneNumber) + a tight bare-domain pass that requires `/` or `?` (so `etc.` / `v1.2.3` don't false-positive while `example.com/path` does match). NFKD-fold the phone capture so full-width / Arabic-Indic digits collapse to ASCII; stop the digit run at the first letter so `+1 555 1234 ext.99` doesn't fuse the extension. - Android: JNI into android.util.Patterns (WEB_URL / EMAIL_ADDRESS / PHONE) via a cached JavaVM, std::call_once for init, full per-call ExceptionCheck coverage. UTF-16→UTF-8 conversion is hand-rolled to dodge the Modified-UTF-8 / CESU-8 incompatibility with Dart's utf8.decode. `UxUrl.launch(url)` is the matching tap action. Channel side dispatches via UIApplication / NSWorkspace / Intent.ACTION_VIEW. Dart-side gates the URL against a scheme allowlist (http, https, mailto, tel, sms, banlu, tg), rejects bidi-override controls (U+202A..E / U+2066..9) to prevent visual spoofs, and blocks USSD / MMI tel: codes containing `*` or `#`. Library/native cleanup along the way: - Renamed libux_keyboard.so to libux.so (also covers sensor + url). - Collapsed three near-identical FFI loader stanzas across keyboard / sensor / url into a shared lib/src/_ffi.dart with `uxLib` + typed `uxLookupX` helpers.
42 lines
834 B
YAML
42 lines
834 B
YAML
name: ux
|
|
description: >-
|
|
Flutter toolkit for fluid, native-feeling UIs. Includes frame-accurate
|
|
keyboard height tracking via FFI with interactive dismiss, bezier utilities,
|
|
and layout primitives.
|
|
version: 0.9.0
|
|
homepage: https://swipelab.co/ux.html
|
|
repository: https://github.com/swipelab/ux
|
|
issue_tracker: https://github.com/swipelab/ux/issues
|
|
topics:
|
|
- keyboard
|
|
- ui
|
|
- animation
|
|
|
|
environment:
|
|
sdk: ">=3.0.0 <4.0.0"
|
|
flutter: ">=3.10.0"
|
|
|
|
dependencies:
|
|
flutter:
|
|
sdk: flutter
|
|
matcher: ^0.12.16
|
|
build: ^2.4.0
|
|
clock: ^1.1.1
|
|
ffi: ^2.1.0
|
|
|
|
dev_dependencies:
|
|
flutter_lints: ^6.0.0
|
|
flutter_test:
|
|
sdk: flutter
|
|
|
|
flutter:
|
|
plugin:
|
|
platforms:
|
|
ios:
|
|
pluginClass: UxPlugin
|
|
android:
|
|
package: io.swipelab.ux
|
|
pluginClass: UxPlugin
|
|
macos:
|
|
pluginClass: UxPlugin
|