diff --git a/mobile/.editorconfig b/mobile/.editorconfig
new file mode 100644
index 0000000..9d4c2fa
--- /dev/null
+++ b/mobile/.editorconfig
@@ -0,0 +1,2 @@
+[*.dart]
+indent_size = 2
diff --git a/mobile/.flutter_rust_bridge.yml b/mobile/.flutter_rust_bridge.yml
new file mode 100644
index 0000000..f2a5bc8
--- /dev/null
+++ b/mobile/.flutter_rust_bridge.yml
@@ -0,0 +1,7 @@
+rust_input:
+ - native/src/api.rs
+dart_output:
+ - lib/bridge_generated.dart
+dart_decl_output: lib/bridge_definitions.dart
+dart_format_line_length: 120
+wasm: false
diff --git a/mobile/.gitignore b/mobile/.gitignore
new file mode 100644
index 0000000..09360f3
--- /dev/null
+++ b/mobile/.gitignore
@@ -0,0 +1,51 @@
+# Miscellaneous
+*.class
+*.log
+*.pyc
+*.swp
+.DS_Store
+.atom/
+.buildlog/
+.history
+.svn/
+
+# IntelliJ related
+*.iml
+*.ipr
+*.iws
+.idea/
+
+# The .vscode folder contains launch configuration and tasks you configure in
+# VS Code which you may wish to be included in version control, so this line
+# is commented out by default.
+#.vscode/
+
+# Flutter/Dart/Pub related
+**/doc/api/
+**/ios/Flutter/.last_build_id
+.dart_tool/
+.flutter-plugins
+.flutter-plugins-dependencies
+.packages
+.pub-cache/
+.pub/
+/build/
+
+# Web related
+
+# Symbolication related
+app.*.symbols
+
+# Obfuscation related
+app.*.map.json
+
+# Android Studio will place build artifacts here
+/android/app/debug
+/android/app/profile
+/android/app/release
+native/target
+xcuserdata
+jniLibs
+
+Cargo.lock
+pubspec.lock
diff --git a/mobile/.metadata b/mobile/.metadata
new file mode 100644
index 0000000..105695d
--- /dev/null
+++ b/mobile/.metadata
@@ -0,0 +1,44 @@
+# This file tracks properties of this Flutter project.
+# Used by Flutter tool to assess capabilities and perform upgrades etc.
+#
+# This file should be version controlled.
+
+version:
+ revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ channel: stable
+
+project_type: app
+
+# Tracks metadata for the flutter migrate command
+migration:
+ platforms:
+ - platform: root
+ create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ - platform: android
+ create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ - platform: ios
+ create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ - platform: linux
+ create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ - platform: macos
+ create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ - platform: web
+ create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ - platform: windows
+ create_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+ base_revision: 9944297138845a94256f1cf37beb88ff9a8e811a
+
+ # User provided section
+
+ # List of Local paths (relative to this file) that should be
+ # ignored by the migrate tool.
+ #
+ # Files that are not part of the templates will be ignored by default.
+ unmanaged_files:
+ - 'lib/main.dart'
diff --git a/mobile/.tool-versions b/mobile/.tool-versions
new file mode 100644
index 0000000..fd85870
--- /dev/null
+++ b/mobile/.tool-versions
@@ -0,0 +1 @@
+java liberica-8u322+6
diff --git a/mobile/LICENSE-MIT b/mobile/LICENSE-MIT
new file mode 100644
index 0000000..ff9f307
--- /dev/null
+++ b/mobile/LICENSE-MIT
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright 2022 Viet Dinh.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/mobile/LICENSE.md b/mobile/LICENSE.md
new file mode 100644
index 0000000..23034d6
--- /dev/null
+++ b/mobile/LICENSE.md
@@ -0,0 +1,3 @@
+This portion of the software is covered under the terms of the [Chaos
+License](../LICENSE.md). Portions of the code in this mobile module are used under the terms of the
+[MIT License](./LICENSE-MIT).
diff --git a/mobile/analysis_options.yaml b/mobile/analysis_options.yaml
new file mode 100644
index 0000000..61b6c4d
--- /dev/null
+++ b/mobile/analysis_options.yaml
@@ -0,0 +1,29 @@
+# This file configures the analyzer, which statically analyzes Dart code to
+# check for errors, warnings, and lints.
+#
+# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
+# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
+# invoked from the command line by running `flutter analyze`.
+
+# The following line activates a set of recommended lints for Flutter apps,
+# packages, and plugins designed to encourage good coding practices.
+include: package:flutter_lints/flutter.yaml
+
+linter:
+ # The lint rules applied to this project can be customized in the
+ # section below to disable rules from the `package:flutter_lints/flutter.yaml`
+ # included above or to enable additional rules. A list of all available lints
+ # and their documentation is published at
+ # https://dart-lang.github.io/linter/lints/index.html.
+ #
+ # Instead of disabling a lint rule for the entire project in the
+ # section below, it can also be suppressed for a single line of code
+ # or a specific dart file by using the `// ignore: name_of_lint` and
+ # `// ignore_for_file: name_of_lint` syntax on the line or in the file
+ # producing the lint.
+ rules:
+ # avoid_print: false # Uncomment to disable the `avoid_print` rule
+ # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
+
+# Additional information about this file can be found at
+# https://dart.dev/guides/language/analysis-options
diff --git a/mobile/android/.gitignore b/mobile/android/.gitignore
new file mode 100644
index 0000000..6f56801
--- /dev/null
+++ b/mobile/android/.gitignore
@@ -0,0 +1,13 @@
+gradle-wrapper.jar
+/.gradle
+/captures/
+/gradlew
+/gradlew.bat
+/local.properties
+GeneratedPluginRegistrant.java
+
+# Remember to never publicly share your keystore.
+# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
+key.properties
+**/*.keystore
+**/*.jks
diff --git a/mobile/android/app/build.gradle b/mobile/android/app/build.gradle
new file mode 100644
index 0000000..8c5a631
--- /dev/null
+++ b/mobile/android/app/build.gradle
@@ -0,0 +1,99 @@
+def localProperties = new Properties()
+def localPropertiesFile = rootProject.file('local.properties')
+if (localPropertiesFile.exists()) {
+ localPropertiesFile.withReader('UTF-8') { reader ->
+ localProperties.load(reader)
+ }
+}
+
+def flutterRoot = localProperties.getProperty('flutter.sdk')
+if (flutterRoot == null) {
+ throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
+}
+
+def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
+if (flutterVersionCode == null) {
+ flutterVersionCode = '1'
+}
+
+def flutterVersionName = localProperties.getProperty('flutter.versionName')
+if (flutterVersionName == null) {
+ flutterVersionName = '1.0'
+}
+
+apply plugin: 'com.android.application'
+apply plugin: 'kotlin-android'
+apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
+
+android {
+ compileSdkVersion flutter.compileSdkVersion
+ ndkVersion flutter.ndkVersion
+
+ compileOptions {
+ sourceCompatibility JavaVersion.VERSION_1_8
+ targetCompatibility JavaVersion.VERSION_1_8
+ }
+
+ kotlinOptions {
+ jvmTarget = '1.8'
+ }
+
+ sourceSets {
+ main.java.srcDirs += 'src/main/kotlin'
+ }
+
+ defaultConfig {
+ // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
+ applicationId "com.nebcorp_hias.cuttle"
+ // You can update the following values to match your application needs.
+ // For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
+ minSdkVersion flutter.minSdkVersion
+ targetSdkVersion flutter.targetSdkVersion
+ versionCode flutterVersionCode.toInteger()
+ versionName flutterVersionName
+ }
+
+ buildTypes {
+ release {
+ // TODO: Add your own signing config for the release build.
+ // Signing with the debug keys for now, so `flutter run --release` works.
+ signingConfig signingConfigs.debug
+ }
+ }
+}
+
+flutter {
+ source '../..'
+}
+
+dependencies {
+ implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
+}
+
+[
+ Debug: null,
+ Profile: '--release',
+ Release: '--release'
+].each {
+ def taskPostfix = it.key
+ def profileMode = it.value
+ tasks.whenTaskAdded { task ->
+ if (task.name == "javaPreCompile$taskPostfix") {
+ task.dependsOn "cargoBuild$taskPostfix"
+ }
+ }
+ tasks.register("cargoBuild$taskPostfix", Exec) {
+ workingDir "../../native"
+ environment ANDROID_NDK_HOME: "$ANDROID_NDK"
+ commandLine 'cargo', 'ndk',
+ // the 2 ABIs below are used by real Android devices
+ '-t', 'armeabi-v7a',
+ '-t', 'arm64-v8a',
+ // for the simulator
+ '-t', 'x86_64',
+ '-o', '../android/app/src/main/jniLibs', 'build'
+ if (profileMode != null) {
+ args profileMode
+ }
+ }
+}
diff --git a/mobile/android/app/src/debug/AndroidManifest.xml b/mobile/android/app/src/debug/AndroidManifest.xml
new file mode 100644
index 0000000..9b15c7c
--- /dev/null
+++ b/mobile/android/app/src/debug/AndroidManifest.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/mobile/android/app/src/main/AndroidManifest.xml b/mobile/android/app/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..9d3008a
--- /dev/null
+++ b/mobile/android/app/src/main/AndroidManifest.xml
@@ -0,0 +1,34 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/mobile/android/app/src/main/kotlin/main/com/nebcorp-hias/cuttle/MainActivity.kt b/mobile/android/app/src/main/kotlin/main/com/nebcorp-hias/cuttle/MainActivity.kt
new file mode 100644
index 0000000..10bcd27
--- /dev/null
+++ b/mobile/android/app/src/main/kotlin/main/com/nebcorp-hias/cuttle/MainActivity.kt
@@ -0,0 +1,6 @@
+package com.nebcorp_hias.cuttle
+
+import io.flutter.embedding.android.FlutterActivity
+
+class MainActivity: FlutterActivity() {
+}
diff --git a/mobile/android/app/src/main/res/drawable-v21/launch_background.xml b/mobile/android/app/src/main/res/drawable-v21/launch_background.xml
new file mode 100644
index 0000000..f74085f
--- /dev/null
+++ b/mobile/android/app/src/main/res/drawable-v21/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/mobile/android/app/src/main/res/drawable/launch_background.xml b/mobile/android/app/src/main/res/drawable/launch_background.xml
new file mode 100644
index 0000000..304732f
--- /dev/null
+++ b/mobile/android/app/src/main/res/drawable/launch_background.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
diff --git a/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..db77bb4
Binary files /dev/null and b/mobile/android/app/src/main/res/mipmap-hdpi/ic_launcher.png differ
diff --git a/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..17987b7
Binary files /dev/null and b/mobile/android/app/src/main/res/mipmap-mdpi/ic_launcher.png differ
diff --git a/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..09d4391
Binary files /dev/null and b/mobile/android/app/src/main/res/mipmap-xhdpi/ic_launcher.png differ
diff --git a/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..d5f1c8d
Binary files /dev/null and b/mobile/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png differ
diff --git a/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..4d6372e
Binary files /dev/null and b/mobile/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png differ
diff --git a/mobile/android/app/src/main/res/values-night/styles.xml b/mobile/android/app/src/main/res/values-night/styles.xml
new file mode 100644
index 0000000..06952be
--- /dev/null
+++ b/mobile/android/app/src/main/res/values-night/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/mobile/android/app/src/main/res/values/styles.xml b/mobile/android/app/src/main/res/values/styles.xml
new file mode 100644
index 0000000..cb1ef88
--- /dev/null
+++ b/mobile/android/app/src/main/res/values/styles.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
diff --git a/mobile/android/app/src/profile/AndroidManifest.xml b/mobile/android/app/src/profile/AndroidManifest.xml
new file mode 100644
index 0000000..9b15c7c
--- /dev/null
+++ b/mobile/android/app/src/profile/AndroidManifest.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/mobile/android/build.gradle b/mobile/android/build.gradle
new file mode 100644
index 0000000..713d7f6
--- /dev/null
+++ b/mobile/android/build.gradle
@@ -0,0 +1,31 @@
+buildscript {
+ ext.kotlin_version = '1.7.10'
+ repositories {
+ google()
+ mavenCentral()
+ }
+
+ dependencies {
+ classpath 'com.android.tools.build:gradle:7.2.0'
+ classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ mavenCentral()
+ }
+}
+
+rootProject.buildDir = '../build'
+subprojects {
+ project.buildDir = "${rootProject.buildDir}/${project.name}"
+}
+subprojects {
+ project.evaluationDependsOn(':app')
+}
+
+tasks.register("clean", Delete) {
+ delete rootProject.buildDir
+}
diff --git a/mobile/android/gradle.properties b/mobile/android/gradle.properties
new file mode 100644
index 0000000..94adc3a
--- /dev/null
+++ b/mobile/android/gradle.properties
@@ -0,0 +1,3 @@
+org.gradle.jvmargs=-Xmx1536M
+android.useAndroidX=true
+android.enableJetifier=true
diff --git a/mobile/android/gradle/wrapper/gradle-wrapper.properties b/mobile/android/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..3c472b9
--- /dev/null
+++ b/mobile/android/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,5 @@
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
diff --git a/mobile/android/settings.gradle b/mobile/android/settings.gradle
new file mode 100644
index 0000000..44e62bc
--- /dev/null
+++ b/mobile/android/settings.gradle
@@ -0,0 +1,11 @@
+include ':app'
+
+def localPropertiesFile = new File(rootProject.projectDir, "local.properties")
+def properties = new Properties()
+
+assert localPropertiesFile.exists()
+localPropertiesFile.withReader("UTF-8") { reader -> properties.load(reader) }
+
+def flutterSdkPath = properties.getProperty("flutter.sdk")
+assert flutterSdkPath != null, "flutter.sdk not set in local.properties"
+apply from: "$flutterSdkPath/packages/flutter_tools/gradle/app_plugin_loader.gradle"
diff --git a/mobile/justfile b/mobile/justfile
new file mode 100644
index 0000000..a16d174
--- /dev/null
+++ b/mobile/justfile
@@ -0,0 +1,18 @@
+default: gen lint
+
+gen:
+ flutter pub get
+ flutter_rust_bridge_codegen
+
+lint:
+ cd native && cargo fmt
+ dart format .
+
+clean:
+ flutter clean
+ cd native && cargo clean
+
+serve *args='':
+ flutter pub run flutter_rust_bridge:serve {{args}}
+
+# vim:expandtab:sw=4:ts=4
diff --git a/mobile/lib/bridge_definitions.dart b/mobile/lib/bridge_definitions.dart
new file mode 100644
index 0000000..a82851a
--- /dev/null
+++ b/mobile/lib/bridge_definitions.dart
@@ -0,0 +1,30 @@
+// AUTO GENERATED FILE, DO NOT EDIT.
+// Generated by `flutter_rust_bridge`@ 1.81.0.
+// ignore_for_file: non_constant_identifier_names, unused_element, duplicate_ignore, directives_ordering, curly_braces_in_flow_control_structures, unnecessary_lambdas, slash_for_doc_comments, prefer_const_literals_to_create_immutables, implicit_dynamic_list_literal, duplicate_import, unused_import, unnecessary_import, prefer_single_quotes, prefer_const_constructors, use_super_parameters, always_use_package_imports, annotate_overrides, invalid_use_of_protected_member, constant_identifier_names, invalid_use_of_internal_member, prefer_is_empty, unnecessary_const
+
+import 'dart:convert';
+import 'dart:async';
+import 'package:meta/meta.dart';
+import 'package:flutter_rust_bridge/flutter_rust_bridge.dart';
+import 'package:uuid/uuid.dart';
+
+abstract class Native {
+ Future platform({dynamic hint});
+
+ FlutterRustBridgeTaskConstMeta get kPlatformConstMeta;
+
+ Future rustReleaseMode({dynamic hint});
+
+ FlutterRustBridgeTaskConstMeta get kRustReleaseModeConstMeta;
+}
+
+enum Platform {
+ Unknown,
+ AndroidBish,
+ Ios,
+ Windows,
+ Unix,
+ MacIntel,
+ MacApple,
+ Wasm,
+}
diff --git a/mobile/lib/bridge_generated.dart b/mobile/lib/bridge_generated.dart
new file mode 100644
index 0000000..bdbc6a2
--- /dev/null
+++ b/mobile/lib/bridge_generated.dart
@@ -0,0 +1,207 @@
+// AUTO GENERATED FILE, DO NOT EDIT.
+// Generated by `flutter_rust_bridge`@ 1.81.0.
+// ignore_for_file: non_constant_identifier_names, unused_element, duplicate_ignore, directives_ordering, curly_braces_in_flow_control_structures, unnecessary_lambdas, slash_for_doc_comments, prefer_const_literals_to_create_immutables, implicit_dynamic_list_literal, duplicate_import, unused_import, unnecessary_import, prefer_single_quotes, prefer_const_constructors, use_super_parameters, always_use_package_imports, annotate_overrides, invalid_use_of_protected_member, constant_identifier_names, invalid_use_of_internal_member, prefer_is_empty, unnecessary_const
+
+import "bridge_definitions.dart";
+import 'dart:convert';
+import 'dart:async';
+import 'package:meta/meta.dart';
+import 'package:flutter_rust_bridge/flutter_rust_bridge.dart';
+import 'package:uuid/uuid.dart';
+
+import 'dart:convert';
+import 'dart:async';
+import 'package:meta/meta.dart';
+import 'package:flutter_rust_bridge/flutter_rust_bridge.dart';
+import 'package:uuid/uuid.dart';
+
+import 'dart:ffi' as ffi;
+
+class NativeImpl implements Native {
+ final NativePlatform _platform;
+ factory NativeImpl(ExternalLibrary dylib) => NativeImpl.raw(NativePlatform(dylib));
+
+ /// Only valid on web/WASM platforms.
+ factory NativeImpl.wasm(FutureOr module) => NativeImpl(module as ExternalLibrary);
+ NativeImpl.raw(this._platform);
+ Future platform({dynamic hint}) {
+ return _platform.executeNormal(FlutterRustBridgeTask(
+ callFfi: (port_) => _platform.inner.wire_platform(port_),
+ parseSuccessData: _wire2api_platform,
+ constMeta: kPlatformConstMeta,
+ argValues: [],
+ hint: hint,
+ ));
+ }
+
+ FlutterRustBridgeTaskConstMeta get kPlatformConstMeta => const FlutterRustBridgeTaskConstMeta(
+ debugName: "platform",
+ argNames: [],
+ );
+
+ Future rustReleaseMode({dynamic hint}) {
+ return _platform.executeNormal(FlutterRustBridgeTask(
+ callFfi: (port_) => _platform.inner.wire_rust_release_mode(port_),
+ parseSuccessData: _wire2api_bool,
+ constMeta: kRustReleaseModeConstMeta,
+ argValues: [],
+ hint: hint,
+ ));
+ }
+
+ FlutterRustBridgeTaskConstMeta get kRustReleaseModeConstMeta => const FlutterRustBridgeTaskConstMeta(
+ debugName: "rust_release_mode",
+ argNames: [],
+ );
+
+ void dispose() {
+ _platform.dispose();
+ }
+// Section: wire2api
+
+ bool _wire2api_bool(dynamic raw) {
+ return raw as bool;
+ }
+
+ int _wire2api_i32(dynamic raw) {
+ return raw as int;
+ }
+
+ Platform _wire2api_platform(dynamic raw) {
+ return Platform.values[raw as int];
+ }
+}
+
+// Section: api2wire
+
+// Section: finalizer
+
+class NativePlatform extends FlutterRustBridgeBase {
+ NativePlatform(ffi.DynamicLibrary dylib) : super(NativeWire(dylib));
+
+// Section: api2wire
+
+// Section: finalizer
+
+// Section: api_fill_to_wire
+}
+
+// ignore_for_file: camel_case_types, non_constant_identifier_names, avoid_positional_boolean_parameters, annotate_overrides, constant_identifier_names
+
+// AUTO GENERATED FILE, DO NOT EDIT.
+//
+// Generated by `package:ffigen`.
+// ignore_for_file: type=lint
+
+/// generated by flutter_rust_bridge
+class NativeWire implements FlutterRustBridgeWireBase {
+ @internal
+ late final dartApi = DartApiDl(init_frb_dart_api_dl);
+
+ /// Holds the symbol lookup function.
+ final ffi.Pointer Function(String symbolName) _lookup;
+
+ /// The symbols are looked up in [dynamicLibrary].
+ NativeWire(ffi.DynamicLibrary dynamicLibrary) : _lookup = dynamicLibrary.lookup;
+
+ /// The symbols are looked up with [lookup].
+ NativeWire.fromLookup(ffi.Pointer Function(String symbolName) lookup) : _lookup = lookup;
+
+ void store_dart_post_cobject(
+ DartPostCObjectFnType ptr,
+ ) {
+ return _store_dart_post_cobject(
+ ptr,
+ );
+ }
+
+ late final _store_dart_post_cobjectPtr =
+ _lookup>('store_dart_post_cobject');
+ late final _store_dart_post_cobject = _store_dart_post_cobjectPtr.asFunction();
+
+ Object get_dart_object(
+ int ptr,
+ ) {
+ return _get_dart_object(
+ ptr,
+ );
+ }
+
+ late final _get_dart_objectPtr = _lookup>('get_dart_object');
+ late final _get_dart_object = _get_dart_objectPtr.asFunction