Compare commits
9 Commits
bf2f6016aa
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| 2ed846ed7b | |||
|
|
13e7685a32 | ||
|
|
6d436fda2f | ||
|
|
1b48e8c710 | ||
| f6c9636db1 | |||
|
|
16d5d3d3ca | ||
| 8dce61743f | |||
| 8deda0c0b4 | |||
|
|
dda4c23fd0 |
Binary file not shown.
@@ -57,6 +57,14 @@ packages:
|
|||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.19.1"
|
version: "1.19.1"
|
||||||
|
crypto:
|
||||||
|
dependency: transitive
|
||||||
|
description:
|
||||||
|
name: crypto
|
||||||
|
sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf
|
||||||
|
url: "https://pub.dev"
|
||||||
|
source: hosted
|
||||||
|
version: "3.0.7"
|
||||||
cupertino_icons:
|
cupertino_icons:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
@@ -150,26 +158,26 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker
|
name: leak_tracker
|
||||||
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
|
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "10.0.9"
|
version: "11.0.2"
|
||||||
leak_tracker_flutter_testing:
|
leak_tracker_flutter_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_flutter_testing
|
name: leak_tracker_flutter_testing
|
||||||
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
|
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.9"
|
version: "3.0.10"
|
||||||
leak_tracker_testing:
|
leak_tracker_testing:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: leak_tracker_testing
|
name: leak_tracker_testing
|
||||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "3.0.1"
|
version: "3.0.2"
|
||||||
lints:
|
lints:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -214,10 +222,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: meta
|
name: meta
|
||||||
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
|
sha256: "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394"
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "1.16.0"
|
version: "1.17.0"
|
||||||
package_config:
|
package_config:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -355,10 +363,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: test_api
|
name: test_api
|
||||||
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
|
sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.7.4"
|
version: "0.7.7"
|
||||||
typed_data:
|
typed_data:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -371,10 +379,10 @@ packages:
|
|||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
name: vector_math
|
name: vector_math
|
||||||
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
|
||||||
url: "https://pub.dev"
|
url: "https://pub.dev"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "2.1.4"
|
version: "2.2.0"
|
||||||
vm_service:
|
vm_service:
|
||||||
dependency: transitive
|
dependency: transitive
|
||||||
description:
|
description:
|
||||||
@@ -408,5 +416,5 @@ packages:
|
|||||||
source: hosted
|
source: hosted
|
||||||
version: "3.1.3"
|
version: "3.1.3"
|
||||||
sdks:
|
sdks:
|
||||||
dart: ">=3.8.1 <4.0.0"
|
dart: ">=3.10.0 <4.0.0"
|
||||||
flutter: ">=3.29.0"
|
flutter: ">=3.38.1"
|
||||||
|
|||||||
47
installJRERelease.sh
Executable file
47
installJRERelease.sh
Executable file
@@ -0,0 +1,47 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -e
|
||||||
|
PLATFORM=$1
|
||||||
|
|
||||||
|
if [ -z "$PLATFORM" ]; then
|
||||||
|
echo "Usage: $0 <platform: macos|linux|windows>"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
PROJECT_DIR=$(pwd)
|
||||||
|
|
||||||
|
case "$PLATFORM" in
|
||||||
|
macos)
|
||||||
|
# Locate Flutter macOS build output
|
||||||
|
JRE_SRC="/Users/kevin/IdeaProjects/k3vinb5_aniyomi_bridge/jre/$PLATFORM/customjre"
|
||||||
|
if [ ! -d "$JRE_SRC" ]; then
|
||||||
|
echo "Error: JRE source folder not found: $JRE_SRC"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
APP_BUNDLE="$PROJECT_DIR/build/macos/Build/Products/Release/unyo.app"
|
||||||
|
RESOURCES_DIR="$APP_BUNDLE/Contents/Resources"
|
||||||
|
mkdir -p "$RESOURCES_DIR/jre"
|
||||||
|
cp -R "$JRE_SRC" "$RESOURCES_DIR/jre/"
|
||||||
|
echo "Copied custom JRE to $RESOURCES_DIR/jre/"
|
||||||
|
;;
|
||||||
|
|
||||||
|
linux)
|
||||||
|
# Linux Flutter executable folder
|
||||||
|
JRE_SRC="/home/kevin/Projects/k3vinb5_aniyomi_bridge/jre/$PLATFORM/customjre"
|
||||||
|
if [ ! -d "$JRE_SRC" ]; then
|
||||||
|
echo "Error: JRE source folder not found: $JRE_SRC"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
BUILD_DIR="$PROJECT_DIR/build/linux/x64/release/bundle"
|
||||||
|
mkdir -p "$BUILD_DIR/jre"
|
||||||
|
cp -R "$JRE_SRC" "$BUILD_DIR/jre/"
|
||||||
|
echo "Copied custom JRE to $BUILD_DIR/jre/"
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "Unsupported platform: $PLATFORM"
|
||||||
|
exit 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
echo "JRE setup complete!"
|
||||||
9
jnigen/headers.yaml
Normal file
9
jnigen/headers.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
output:
|
||||||
|
dart:
|
||||||
|
path: ../lib/jmodels/jheaders.dart
|
||||||
|
structure: single_file
|
||||||
|
|
||||||
|
class_path:
|
||||||
|
- '../assets/aniyomibridge-core.jar'
|
||||||
|
classes:
|
||||||
|
- 'okhttp3.Headers'
|
||||||
9
jnigen/track.yaml
Normal file
9
jnigen/track.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
output:
|
||||||
|
dart:
|
||||||
|
path: ../lib/jmodels/jtrack.dart
|
||||||
|
structure: single_file
|
||||||
|
|
||||||
|
class_path:
|
||||||
|
- '../assets/aniyomibridge-core.jar'
|
||||||
|
classes:
|
||||||
|
- 'eu.kanade.tachiyomi.animesource.model.Track'
|
||||||
@@ -10,6 +10,7 @@ import 'package:k3vinb5_aniyomi_bridge/models/extension.dart';
|
|||||||
import 'package:logger/logger.dart';
|
import 'package:logger/logger.dart';
|
||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
import 'package:path/path.dart' as path;
|
import 'package:path/path.dart' as path;
|
||||||
|
import 'package:crypto/crypto.dart';
|
||||||
import 'package:k3vinb5_aniyomi_bridge/jmodels/jvideo.dart';
|
import 'package:k3vinb5_aniyomi_bridge/jmodels/jvideo.dart';
|
||||||
import 'package:k3vinb5_aniyomi_bridge/jmodels/jsanime.dart';
|
import 'package:k3vinb5_aniyomi_bridge/jmodels/jsanime.dart';
|
||||||
import 'package:k3vinb5_aniyomi_bridge/jmodels/jsepisode.dart';
|
import 'package:k3vinb5_aniyomi_bridge/jmodels/jsepisode.dart';
|
||||||
@@ -68,8 +69,8 @@ class AniyomiBridge {
|
|||||||
_getDylibDir(supportDirectory),
|
_getDylibDir(supportDirectory),
|
||||||
_getClassPath(supportDirectory),
|
_getClassPath(supportDirectory),
|
||||||
);
|
);
|
||||||
_isReady = response.$1;
|
|
||||||
_jniSenderPort = response.$2;
|
_jniSenderPort = response.$2;
|
||||||
|
_isReady = response.$1;
|
||||||
_jniReceiverPort.listen((message) {
|
_jniReceiverPort.listen((message) {
|
||||||
if (message is JniIsolateError) {
|
if (message is JniIsolateError) {
|
||||||
final id = message.id;
|
final id = message.id;
|
||||||
@@ -86,7 +87,8 @@ class AniyomiBridge {
|
|||||||
}
|
}
|
||||||
completer.complete(message.results);
|
completer.complete(message.results);
|
||||||
}
|
}
|
||||||
});}
|
});
|
||||||
|
}
|
||||||
|
|
||||||
bool isReady() {
|
bool isReady() {
|
||||||
return _isReady;
|
return _isReady;
|
||||||
@@ -369,7 +371,19 @@ class AniyomiBridge {
|
|||||||
_aniyomiBridgeJarName,
|
_aniyomiBridgeJarName,
|
||||||
);
|
);
|
||||||
File aniyomiBridgeCore = File(aniyomiBridgeCorePath);
|
File aniyomiBridgeCore = File(aniyomiBridgeCorePath);
|
||||||
|
bool needsCopy = false;
|
||||||
if (!(await aniyomiBridgeCore.exists())) {
|
if (!(await aniyomiBridgeCore.exists())) {
|
||||||
|
needsCopy = true;
|
||||||
|
} else {
|
||||||
|
String assetPath = "$_packageAssetsDir/$_aniyomiBridgeJarName";
|
||||||
|
String existingFileHash = await _computeFileHash(aniyomiBridgeCore);
|
||||||
|
String assetHash = await _computeAssetHash(assetPath);
|
||||||
|
if (existingFileHash != assetHash) {
|
||||||
|
needsCopy = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (needsCopy) {
|
||||||
|
_logger.i("Copying new aniyomiBridgeCore binary to $aniyomiBridgeCorePath");
|
||||||
await _copyAssetToFile(
|
await _copyAssetToFile(
|
||||||
"$_packageAssetsDir/$_aniyomiBridgeJarName",
|
"$_packageAssetsDir/$_aniyomiBridgeJarName",
|
||||||
aniyomiBridgeCorePath,
|
aniyomiBridgeCorePath,
|
||||||
@@ -377,6 +391,19 @@ class AniyomiBridge {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Future<String> _computeFileHash(File file) async {
|
||||||
|
final bytes = await file.readAsBytes();
|
||||||
|
final digest = sha256.convert(bytes);
|
||||||
|
return digest.toString();
|
||||||
|
}
|
||||||
|
|
||||||
|
Future<String> _computeAssetHash(String assetPath) async {
|
||||||
|
final byteData = await rootBundle.load(assetPath);
|
||||||
|
final bytes = byteData.buffer.asUint8List();
|
||||||
|
final digest = sha256.convert(bytes);
|
||||||
|
return digest.toString();
|
||||||
|
}
|
||||||
|
|
||||||
Future<File> _copyAssetToFile(String assetPath, String outPath) async {
|
Future<File> _copyAssetToFile(String assetPath, String outPath) async {
|
||||||
final byteData = await rootBundle.load(assetPath);
|
final byteData = await rootBundle.load(assetPath);
|
||||||
final buffer = byteData.buffer.asUint8List();
|
final buffer = byteData.buffer.asUint8List();
|
||||||
@@ -426,9 +453,8 @@ class AniyomiBridge {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Creates a stable string representation of the args
|
||||||
String _generateCacheKey(JniIsolateMessageType messageType, Map<String, dynamic> args) {
|
String _generateCacheKey(JniIsolateMessageType messageType, Map<String, dynamic> args) {
|
||||||
// Create a stable string representation of the args
|
|
||||||
// final argsString = jsonEncode(args);
|
|
||||||
final argsString = args.entries
|
final argsString = args.entries
|
||||||
.map((entry) => "${entry.key}:${_getStableHashCode(entry.value)}")
|
.map((entry) => "${entry.key}:${_getStableHashCode(entry.value)}")
|
||||||
.join(":").hashCode;
|
.join(":").hashCode;
|
||||||
@@ -437,13 +463,13 @@ class AniyomiBridge {
|
|||||||
|
|
||||||
int _getStableHashCode(dynamic value) {
|
int _getStableHashCode(dynamic value) {
|
||||||
if (value is JSEpisode) {
|
if (value is JSEpisode) {
|
||||||
return value.getUrl().toDartString().hashCode;
|
return "${value.getUrl().toDartString()}_${value.getEpisode_number()}".hashCode;
|
||||||
}else if (value is JSAnime) {
|
}else if (value is JSAnime) {
|
||||||
return value.getUrl().toDartString().hashCode;
|
return value.getTitle().toDartString().hashCode;
|
||||||
} else if (value is JSManga) {
|
} else if (value is JSManga) {
|
||||||
return value.getUrl().toDartString().hashCode;
|
return value.getTitle().toDartString().hashCode;
|
||||||
} else if (value is JSChapter) {
|
} else if (value is JSChapter) {
|
||||||
return value.getUrl().toDartString().hashCode;
|
return "${value.getUrl().toDartString().hashCode}_${value.getChapter_number()}".hashCode;
|
||||||
}
|
}
|
||||||
return value.hashCode;
|
return value.hashCode;
|
||||||
}
|
}
|
||||||
|
|||||||
1472
lib/jmodels/jheaders.dart
Normal file
1472
lib/jmodels/jheaders.dart
Normal file
File diff suppressed because it is too large
Load Diff
634
lib/jmodels/jtrack.dart
Normal file
634
lib/jmodels/jtrack.dart
Normal file
@@ -0,0 +1,634 @@
|
|||||||
|
// AUTO GENERATED BY JNIGEN 0.14.2. DO NOT EDIT!
|
||||||
|
|
||||||
|
// ignore_for_file: annotate_overrides
|
||||||
|
// ignore_for_file: argument_type_not_assignable
|
||||||
|
// ignore_for_file: camel_case_extensions
|
||||||
|
// ignore_for_file: camel_case_types
|
||||||
|
// ignore_for_file: constant_identifier_names
|
||||||
|
// ignore_for_file: comment_references
|
||||||
|
// ignore_for_file: doc_directive_unknown
|
||||||
|
// ignore_for_file: file_names
|
||||||
|
// ignore_for_file: inference_failure_on_untyped_parameter
|
||||||
|
// ignore_for_file: invalid_internal_annotation
|
||||||
|
// ignore_for_file: invalid_use_of_internal_member
|
||||||
|
// ignore_for_file: library_prefixes
|
||||||
|
// ignore_for_file: lines_longer_than_80_chars
|
||||||
|
// ignore_for_file: no_leading_underscores_for_library_prefixes
|
||||||
|
// ignore_for_file: no_leading_underscores_for_local_identifiers
|
||||||
|
// ignore_for_file: non_constant_identifier_names
|
||||||
|
// ignore_for_file: only_throw_errors
|
||||||
|
// ignore_for_file: overridden_fields
|
||||||
|
// ignore_for_file: prefer_double_quotes
|
||||||
|
// ignore_for_file: unintended_html_in_doc_comment
|
||||||
|
// ignore_for_file: unnecessary_cast
|
||||||
|
// ignore_for_file: unnecessary_non_null_assertion
|
||||||
|
// ignore_for_file: unnecessary_parenthesis
|
||||||
|
// ignore_for_file: unused_element
|
||||||
|
// ignore_for_file: unused_field
|
||||||
|
// ignore_for_file: unused_import
|
||||||
|
// ignore_for_file: unused_local_variable
|
||||||
|
// ignore_for_file: unused_shown_name
|
||||||
|
// ignore_for_file: use_super_parameters
|
||||||
|
|
||||||
|
import 'dart:core' show Object, String, bool, double, int;
|
||||||
|
import 'dart:core' as core$_;
|
||||||
|
|
||||||
|
import 'package:jni/_internal.dart' as jni$_;
|
||||||
|
import 'package:jni/jni.dart' as jni$_;
|
||||||
|
|
||||||
|
/// from: `eu.kanade.tachiyomi.animesource.model.Track$Companion`
|
||||||
|
class Track$Companion extends jni$_.JObject {
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
final jni$_.JObjType<Track$Companion> $type;
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
Track$Companion.fromReference(jni$_.JReference reference)
|
||||||
|
: $type = type,
|
||||||
|
super.fromReference(reference);
|
||||||
|
|
||||||
|
static final _class = jni$_.JClass.forName(
|
||||||
|
r'eu/kanade/tachiyomi/animesource/model/Track$Companion',
|
||||||
|
);
|
||||||
|
|
||||||
|
/// The type which includes information such as the signature of this class.
|
||||||
|
static const nullableType = $Track$Companion$NullableType();
|
||||||
|
static const type = $Track$Companion$Type();
|
||||||
|
static final _id_serializer = _class.instanceMethodId(
|
||||||
|
r'serializer',
|
||||||
|
r'()Lkotlinx/serialization/KSerializer;',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _serializer =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_CallObjectMethod')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `public final kotlinx.serialization.KSerializer<eu.kanade.tachiyomi.animesource.model.Track> serializer()`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
jni$_.JObject serializer() {
|
||||||
|
return _serializer(
|
||||||
|
reference.pointer,
|
||||||
|
_id_serializer as jni$_.JMethodIDPtr,
|
||||||
|
).object<jni$_.JObject>(const jni$_.JObjectType());
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _id_new$ = _class.constructorId(
|
||||||
|
r'(Lkotlin/jvm/internal/DefaultConstructorMarker;)V',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _new$ =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
jni$_.VarArgs<(jni$_.Pointer<jni$_.Void>,)>,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_NewObject')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `synthetic public void <init>(kotlin.jvm.internal.DefaultConstructorMarker defaultConstructorMarker)`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
factory Track$Companion(jni$_.JObject? defaultConstructorMarker) {
|
||||||
|
final _$defaultConstructorMarker =
|
||||||
|
defaultConstructorMarker?.reference ?? jni$_.jNullReference;
|
||||||
|
return Track$Companion.fromReference(
|
||||||
|
_new$(
|
||||||
|
_class.reference.pointer,
|
||||||
|
_id_new$ as jni$_.JMethodIDPtr,
|
||||||
|
_$defaultConstructorMarker.pointer,
|
||||||
|
).reference,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final class $Track$Companion$NullableType
|
||||||
|
extends jni$_.JObjType<Track$Companion?> {
|
||||||
|
@jni$_.internal
|
||||||
|
const $Track$Companion$NullableType();
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
String get signature =>
|
||||||
|
r'Leu/kanade/tachiyomi/animesource/model/Track$Companion;';
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
Track$Companion? fromReference(jni$_.JReference reference) =>
|
||||||
|
reference.isNull ? null : Track$Companion.fromReference(reference);
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
jni$_.JObjType get superType => const jni$_.JObjectType();
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
jni$_.JObjType<Track$Companion?> get nullableType => this;
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
final superCount = 1;
|
||||||
|
|
||||||
|
@core$_.override
|
||||||
|
int get hashCode => ($Track$Companion$NullableType).hashCode;
|
||||||
|
|
||||||
|
@core$_.override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return other.runtimeType == ($Track$Companion$NullableType) &&
|
||||||
|
other is $Track$Companion$NullableType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final class $Track$Companion$Type extends jni$_.JObjType<Track$Companion> {
|
||||||
|
@jni$_.internal
|
||||||
|
const $Track$Companion$Type();
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
String get signature =>
|
||||||
|
r'Leu/kanade/tachiyomi/animesource/model/Track$Companion;';
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
Track$Companion fromReference(jni$_.JReference reference) =>
|
||||||
|
Track$Companion.fromReference(reference);
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
jni$_.JObjType get superType => const jni$_.JObjectType();
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
jni$_.JObjType<Track$Companion?> get nullableType =>
|
||||||
|
const $Track$Companion$NullableType();
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
final superCount = 1;
|
||||||
|
|
||||||
|
@core$_.override
|
||||||
|
int get hashCode => ($Track$Companion$Type).hashCode;
|
||||||
|
|
||||||
|
@core$_.override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return other.runtimeType == ($Track$Companion$Type) &&
|
||||||
|
other is $Track$Companion$Type;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// from: `eu.kanade.tachiyomi.animesource.model.Track`
|
||||||
|
class JTrack extends jni$_.JObject {
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
final jni$_.JObjType<JTrack> $type;
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
JTrack.fromReference(jni$_.JReference reference)
|
||||||
|
: $type = type,
|
||||||
|
super.fromReference(reference);
|
||||||
|
|
||||||
|
static final _class = jni$_.JClass.forName(
|
||||||
|
r'eu/kanade/tachiyomi/animesource/model/Track',
|
||||||
|
);
|
||||||
|
|
||||||
|
/// The type which includes information such as the signature of this class.
|
||||||
|
static const nullableType = $Track$NullableType();
|
||||||
|
static const type = $Track$Type();
|
||||||
|
static final _id_Companion = _class.staticFieldId(
|
||||||
|
r'Companion',
|
||||||
|
r'Leu/kanade/tachiyomi/animesource/model/Track$Companion;',
|
||||||
|
);
|
||||||
|
|
||||||
|
/// from: `static public final eu.kanade.tachiyomi.animesource.model.Track$Companion Companion`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
static Track$Companion get Companion =>
|
||||||
|
_id_Companion.get(_class, const $Track$Companion$Type());
|
||||||
|
|
||||||
|
static final _id_new$ = _class.constructorId(
|
||||||
|
r'(Ljava/lang/String;Ljava/lang/String;)V',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _new$ =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
jni$_.VarArgs<
|
||||||
|
(jni$_.Pointer<jni$_.Void>, jni$_.Pointer<jni$_.Void>)
|
||||||
|
>,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_NewObject')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `public void <init>(java.lang.String string, java.lang.String string1)`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
factory JTrack(jni$_.JString string, jni$_.JString string1) {
|
||||||
|
final _$string = string.reference;
|
||||||
|
final _$string1 = string1.reference;
|
||||||
|
return JTrack.fromReference(
|
||||||
|
_new$(
|
||||||
|
_class.reference.pointer,
|
||||||
|
_id_new$ as jni$_.JMethodIDPtr,
|
||||||
|
_$string.pointer,
|
||||||
|
_$string1.pointer,
|
||||||
|
).reference,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _id_getUrl = _class.instanceMethodId(
|
||||||
|
r'getUrl',
|
||||||
|
r'()Ljava/lang/String;',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _getUrl =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_CallObjectMethod')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `public final java.lang.String getUrl()`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
jni$_.JString getUrl() {
|
||||||
|
return _getUrl(
|
||||||
|
reference.pointer,
|
||||||
|
_id_getUrl as jni$_.JMethodIDPtr,
|
||||||
|
).object<jni$_.JString>(const jni$_.JStringType());
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _id_getLang = _class.instanceMethodId(
|
||||||
|
r'getLang',
|
||||||
|
r'()Ljava/lang/String;',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _getLang =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_CallObjectMethod')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `public final java.lang.String getLang()`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
jni$_.JString getLang() {
|
||||||
|
return _getLang(
|
||||||
|
reference.pointer,
|
||||||
|
_id_getLang as jni$_.JMethodIDPtr,
|
||||||
|
).object<jni$_.JString>(const jni$_.JStringType());
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _id_component1 = _class.instanceMethodId(
|
||||||
|
r'component1',
|
||||||
|
r'()Ljava/lang/String;',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _component1 =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_CallObjectMethod')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `public final java.lang.String component1()`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
jni$_.JString component1() {
|
||||||
|
return _component1(
|
||||||
|
reference.pointer,
|
||||||
|
_id_component1 as jni$_.JMethodIDPtr,
|
||||||
|
).object<jni$_.JString>(const jni$_.JStringType());
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _id_component2 = _class.instanceMethodId(
|
||||||
|
r'component2',
|
||||||
|
r'()Ljava/lang/String;',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _component2 =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_CallObjectMethod')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `public final java.lang.String component2()`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
jni$_.JString component2() {
|
||||||
|
return _component2(
|
||||||
|
reference.pointer,
|
||||||
|
_id_component2 as jni$_.JMethodIDPtr,
|
||||||
|
).object<jni$_.JString>(const jni$_.JStringType());
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _id_copy = _class.instanceMethodId(
|
||||||
|
r'copy',
|
||||||
|
r'(Ljava/lang/String;Ljava/lang/String;)Leu/kanade/tachiyomi/animesource/model/Track;',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _copy =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
jni$_.VarArgs<
|
||||||
|
(jni$_.Pointer<jni$_.Void>, jni$_.Pointer<jni$_.Void>)
|
||||||
|
>,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_CallObjectMethod')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `public final eu.kanade.tachiyomi.animesource.model.Track copy(java.lang.String string, java.lang.String string1)`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
JTrack copy(jni$_.JString string, jni$_.JString string1) {
|
||||||
|
final _$string = string.reference;
|
||||||
|
final _$string1 = string1.reference;
|
||||||
|
return _copy(
|
||||||
|
reference.pointer,
|
||||||
|
_id_copy as jni$_.JMethodIDPtr,
|
||||||
|
_$string.pointer,
|
||||||
|
_$string1.pointer,
|
||||||
|
).object<JTrack>(const $Track$Type());
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _id_toString$1 = _class.instanceMethodId(
|
||||||
|
r'toString',
|
||||||
|
r'()Ljava/lang/String;',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _toString$1 =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_CallObjectMethod')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `public java.lang.String toString()`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
jni$_.JString toString$1() {
|
||||||
|
return _toString$1(
|
||||||
|
reference.pointer,
|
||||||
|
_id_toString$1 as jni$_.JMethodIDPtr,
|
||||||
|
).object<jni$_.JString>(const jni$_.JStringType());
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _id_hashCode$1 = _class.instanceMethodId(r'hashCode', r'()I');
|
||||||
|
|
||||||
|
static final _hashCode$1 =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_CallIntMethod')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `public int hashCode()`
|
||||||
|
int hashCode$1() {
|
||||||
|
return _hashCode$1(
|
||||||
|
reference.pointer,
|
||||||
|
_id_hashCode$1 as jni$_.JMethodIDPtr,
|
||||||
|
).integer;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _id_equals = _class.instanceMethodId(
|
||||||
|
r'equals',
|
||||||
|
r'(Ljava/lang/Object;)Z',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _equals =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
jni$_.VarArgs<(jni$_.Pointer<jni$_.Void>,)>,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_CallBooleanMethod')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `public boolean equals(java.lang.Object object)`
|
||||||
|
bool equals(jni$_.JObject? object) {
|
||||||
|
final _$object = object?.reference ?? jni$_.jNullReference;
|
||||||
|
return _equals(
|
||||||
|
reference.pointer,
|
||||||
|
_id_equals as jni$_.JMethodIDPtr,
|
||||||
|
_$object.pointer,
|
||||||
|
).boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
static final _id_new$1 = _class.constructorId(
|
||||||
|
r'(ILjava/lang/String;Ljava/lang/String;Lkotlinx/serialization/internal/SerializationConstructorMarker;)V',
|
||||||
|
);
|
||||||
|
|
||||||
|
static final _new$1 =
|
||||||
|
jni$_.ProtectedJniExtensions.lookup<
|
||||||
|
jni$_.NativeFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
jni$_.VarArgs<
|
||||||
|
(
|
||||||
|
jni$_.Int32,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
)
|
||||||
|
>,
|
||||||
|
)
|
||||||
|
>
|
||||||
|
>('globalEnv_NewObject')
|
||||||
|
.asFunction<
|
||||||
|
jni$_.JniResult Function(
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.JMethodIDPtr,
|
||||||
|
int,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
jni$_.Pointer<jni$_.Void>,
|
||||||
|
)
|
||||||
|
>();
|
||||||
|
|
||||||
|
/// from: `synthetic public void <init>(int i, java.lang.String string, java.lang.String string1, kotlinx.serialization.internal.SerializationConstructorMarker serializationConstructorMarker)`
|
||||||
|
/// The returned object must be released after use, by calling the [release] method.
|
||||||
|
factory JTrack.new$1(
|
||||||
|
int i,
|
||||||
|
jni$_.JString? string,
|
||||||
|
jni$_.JString? string1,
|
||||||
|
jni$_.JObject? serializationConstructorMarker,
|
||||||
|
) {
|
||||||
|
final _$string = string?.reference ?? jni$_.jNullReference;
|
||||||
|
final _$string1 = string1?.reference ?? jni$_.jNullReference;
|
||||||
|
final _$serializationConstructorMarker =
|
||||||
|
serializationConstructorMarker?.reference ?? jni$_.jNullReference;
|
||||||
|
return JTrack.fromReference(
|
||||||
|
_new$1(
|
||||||
|
_class.reference.pointer,
|
||||||
|
_id_new$1 as jni$_.JMethodIDPtr,
|
||||||
|
i,
|
||||||
|
_$string.pointer,
|
||||||
|
_$string1.pointer,
|
||||||
|
_$serializationConstructorMarker.pointer,
|
||||||
|
).reference,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final class $Track$NullableType extends jni$_.JObjType<JTrack?> {
|
||||||
|
@jni$_.internal
|
||||||
|
const $Track$NullableType();
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
String get signature => r'Leu/kanade/tachiyomi/animesource/model/Track;';
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
JTrack? fromReference(jni$_.JReference reference) =>
|
||||||
|
reference.isNull ? null : JTrack.fromReference(reference);
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
jni$_.JObjType get superType => const jni$_.JObjectType();
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
jni$_.JObjType<JTrack?> get nullableType => this;
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
final superCount = 1;
|
||||||
|
|
||||||
|
@core$_.override
|
||||||
|
int get hashCode => ($Track$NullableType).hashCode;
|
||||||
|
|
||||||
|
@core$_.override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return other.runtimeType == ($Track$NullableType) &&
|
||||||
|
other is $Track$NullableType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
final class $Track$Type extends jni$_.JObjType<JTrack> {
|
||||||
|
@jni$_.internal
|
||||||
|
const $Track$Type();
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
String get signature => r'Leu/kanade/tachiyomi/animesource/model/Track;';
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
JTrack fromReference(jni$_.JReference reference) =>
|
||||||
|
JTrack.fromReference(reference);
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
jni$_.JObjType get superType => const jni$_.JObjectType();
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
jni$_.JObjType<JTrack?> get nullableType => const $Track$NullableType();
|
||||||
|
|
||||||
|
@jni$_.internal
|
||||||
|
@core$_.override
|
||||||
|
final superCount = 1;
|
||||||
|
|
||||||
|
@core$_.override
|
||||||
|
int get hashCode => ($Track$Type).hashCode;
|
||||||
|
|
||||||
|
@core$_.override
|
||||||
|
bool operator ==(Object other) {
|
||||||
|
return other.runtimeType == ($Track$Type) && other is $Track$Type;
|
||||||
|
}
|
||||||
|
}
|
||||||
11
pubspec.yaml
11
pubspec.yaml
@@ -1,25 +1,28 @@
|
|||||||
name: k3vinb5_aniyomi_bridge
|
name: k3vinb5_aniyomi_bridge
|
||||||
description: "A new Flutter package project."
|
description: "A new Flutter package project."
|
||||||
version: 0.0.1
|
version: 0.0.1
|
||||||
homepage:
|
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ^3.8.1
|
sdk: ^3.10.0
|
||||||
flutter: ">=1.17.0"
|
flutter: ">=3.38.1"
|
||||||
|
|
||||||
dependencies:
|
dependencies:
|
||||||
flutter:
|
flutter:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
|
# FFI / Native Integration
|
||||||
jni: ^0.14.2
|
jni: ^0.14.2
|
||||||
jnigen: ^0.14.2
|
jnigen: ^0.14.2
|
||||||
|
# Logger
|
||||||
logger: ^2.6.2
|
logger: ^2.6.2
|
||||||
|
# Storage
|
||||||
path: ^1.9.1
|
path: ^1.9.1
|
||||||
path_provider: ^2.1.5
|
path_provider: ^2.1.5
|
||||||
|
crypto: ^3.0.7
|
||||||
|
|
||||||
dev_dependencies:
|
dev_dependencies:
|
||||||
flutter_test:
|
flutter_test:
|
||||||
sdk: flutter
|
sdk: flutter
|
||||||
flutter_lints: ^5.0.0
|
flutter_lints: ^6.0.0
|
||||||
|
|
||||||
# For information on the generic Dart part of this file, see the
|
# For information on the generic Dart part of this file, see the
|
||||||
# following page: https://dart.dev/tools/pub/pubspec
|
# following page: https://dart.dev/tools/pub/pubspec
|
||||||
|
|||||||
Reference in New Issue
Block a user