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

@@ -1,4 +1,4 @@
// Native data detection for UxUrl on Android. Synchronous, callable via dart:ffi.
// Native data detection for XUrl on Android. Synchronous, callable via dart:ffi.
//
// Exports two symbols:
// uint8_t* ux_match_url(const uint16_t* utf16, int32_t len, int32_t* out_size);
@@ -24,7 +24,7 @@
#include <string>
#include <vector>
#define UX_LOG_TAG "UxUrl"
#define UX_LOG_TAG "XUrl"
#define UX_LOGE(...) __android_log_print(ANDROID_LOG_ERROR, UX_LOG_TAG, __VA_ARGS__)
namespace {

View File

@@ -26,7 +26,7 @@ import java.io.ByteArrayOutputStream
import java.io.File
import java.io.FileOutputStream
/// `MediaStore` bridge for `UxGallery` — paginated photo + video
/// `MediaStore` bridge for `XGallery` — paginated photo + video
/// queries via `ContentResolver`, cell-sized thumbnails via
/// `ContentResolver.loadThumbnail` (API 29+), and stream-copy file
/// resolution into the app cache so `dart:io` can read what the

View File

@@ -14,7 +14,7 @@ class UrlPlugin : NativePlugin, MethodChannel.MethodCallHandler {
init {
// Trigger JNI_OnLoad in libux.so so the FFI shim's
// android.util.Patterns bindings are cached before the first
// UxUrl.match call from Dart.
// XUrl.match call from Dart.
System.loadLibrary("ux")
}
}

View File

@@ -5,7 +5,7 @@ import io.flutter.embedding.engine.plugins.activity.ActivityAware
import io.flutter.embedding.engine.plugins.activity.ActivityPluginBinding
import io.swipelab.ux.camera.CameraPlugin
class UxPlugin : FlutterPlugin, ActivityAware {
class XPlugin : FlutterPlugin, ActivityAware {
private val plugins: List<NativePlugin> = listOf(
KeyboardPlugin(),
SensorPlugin(),

View File

@@ -13,7 +13,7 @@ import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.ProcessLifecycleOwner
import io.flutter.view.TextureRegistry
/// One per `UxCameraController` on the Dart side. Owns CameraX's
/// One per `XCameraController` on the Dart side. Owns CameraX's
/// [ProcessCameraProvider] binding, the [PreviewSink] (texture +
/// SurfaceProvider), the [PhotoCapture] use-case, and the per-instance
/// [CustomLifecycleOwner] that drives them.

View File

@@ -32,7 +32,7 @@ class VideoCapture {
val useCase: androidx.camera.video.VideoCapture<Recorder> =
androidx.camera.video.VideoCapture.Builder(recorder)
// Raw sensor capture — selfie videos are "as others see
// you"; the preview-only mirror lives in UxCameraPreview.
// you"; the preview-only mirror lives in XCameraPreview.
.setMirrorMode(MirrorMode.MIRROR_MODE_OFF)
.build()