diff --git a/useragent/.dart_tool/package_config.json b/useragent/.dart_tool/package_config.json index ce1c5aa..9c93efa 100644 --- a/useragent/.dart_tool/package_config.json +++ b/useragent/.dart_tool/package_config.json @@ -37,6 +37,18 @@ "packageUri": "lib/", "languageVersion": "3.4" }, + { + "name": "auto_route", + "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/auto_route-11.1.0", + "packageUri": "lib/", + "languageVersion": "3.0" + }, + { + "name": "auto_route_generator", + "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/auto_route_generator-10.4.0", + "packageUri": "lib/", + "languageVersion": "3.4" + }, { "name": "biometric_signature", "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/biometric_signature-10.2.0", @@ -213,7 +225,7 @@ }, { "name": "flutter_adaptive_scaffold", - "rootUri": "file:///Users/kaska/.pub-cache/git/flutter_adaptive_scaffold-4852b5041d8d9ed6cacb4dc4c6723086f0612e37/", + "rootUri": "file:///Users/kaska/.pub-cache/git/flutter_adaptive_scaffold-b2e3615901a7ab837cb7fc35efbfcf8b55f27638/", "packageUri": "lib/", "languageVersion": "3.10" }, @@ -355,6 +367,12 @@ "packageUri": "lib/", "languageVersion": "3.7" }, + { + "name": "hotreloader", + "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/hotreloader-4.3.0", + "packageUri": "lib/", + "languageVersion": "3.0" + }, { "name": "http", "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/http-1.6.0", @@ -415,6 +433,12 @@ "packageUri": "lib/", "languageVersion": "3.2" }, + { + "name": "lean_builder", + "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/lean_builder-0.1.6", + "packageUri": "lib/", + "languageVersion": "3.8" + }, { "name": "lints", "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/lints-6.1.0", @@ -813,9 +837,9 @@ }, { "name": "watcher", - "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/watcher-1.2.1", + "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/watcher-1.1.4", "packageUri": "lib/", - "languageVersion": "3.4" + "languageVersion": "3.1" }, { "name": "web", @@ -853,6 +877,12 @@ "packageUri": "lib/", "languageVersion": "3.3" }, + { + "name": "xxh3", + "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/xxh3-1.2.0", + "packageUri": "lib/", + "languageVersion": "2.16" + }, { "name": "yaml", "rootUri": "file:///Users/kaska/.pub-cache/hosted/pub.dev/yaml-3.1.3", diff --git a/useragent/.dart_tool/package_graph.json b/useragent/.dart_tool/package_graph.json index c9e0bdd..2588cea 100644 --- a/useragent/.dart_tool/package_graph.json +++ b/useragent/.dart_tool/package_graph.json @@ -7,6 +7,7 @@ "name": "arbiter", "version": "1.0.0+1", "dependencies": [ + "auto_route", "biometric_signature", "cryptography", "cryptography_flutter", @@ -24,12 +25,28 @@ "talker" ], "devDependencies": [ + "auto_route_generator", "build_runner", "flutter_lints", "flutter_test", "riverpod_generator" ] }, + { + "name": "auto_route_generator", + "version": "10.4.0", + "dependencies": [ + "analyzer", + "auto_route", + "build", + "code_builder", + "dart_style", + "glob", + "lean_builder", + "path", + "source_gen" + ] + }, { "name": "build_runner", "version": "2.12.2", @@ -110,6 +127,17 @@ "vector_math" ] }, + { + "name": "auto_route", + "version": "11.1.0", + "dependencies": [ + "collection", + "flutter", + "meta", + "path", + "web" + ] + }, { "name": "flutter_hooks", "version": "0.21.3+1", @@ -206,19 +234,6 @@ "flutter" ] }, - { - "name": "hooks_riverpod", - "version": "3.1.0", - "dependencies": [ - "collection", - "flutter", - "flutter_hooks", - "flutter_riverpod", - "flutter_test", - "riverpod", - "state_notifier" - ] - }, { "name": "riverpod", "version": "3.1.0", @@ -240,7 +255,7 @@ }, { "name": "flutter_adaptive_scaffold", - "version": "0.3.3+1", + "version": "1.0.0+1", "dependencies": [ "flutter" ] @@ -271,123 +286,16 @@ "string_scanner" ] }, - { - "name": "web_socket_channel", - "version": "3.0.3", - "dependencies": [ - "async", - "crypto", - "stream_channel", - "web", - "web_socket" - ] - }, - { - "name": "watcher", - "version": "1.2.1", - "dependencies": [ - "async", - "path" - ] - }, - { - "name": "stream_transform", - "version": "2.1.1", - "dependencies": [] - }, - { - "name": "shelf_web_socket", - "version": "3.0.0", - "dependencies": [ - "shelf", - "stream_channel", - "web_socket_channel" - ] - }, - { - "name": "shelf", - "version": "1.4.2", - "dependencies": [ - "async", - "collection", - "http_parser", - "path", - "stack_trace", - "stream_channel" - ] - }, - { - "name": "pub_semver", - "version": "2.2.0", - "dependencies": [ - "collection" - ] - }, - { - "name": "pool", - "version": "1.5.2", - "dependencies": [ - "async", - "stack_trace" - ] - }, { "name": "path", "version": "1.9.1", "dependencies": [] }, - { - "name": "package_config", - "version": "2.2.0", - "dependencies": [ - "path" - ] - }, - { - "name": "mime", - "version": "2.0.0", - "dependencies": [] - }, { "name": "meta", "version": "1.17.0", "dependencies": [] }, - { - "name": "logging", - "version": "1.3.0", - "dependencies": [] - }, - { - "name": "json_annotation", - "version": "4.11.0", - "dependencies": [ - "meta" - ] - }, - { - "name": "io", - "version": "1.0.5", - "dependencies": [ - "meta", - "path", - "string_scanner" - ] - }, - { - "name": "http_multi_server", - "version": "3.2.2", - "dependencies": [ - "async" - ] - }, - { - "name": "graphs", - "version": "2.3.2", - "dependencies": [ - "collection" - ] - }, { "name": "glob", "version": "2.1.3", @@ -399,6 +307,11 @@ "string_scanner" ] }, + { + "name": "collection", + "version": "1.19.1", + "dependencies": [] + }, { "name": "dart_style", "version": "3.1.3", @@ -414,43 +327,64 @@ ] }, { - "name": "crypto", - "version": "3.0.7", + "name": "async", + "version": "2.13.0", "dependencies": [ - "typed_data" + "collection", + "meta" ] }, { - "name": "convert", - "version": "3.1.2", - "dependencies": [ - "typed_data" - ] - }, - { - "name": "collection", - "version": "1.19.1", + "name": "xxh3", + "version": "1.2.0", "dependencies": [] }, { - "name": "code_builder", - "version": "4.11.1", + "name": "stack_trace", + "version": "1.12.1", "dependencies": [ - "built_collection", - "built_value", - "collection", - "matcher", - "meta" + "path" ] }, { - "name": "built_value", - "version": "8.12.4", + "name": "hotreloader", + "version": "4.3.0", "dependencies": [ - "built_collection", "collection", - "fixnum", - "meta" + "logging", + "path", + "stream_transform", + "vm_service", + "watcher" + ] + }, + { + "name": "frontend_server_client", + "version": "4.0.0", + "dependencies": [ + "async", + "path" + ] + }, + { + "name": "args", + "version": "2.7.0", + "dependencies": [] + }, + { + "name": "ansicolor", + "version": "2.0.3", + "dependencies": [] + }, + { + "name": "matcher", + "version": "0.12.17", + "dependencies": [ + "async", + "meta", + "stack_trace", + "term_glyph", + "test_api" ] }, { @@ -459,21 +393,25 @@ "dependencies": [] }, { - "name": "build_daemon", - "version": "4.1.1", + "name": "test_api", + "version": "0.7.7", "dependencies": [ - "built_collection", - "built_value", - "crypto", - "http_multi_server", - "logging", - "path", - "pool", - "shelf", - "shelf_web_socket", - "stream_transform", - "watcher", - "web_socket_channel" + "async", + "boolean_selector", + "collection", + "meta", + "source_span", + "stack_trace", + "stream_channel", + "string_scanner", + "term_glyph" + ] + }, + { + "name": "stream_channel", + "version": "2.1.4", + "dependencies": [ + "async" ] }, { @@ -487,60 +425,34 @@ ] }, { - "name": "build", - "version": "4.0.4", - "dependencies": [ - "analyzer", - "crypto", - "glob", - "logging", - "package_config", - "path" - ] - }, - { - "name": "async", - "version": "2.13.0", - "dependencies": [ - "collection", - "meta" - ] - }, - { - "name": "args", - "version": "2.7.0", - "dependencies": [] - }, - { - "name": "analyzer", - "version": "8.4.1", - "dependencies": [ - "_fe_analyzer_shared", - "collection", - "convert", - "crypto", - "glob", - "meta", - "package_config", - "path", - "pub_semver", - "source_span", - "watcher", - "yaml" - ] - }, - { - "name": "source_gen", - "version": "4.2.1", + "name": "test", + "version": "1.26.3", "dependencies": [ "analyzer", "async", - "build", - "dart_style", - "glob", + "boolean_selector", + "collection", + "coverage", + "http_multi_server", + "io", + "js", + "matcher", + "node_preamble", + "package_config", "path", - "pub_semver", + "pool", + "shelf", + "shelf_packages_handler", + "shelf_static", + "shelf_web_socket", "source_span", + "stack_trace", + "stream_channel", + "test_api", + "test_core", + "typed_data", + "web_socket_channel", + "webkit_inspection_protocol", "yaml" ] }, @@ -559,44 +471,46 @@ ] }, { - "name": "mockito", - "version": "5.6.3", + "name": "test_core", + "version": "0.6.12", "dependencies": [ "analyzer", - "build", - "code_builder", + "args", + "async", + "boolean_selector", "collection", - "dart_style", - "matcher", + "coverage", + "frontend_server_client", + "glob", + "io", "meta", + "package_config", "path", - "source_gen", - "test_api" + "pool", + "source_map_stack_trace", + "source_maps", + "source_span", + "stack_trace", + "stream_channel", + "test_api", + "vm_service", + "yaml" ] }, { - "name": "analyzer_buffer", - "version": "0.1.11", + "name": "freezed_annotation", + "version": "3.1.0", "dependencies": [ - "analyzer", "collection", - "meta", - "path", - "source_gen" + "json_annotation", + "meta" ] }, { - "name": "lints", - "version": "6.1.0", + "name": "vector_math", + "version": "2.2.0", "dependencies": [] }, - { - "name": "stream_channel", - "version": "2.1.4", - "dependencies": [ - "async" - ] - }, { "name": "leak_tracker_flutter_testing", "version": "3.0.10", @@ -608,23 +522,6 @@ "meta" ] }, - { - "name": "vector_math", - "version": "2.2.0", - "dependencies": [] - }, - { - "name": "stack_trace", - "version": "1.12.1", - "dependencies": [ - "path" - ] - }, - { - "name": "clock", - "version": "1.1.2", - "dependencies": [] - }, { "name": "fake_async", "version": "1.3.3", @@ -634,30 +531,9 @@ ] }, { - "name": "matcher", - "version": "0.12.17", - "dependencies": [ - "async", - "meta", - "stack_trace", - "term_glyph", - "test_api" - ] - }, - { - "name": "test_api", - "version": "0.7.7", - "dependencies": [ - "async", - "boolean_selector", - "collection", - "meta", - "source_span", - "stack_trace", - "stream_channel", - "string_scanner", - "term_glyph" - ] + "name": "clock", + "version": "1.1.2", + "dependencies": [] }, { "name": "web", @@ -678,27 +554,6 @@ "version": "2.3.1", "dependencies": [] }, - { - "name": "http", - "version": "1.6.0", - "dependencies": [ - "async", - "http_parser", - "meta", - "web" - ] - }, - { - "name": "googleapis_auth", - "version": "2.0.0", - "dependencies": [ - "args", - "crypto", - "google_identity_services_web", - "http", - "http_parser" - ] - }, { "name": "fixnum", "version": "1.1.1", @@ -751,37 +606,10 @@ ] }, { - "name": "typed_data", - "version": "1.4.0", + "name": "flutter_web_plugins", + "version": "0.0.0", "dependencies": [ - "collection" - ] - }, - { - "name": "ffi", - "version": "2.2.0", - "dependencies": [] - }, - { - "name": "talker_flutter", - "version": "5.1.15", - "dependencies": [ - "flutter", - "group_button", - "path_provider", - "share_plus", - "talker", - "web" - ] - }, - { - "name": "rive", - "version": "0.14.4", - "dependencies": [ - "flutter", - "flutter_web_plugins", - "meta", - "rive_native" + "flutter" ] }, { @@ -791,15 +619,6 @@ "flutter" ] }, - { - "name": "freezed_annotation", - "version": "3.1.0", - "dependencies": [ - "collection", - "json_annotation", - "meta" - ] - }, { "name": "flutter_spinkit", "version": "5.2.2", @@ -807,18 +626,6 @@ "flutter" ] }, - { - "name": "flutter_riverpod", - "version": "3.1.0", - "dependencies": [ - "collection", - "flutter", - "flutter_test", - "meta", - "riverpod", - "state_notifier" - ] - }, { "name": "flutter_bloc", "version": "9.1.1", @@ -829,56 +636,17 @@ ] }, { - "name": "bloc", - "version": "9.2.0", + "name": "group_button", + "version": "5.3.4", "dependencies": [ - "meta" + "flutter" ] }, { - "name": "plugin_platform_interface", - "version": "2.1.8", - "dependencies": [ - "meta" - ] - }, - { - "name": "state_notifier", + "name": "nested", "version": "1.0.0", "dependencies": [ - "meta" - ] - }, - { - "name": "test", - "version": "1.26.3", - "dependencies": [ - "analyzer", - "async", - "boolean_selector", - "collection", - "coverage", - "http_multi_server", - "io", - "js", - "matcher", - "node_preamble", - "package_config", - "path", - "pool", - "shelf", - "shelf_packages_handler", - "shelf_static", - "shelf_web_socket", - "source_span", - "stack_trace", - "stream_channel", - "test_api", - "test_core", - "typed_data", - "web_socket_channel", - "webkit_inspection_protocol", - "yaml" + "flutter" ] }, { @@ -907,10 +675,28 @@ "dependencies": [] }, { - "name": "string_scanner", - "version": "1.4.1", + "name": "hooks_riverpod", + "version": "3.1.0", "dependencies": [ - "source_span" + "collection", + "flutter", + "flutter_hooks", + "flutter_riverpod", + "flutter_test", + "riverpod", + "state_notifier" + ] + }, + { + "name": "flutter_riverpod", + "version": "3.1.0", + "dependencies": [ + "collection", + "flutter", + "flutter_test", + "meta", + "riverpod", + "state_notifier" ] }, { @@ -923,57 +709,47 @@ ] }, { - "name": "web_socket", - "version": "1.0.1", + "name": "crypto", + "version": "3.0.7", "dependencies": [ - "web" - ] - }, - { - "name": "http_parser", - "version": "4.1.2", - "dependencies": [ - "collection", - "source_span", - "string_scanner", "typed_data" ] }, { - "name": "file", - "version": "7.0.1", + "name": "googleapis_auth", + "version": "2.0.0", + "dependencies": [ + "args", + "crypto", + "google_identity_services_web", + "http", + "http_parser" + ] + }, + { + "name": "google_identity_services_web", + "version": "0.3.3+1", "dependencies": [ "meta", - "path" + "web" ] }, { - "name": "pubspec_parse", - "version": "1.5.0", + "name": "code_builder", + "version": "4.11.1", "dependencies": [ - "checked_yaml", + "built_collection", + "built_value", "collection", - "json_annotation", - "pub_semver", - "yaml" - ] - }, - { - "name": "checked_yaml", - "version": "2.0.4", - "dependencies": [ - "json_annotation", - "source_span", - "yaml" - ] - }, - { - "name": "_fe_analyzer_shared", - "version": "91.0.0", - "dependencies": [ + "matcher", "meta" ] }, + { + "name": "lints", + "version": "6.1.0", + "dependencies": [] + }, { "name": "leak_tracker_testing", "version": "3.0.2", @@ -995,31 +771,10 @@ ] }, { - "name": "term_glyph", - "version": "1.2.2", - "dependencies": [] - }, - { - "name": "boolean_selector", - "version": "2.1.2", + "name": "state_notifier", + "version": "1.0.0", "dependencies": [ - "source_span", - "string_scanner" - ] - }, - { - "name": "google_identity_services_web", - "version": "0.3.3+1", - "dependencies": [ - "meta", - "web" - ] - }, - { - "name": "win32", - "version": "5.15.0", - "dependencies": [ - "ffi" + "meta" ] }, { @@ -1035,108 +790,90 @@ ] }, { - "name": "flutter_web_plugins", - "version": "0.0.0", + "name": "path_provider_linux", + "version": "2.2.1", "dependencies": [ - "flutter" - ] - }, - { - "name": "share_plus", - "version": "12.0.1", - "dependencies": [ - "cross_file", - "ffi", - "file", - "flutter", - "flutter_web_plugins", - "meta", - "mime", - "share_plus_platform_interface", - "url_launcher_linux", - "url_launcher_platform_interface", - "url_launcher_web", - "url_launcher_windows", - "web", - "win32" - ] - }, - { - "name": "group_button", - "version": "5.3.4", - "dependencies": [ - "flutter" - ] - }, - { - "name": "rive_native", - "version": "0.1.4", - "dependencies": [ - "args", "ffi", "flutter", - "flutter_web_plugins", - "graphs", - "http", - "meta", "path", - "plugin_platform_interface", - "vector_math", - "web" + "path_provider_platform_interface", + "xdg_directories" ] }, { - "name": "provider", - "version": "6.1.5+1", + "name": "pub_semver", + "version": "2.2.0", "dependencies": [ - "collection", - "flutter", - "nested" + "collection" ] }, { - "name": "webkit_inspection_protocol", - "version": "1.2.1", + "name": "package_config", + "version": "2.2.0", "dependencies": [ - "logging" + "path" ] }, { - "name": "test_core", - "version": "0.6.12", + "name": "term_glyph", + "version": "1.2.2", + "dependencies": [] + }, + { + "name": "lean_builder", + "version": "0.1.6", "dependencies": [ + "_fe_analyzer_shared", "analyzer", + "ansicolor", "args", - "async", - "boolean_selector", "collection", - "coverage", + "dart_style", "frontend_server_client", "glob", - "io", + "hotreloader", "meta", - "package_config", "path", - "pool", - "source_map_stack_trace", - "source_maps", "source_span", "stack_trace", - "stream_channel", - "test_api", - "vm_service", + "watcher", + "xxh3", "yaml" ] }, { - "name": "shelf_static", - "version": "1.1.3", + "name": "watcher", + "version": "1.1.4", "dependencies": [ - "convert", - "http_parser", - "mime", + "async", + "path" + ] + }, + { + "name": "boolean_selector", + "version": "2.1.2", + "dependencies": [ + "source_span", + "string_scanner" + ] + }, + { + "name": "pool", + "version": "1.5.2", + "dependencies": [ + "async", + "stack_trace" + ] + }, + { + "name": "analyzer_buffer", + "version": "0.1.11", + "dependencies": [ + "analyzer", + "collection", + "meta", "path", - "shelf" + "source_gen" ] }, { @@ -1154,37 +891,12 @@ "dependencies": [] }, { - "name": "js", - "version": "0.7.2", - "dependencies": [] - }, - { - "name": "coverage", - "version": "1.15.0", + "name": "bloc", + "version": "9.2.0", "dependencies": [ - "args", - "cli_config", - "glob", - "logging", - "meta", - "package_config", - "path", - "source_maps", - "stack_trace", - "vm_service", - "yaml" + "meta" ] }, - { - "name": "ansicolor", - "version": "2.0.3", - "dependencies": [] - }, - { - "name": "vm_service", - "version": "15.0.2", - "dependencies": [] - }, { "name": "path_provider_windows", "version": "2.3.0", @@ -1205,101 +917,10 @@ ] }, { - "name": "path_provider_linux", - "version": "2.2.1", + "name": "plugin_platform_interface", + "version": "2.1.8", "dependencies": [ - "ffi", - "flutter", - "path", - "path_provider_platform_interface", - "xdg_directories" - ] - }, - { - "name": "path_provider_foundation", - "version": "2.6.0", - "dependencies": [ - "ffi", - "flutter", - "objective_c", - "path_provider_platform_interface" - ] - }, - { - "name": "path_provider_android", - "version": "2.2.22", - "dependencies": [ - "flutter", - "path_provider_platform_interface" - ] - }, - { - "name": "url_launcher_platform_interface", - "version": "2.3.2", - "dependencies": [ - "flutter", - "plugin_platform_interface" - ] - }, - { - "name": "url_launcher_linux", - "version": "3.2.2", - "dependencies": [ - "flutter", - "url_launcher_platform_interface" - ] - }, - { - "name": "url_launcher_windows", - "version": "3.1.5", - "dependencies": [ - "flutter", - "url_launcher_platform_interface" - ] - }, - { - "name": "url_launcher_web", - "version": "2.4.2", - "dependencies": [ - "flutter", - "flutter_web_plugins", - "url_launcher_platform_interface", - "web" - ] - }, - { - "name": "share_plus_platform_interface", - "version": "6.1.0", - "dependencies": [ - "cross_file", - "flutter", - "meta", - "mime", - "path_provider", - "plugin_platform_interface", - "uuid" - ] - }, - { - "name": "cross_file", - "version": "0.3.5+2", - "dependencies": [ - "meta", - "web" - ] - }, - { - "name": "nested", - "version": "1.0.0", - "dependencies": [ - "flutter" - ] - }, - { - "name": "source_maps", - "version": "0.10.13", - "dependencies": [ - "source_span" + "meta" ] }, { @@ -1312,32 +933,291 @@ ] }, { - "name": "frontend_server_client", - "version": "4.0.0", + "name": "string_scanner", + "version": "1.4.1", "dependencies": [ - "async", + "source_span" + ] + }, + { + "name": "typed_data", + "version": "1.4.0", + "dependencies": [ + "collection" + ] + }, + { + "name": "file", + "version": "7.0.1", + "dependencies": [ + "meta", "path" ] }, { - "name": "cli_config", - "version": "0.2.0", + "name": "stream_transform", + "version": "2.1.1", + "dependencies": [] + }, + { + "name": "json_annotation", + "version": "4.11.0", "dependencies": [ - "args", + "meta" + ] + }, + { + "name": "graphs", + "version": "2.3.2", + "dependencies": [ + "collection" + ] + }, + { + "name": "analyzer", + "version": "8.4.1", + "dependencies": [ + "_fe_analyzer_shared", + "collection", + "convert", + "crypto", + "glob", + "meta", + "package_config", + "path", + "pub_semver", + "source_span", + "watcher", "yaml" ] }, { - "name": "platform", - "version": "3.1.6", + "name": "_fe_analyzer_shared", + "version": "91.0.0", + "dependencies": [ + "meta" + ] + }, + { + "name": "source_maps", + "version": "0.10.13", + "dependencies": [ + "source_span" + ] + }, + { + "name": "rive", + "version": "0.14.4", + "dependencies": [ + "flutter", + "flutter_web_plugins", + "meta", + "rive_native" + ] + }, + { + "name": "rive_native", + "version": "0.1.4", + "dependencies": [ + "args", + "ffi", + "flutter", + "flutter_web_plugins", + "graphs", + "http", + "meta", + "path", + "plugin_platform_interface", + "vector_math", + "web" + ] + }, + { + "name": "build", + "version": "4.0.4", + "dependencies": [ + "analyzer", + "crypto", + "glob", + "logging", + "package_config", + "path" + ] + }, + { + "name": "io", + "version": "1.0.5", + "dependencies": [ + "meta", + "path", + "string_scanner" + ] + }, + { + "name": "http_multi_server", + "version": "3.2.2", + "dependencies": [ + "async" + ] + }, + { + "name": "checked_yaml", + "version": "2.0.4", + "dependencies": [ + "json_annotation", + "source_span", + "yaml" + ] + }, + { + "name": "web_socket_channel", + "version": "3.0.3", + "dependencies": [ + "async", + "crypto", + "stream_channel", + "web", + "web_socket" + ] + }, + { + "name": "shelf_web_socket", + "version": "3.0.0", + "dependencies": [ + "shelf", + "stream_channel", + "web_socket_channel" + ] + }, + { + "name": "web_socket", + "version": "1.0.1", + "dependencies": [ + "web" + ] + }, + { + "name": "webkit_inspection_protocol", + "version": "1.2.1", + "dependencies": [ + "logging" + ] + }, + { + "name": "shelf_static", + "version": "1.1.3", + "dependencies": [ + "convert", + "http_parser", + "mime", + "path", + "shelf" + ] + }, + { + "name": "http", + "version": "1.6.0", + "dependencies": [ + "async", + "http_parser", + "meta", + "web" + ] + }, + { + "name": "ffi", + "version": "2.2.0", "dependencies": [] }, { - "name": "xdg_directories", - "version": "1.1.0", + "name": "convert", + "version": "3.1.2", "dependencies": [ + "typed_data" + ] + }, + { + "name": "http_parser", + "version": "4.1.2", + "dependencies": [ + "collection", + "source_span", + "string_scanner", + "typed_data" + ] + }, + { + "name": "logging", + "version": "1.3.0", + "dependencies": [] + }, + { + "name": "build_daemon", + "version": "4.1.1", + "dependencies": [ + "built_collection", + "built_value", + "crypto", + "http_multi_server", + "logging", + "path", + "pool", + "shelf", + "shelf_web_socket", + "stream_transform", + "watcher", + "web_socket_channel" + ] + }, + { + "name": "js", + "version": "0.7.2", + "dependencies": [] + }, + { + "name": "mime", + "version": "2.0.0", + "dependencies": [] + }, + { + "name": "source_gen", + "version": "4.2.1", + "dependencies": [ + "analyzer", + "async", + "build", + "dart_style", + "glob", + "path", + "pub_semver", + "source_span", + "yaml" + ] + }, + { + "name": "mockito", + "version": "5.6.3", + "dependencies": [ + "analyzer", + "build", + "code_builder", + "collection", + "dart_style", + "matcher", "meta", - "path" + "path", + "source_gen", + "test_api" + ] + }, + { + "name": "path_provider_foundation", + "version": "2.6.0", + "dependencies": [ + "ffi", + "flutter", + "objective_c", + "path_provider_platform_interface" ] }, { @@ -1354,11 +1234,11 @@ ] }, { - "name": "uuid", - "version": "4.5.3", + "name": "code_assets", + "version": "1.0.0", "dependencies": [ - "crypto", - "fixnum" + "collection", + "hooks" ] }, { @@ -1386,11 +1266,198 @@ ] }, { - "name": "code_assets", - "version": "1.0.0", + "name": "pubspec_parse", + "version": "1.5.0", + "dependencies": [ + "checked_yaml", + "collection", + "json_annotation", + "pub_semver", + "yaml" + ] + }, + { + "name": "platform", + "version": "3.1.6", + "dependencies": [] + }, + { + "name": "built_value", + "version": "8.12.4", + "dependencies": [ + "built_collection", + "collection", + "fixnum", + "meta" + ] + }, + { + "name": "shelf", + "version": "1.4.2", + "dependencies": [ + "async", + "collection", + "http_parser", + "path", + "stack_trace", + "stream_channel" + ] + }, + { + "name": "xdg_directories", + "version": "1.1.0", + "dependencies": [ + "meta", + "path" + ] + }, + { + "name": "provider", + "version": "6.1.5+1", "dependencies": [ "collection", - "hooks" + "flutter", + "nested" + ] + }, + { + "name": "vm_service", + "version": "15.0.2", + "dependencies": [] + }, + { + "name": "win32", + "version": "5.15.0", + "dependencies": [ + "ffi" + ] + }, + { + "name": "talker_flutter", + "version": "5.1.15", + "dependencies": [ + "flutter", + "group_button", + "path_provider", + "share_plus", + "talker", + "web" + ] + }, + { + "name": "share_plus", + "version": "12.0.1", + "dependencies": [ + "cross_file", + "ffi", + "file", + "flutter", + "flutter_web_plugins", + "meta", + "mime", + "share_plus_platform_interface", + "url_launcher_linux", + "url_launcher_platform_interface", + "url_launcher_web", + "url_launcher_windows", + "web", + "win32" + ] + }, + { + "name": "url_launcher_platform_interface", + "version": "2.3.2", + "dependencies": [ + "flutter", + "plugin_platform_interface" + ] + }, + { + "name": "share_plus_platform_interface", + "version": "6.1.0", + "dependencies": [ + "cross_file", + "flutter", + "meta", + "mime", + "path_provider", + "plugin_platform_interface", + "uuid" + ] + }, + { + "name": "url_launcher_windows", + "version": "3.1.5", + "dependencies": [ + "flutter", + "url_launcher_platform_interface" + ] + }, + { + "name": "url_launcher_linux", + "version": "3.2.2", + "dependencies": [ + "flutter", + "url_launcher_platform_interface" + ] + }, + { + "name": "cross_file", + "version": "0.3.5+2", + "dependencies": [ + "meta", + "web" + ] + }, + { + "name": "url_launcher_web", + "version": "2.4.2", + "dependencies": [ + "flutter", + "flutter_web_plugins", + "url_launcher_platform_interface", + "web" + ] + }, + { + "name": "path_provider_android", + "version": "2.2.22", + "dependencies": [ + "flutter", + "path_provider_platform_interface" + ] + }, + { + "name": "uuid", + "version": "4.5.3", + "dependencies": [ + "crypto", + "fixnum" + ] + }, + { + "name": "coverage", + "version": "1.15.0", + "dependencies": [ + "args", + "cli_config", + "glob", + "logging", + "meta", + "package_config", + "path", + "source_maps", + "stack_trace", + "vm_service", + "yaml" + ] + }, + { + "name": "cli_config", + "version": "0.2.0", + "dependencies": [ + "args", + "yaml" ] } ], diff --git a/useragent/lib/features/adaptive_switcher.dart b/useragent/lib/features/adaptive_switcher.dart deleted file mode 100644 index fa8a3c4..0000000 --- a/useragent/lib/features/adaptive_switcher.dart +++ /dev/null @@ -1,118 +0,0 @@ -import 'package:flutter_adaptive_scaffold/flutter_adaptive_scaffold.dart'; -import 'package:flutter/material.dart'; -import 'package:flutter_hooks/flutter_hooks.dart'; -import 'package:sizer/sizer.dart'; - -const transitionDuration = Duration(milliseconds: 800); - -class AdaptiveBuilders { - WidgetBuilder? buildSmall; - WidgetBuilder? buildMediumLarge; - WidgetBuilder? buildLarge; - WidgetBuilder? buildExtraLarge; - WidgetBuilder? build; - - AdaptiveBuilders({ - this.buildSmall, - this.buildMediumLarge, - this.buildLarge, - this.buildExtraLarge, - this.build, - }); -} - -class Destination { - final String label; - final String? tooltip; - final Icon icon; - final Icon? selectedIcon; - - final AdaptiveBuilders main; - final AdaptiveBuilders? secondary; - - Destination({ - required this.label, - required this.icon, - this.selectedIcon, - required this.main, - this.secondary, - this.tooltip, - }); -} - -class Switcher extends StatelessWidget { - final Widget? child; - - const Switcher({super.key, this.child}); - @override - Widget build(BuildContext context) { - return AnimatedSwitcher( - duration: Duration( - milliseconds: transitionDuration.inMilliseconds ~/ 100, - ), - transitionBuilder: (child, animation) { - return FadeTransition(opacity: animation, child: child); - }, - child: child, - ); - } -} - -WidgetBuilder? patchAnimated(WidgetBuilder? input) { - if (input == null) return null; - return (context) => Switcher(child: input(context)); -} - -class HomeRouter extends HookWidget { - final List destinations; - - HomeRouter({super.key, required this.destinations}) - : assert(destinations.isNotEmpty); - - @override - Widget build(BuildContext context) { - final selectedIndex = useState(0); - final destination = useMemoized(() => destinations[selectedIndex.value], [ - selectedIndex.value, - ]); - final dispatcher = useMemoized(() => destination.main, [ - selectedIndex.value, - ]); - final secondaryDispatcher = useMemoized(() => destination.secondary, [ - selectedIndex.value, - ]); - - return AdaptiveScaffold( - destinations: destinations - .map( - (destination) => NavigationDestination( - label: destination.label, - icon: destination.icon, - selectedIcon: destination.selectedIcon, - tooltip: destination.tooltip, - ), - ) - .toList(), - - selectedIndex: selectedIndex.value, - onSelectedIndexChange: (index) => selectedIndex.value = index, - useDrawer: true, - - smallBody: patchAnimated(dispatcher.buildSmall), - body: patchAnimated(dispatcher.build), - mediumLargeBody: patchAnimated(dispatcher.buildMediumLarge), - largeBody: patchAnimated(dispatcher.buildLarge), - extraLargeBody: patchAnimated(dispatcher.buildExtraLarge), - - smallSecondaryBody: patchAnimated(secondaryDispatcher?.buildSmall), - secondaryBody: patchAnimated(secondaryDispatcher?.build), - mediumLargeSecondaryBody: patchAnimated( - secondaryDispatcher?.buildMediumLarge, - ), - largeSecondaryBody: patchAnimated(secondaryDispatcher?.buildLarge), - extraLargeSecondaryBody: patchAnimated( - secondaryDispatcher?.buildExtraLarge, - ), - ); - } -} diff --git a/useragent/lib/home.dart b/useragent/lib/home.dart deleted file mode 100644 index 036e609..0000000 --- a/useragent/lib/home.dart +++ /dev/null @@ -1,24 +0,0 @@ -import 'package:arbiter/features/adaptive_switcher.dart'; -import 'package:arbiter/screens/about.dart'; -import 'package:arbiter/screens/calc.dart'; -import 'package:flutter/material.dart'; - -final _destinations = [ - Destination( - label: "About", - icon: Icon(Icons.info_outline), - main: AdaptiveBuilders(build: (_) => About()), - ), - Destination( - label: "Calc", - icon: Icon(Icons.calculate), - main: AdaptiveBuilders(build: (_) => CalcScreen()), - ), -]; - -class Home extends StatelessWidget { - @override - Widget build(BuildContext context) { - return HomeRouter(destinations: _destinations); - } -} diff --git a/useragent/lib/main.dart b/useragent/lib/main.dart index bced8fe..89df0e1 100644 --- a/useragent/lib/main.dart +++ b/useragent/lib/main.dart @@ -3,9 +3,12 @@ import 'package:flutter/material.dart' hide Router; import 'package:hooks_riverpod/hooks_riverpod.dart'; void main() { + WidgetsFlutterBinding.ensureInitialized(); runApp( - MaterialApp( - home: ProviderScope(child: Scaffold(body: Router())), + ProviderScope( + child: MaterialApp.router( + routerConfig: Router().config(), + ), ), ); } diff --git a/useragent/lib/providers/key.dart b/useragent/lib/providers/key.dart index 4636817..196fc45 100644 --- a/useragent/lib/providers/key.dart +++ b/useragent/lib/providers/key.dart @@ -1,4 +1,3 @@ -import 'package:hooks_riverpod/experimental/mutation.dart'; import 'package:mtcore/markettakers.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; import 'package:arbiter/features/pk_manager.dart'; @@ -11,22 +10,22 @@ KeyManager keyManager(Ref ref) { return SimpleEd25519Manager(); } -@riverpod +@Riverpod(keepAlive: true) class Key extends _$Key { @override Future build() async { - final manager = SimpleEd25519Manager(); + final manager = ref.watch(keyManagerProvider); final keyHandle = await manager.get(); return keyHandle; } Future create() async { + final manager = ref.watch(keyManagerProvider); if (state.value != null) { return; } state = await AsyncValue.guard(() async { - final manager = SimpleEd25519Manager(); final newKeyHandle = await manager.create(); return newKeyHandle; }); @@ -34,7 +33,7 @@ class Key extends _$Key { } class KeyBootstrapper implements StageFactory { - final MutationTarget ref; + final ProviderContainer ref; KeyBootstrapper({required this.ref}); @@ -43,14 +42,14 @@ class KeyBootstrapper implements StageFactory { @override Future get isAlreadyCompleted async { - final key = await ref.container.read(keyProvider.future); + final key = await ref.read(keyProvider.future); return key != null; } @override Future start(StageController controller) async { controller.setIndefiniteProgress(); - final key = ref.container.read(keyProvider.notifier); + final key = ref.read(keyProvider.notifier); await key.create(); } diff --git a/useragent/lib/providers/key.g.dart b/useragent/lib/providers/key.g.dart index 37cfe01..c827cab 100644 --- a/useragent/lib/providers/key.g.dart +++ b/useragent/lib/providers/key.g.dart @@ -60,7 +60,7 @@ final class KeyProvider extends $AsyncNotifierProvider { argument: null, retry: null, name: r'keyProvider', - isAutoDispose: true, + isAutoDispose: false, dependencies: null, $allTransitiveDependencies: null, ); @@ -73,7 +73,7 @@ final class KeyProvider extends $AsyncNotifierProvider { Key create() => Key(); } -String _$keyHash() => r'6d66204174c4d2d5c76e27f3a8de8f9a9c88a3e0'; +String _$keyHash() => r'37b209825067adadbb75fe0b4ce936ea1c201dc8'; abstract class _$Key extends $AsyncNotifier { FutureOr build(); diff --git a/useragent/lib/router.dart b/useragent/lib/router.dart index aef8e74..bcbc314 100644 --- a/useragent/lib/router.dart +++ b/useragent/lib/router.dart @@ -1,32 +1,24 @@ -import 'dart:async'; +import 'package:arbiter/screens/dashboard/about.dart'; +import 'package:arbiter/screens/dashboard/calc.dart'; +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_adaptive_scaffold/flutter_adaptive_scaffold.dart'; -import 'package:arbiter/features/bootstrap.dart'; -import 'package:arbiter/home.dart'; -import 'package:flutter/src/widgets/async.dart'; -import 'package:flutter/src/widgets/framework.dart'; -import 'package:flutter_hooks/flutter_hooks.dart'; -import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'router.gr.dart'; -final _bootstapCompleter = Completer(); - -class Router extends HookConsumerWidget { +@AutoRouterConfig(generateForDir: ['lib/screens']) +class Router extends RootStackRouter { @override - Widget build(BuildContext context, WidgetRef ref) { - final bootstrapper = useMemoized( - () => Bootstrap(completer: _bootstapCompleter), - ); - final bootstrapFuture = useFuture(_bootstapCompleter.future); + List get routes => [ + AutoRoute(page: Bootstrap.page, path: '/bootstrap', initial: true), - switch (bootstrapFuture.connectionState) { - case ConnectionState.none || - ConnectionState.waiting || - ConnectionState.active: - return bootstrapper; - - case ConnectionState.done: - break; - } - - return Home(); - } + AutoRoute( + page: DashboardRouter.page, + path: '/dashboard', + children: [ + AutoRoute(page: AboutRoute.page, path: 'about'), + AutoRoute(page: CalcRoute.page, path: 'calc'), + ], + ), + ]; } diff --git a/useragent/lib/router.gr.dart b/useragent/lib/router.gr.dart new file mode 100644 index 0000000..824cf97 --- /dev/null +++ b/useragent/lib/router.gr.dart @@ -0,0 +1,80 @@ +// dart format width=80 +// GENERATED CODE - DO NOT MODIFY BY HAND + +// ************************************************************************** +// AutoRouterGenerator +// ************************************************************************** + +// ignore_for_file: type=lint +// coverage:ignore-file + +// ignore_for_file: no_leading_underscores_for_library_prefixes +import 'package:arbiter/screens/bootstrap.dart' as _i2; +import 'package:arbiter/screens/dashboard.dart' as _i4; +import 'package:arbiter/screens/dashboard/about.dart' as _i1; +import 'package:arbiter/screens/dashboard/calc.dart' as _i3; +import 'package:auto_route/auto_route.dart' as _i5; + +/// generated route for +/// [_i1.AboutScreen] +class AboutRoute extends _i5.PageRouteInfo { + const AboutRoute({List<_i5.PageRouteInfo>? children}) + : super(AboutRoute.name, initialChildren: children); + + static const String name = 'AboutRoute'; + + static _i5.PageInfo page = _i5.PageInfo( + name, + builder: (data) { + return _i1.AboutScreen(); + }, + ); +} + +/// generated route for +/// [_i2.Bootstrap] +class Bootstrap extends _i5.PageRouteInfo { + const Bootstrap({List<_i5.PageRouteInfo>? children}) + : super(Bootstrap.name, initialChildren: children); + + static const String name = 'Bootstrap'; + + static _i5.PageInfo page = _i5.PageInfo( + name, + builder: (data) { + return const _i2.Bootstrap(); + }, + ); +} + +/// generated route for +/// [_i3.CalcScreen] +class CalcRoute extends _i5.PageRouteInfo { + const CalcRoute({List<_i5.PageRouteInfo>? children}) + : super(CalcRoute.name, initialChildren: children); + + static const String name = 'CalcRoute'; + + static _i5.PageInfo page = _i5.PageInfo( + name, + builder: (data) { + return const _i3.CalcScreen(); + }, + ); +} + +/// generated route for +/// [_i4.DashboardRouter] +class DashboardRouter extends _i5.PageRouteInfo { + const DashboardRouter({List<_i5.PageRouteInfo>? children}) + : super(DashboardRouter.name, initialChildren: children); + + static const String name = 'DashboardRouter'; + + static _i5.PageInfo page = _i5.PageInfo( + name, + builder: (data) { + return const _i4.DashboardRouter(); + }, + ); +} diff --git a/useragent/lib/screens/about.dart b/useragent/lib/screens/about.dart deleted file mode 100644 index 51291c5..0000000 --- a/useragent/lib/screens/about.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:mtcore/markettakers.dart'; - -class About extends StatelessWidget { - @override - Widget build(BuildContext context) { - return AboutScreen(decription: "Arbiter is bla bla bla"); - } -} diff --git a/useragent/lib/features/bootstrap.dart b/useragent/lib/screens/bootstrap.dart similarity index 51% rename from useragent/lib/features/bootstrap.dart rename to useragent/lib/screens/bootstrap.dart index c4de910..da215f4 100644 --- a/useragent/lib/features/bootstrap.dart +++ b/useragent/lib/screens/bootstrap.dart @@ -1,19 +1,31 @@ import 'dart:async'; import 'package:arbiter/providers/key.dart'; -import 'package:flutter/src/widgets/framework.dart'; +import 'package:arbiter/router.gr.dart'; +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:mtcore/markettakers.dart'; +@RoutePage() class Bootstrap extends HookConsumerWidget { - final Completer completer; - - const Bootstrap({required this.completer}); + const Bootstrap({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { - final container = ProviderScope.containerOf(context); + final container = ProviderScope.containerOf( context); + final completer = useMemoized(() { + final completer = Completer(); + completer.future.then((_) async { + if (context.mounted) { + final router = AutoRouter.of(context); + router.replace(const DashboardRouter()); + } + }); + + return completer; + }, []); final stages = useMemoized(() { return [KeyBootstrapper(ref: container)]; }, []); @@ -21,6 +33,7 @@ class Bootstrap extends HookConsumerWidget { () => Bootstrapper(stages: stages, onCompleted: completer), [stages], ); + return bootstrapper; } } diff --git a/useragent/lib/screens/dashboard.dart b/useragent/lib/screens/dashboard.dart new file mode 100644 index 0000000..43c2366 --- /dev/null +++ b/useragent/lib/screens/dashboard.dart @@ -0,0 +1,42 @@ +import 'package:arbiter/router.gr.dart'; +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_adaptive_scaffold/flutter_adaptive_scaffold.dart'; + +const breakpoints = MaterialAdaptiveBreakpoints(); + +final routes = [AboutRoute(), CalcRoute()]; + +@RoutePage() +class DashboardRouter extends StatelessWidget { + const DashboardRouter({super.key}); + + @override + Widget build(BuildContext context) { + return AutoTabsRouter( + routes: routes, + transitionBuilder: (context, child, animation) => FadeTransition( + opacity: animation, + // the passed child is technically our animated selected-tab page + child: child, + ), + builder: (context, child) { + final tabsRouter = AutoTabsRouter.of(context); + final currentActive = tabsRouter.activeIndex; + return AdaptiveScaffold( + destinations: [ + NavigationDestination(icon: Icon(Icons.book), label: "About"), + NavigationDestination(icon: Icon(Icons.calculate), label: "Calc"), + ], + body: (ctx) => child, + onSelectedIndexChange: (index) { + tabsRouter.navigate(routes[index]); + }, + selectedIndex: currentActive, + transitionDuration: Duration(milliseconds: 800), + internalAnimations: true, + ); + }, + ); + } +} diff --git a/useragent/lib/screens/dashboard/about.dart b/useragent/lib/screens/dashboard/about.dart new file mode 100644 index 0000000..29e853d --- /dev/null +++ b/useragent/lib/screens/dashboard/about.dart @@ -0,0 +1,12 @@ +import 'package:auto_route/auto_route.dart'; +import 'package:flutter/material.dart'; +import 'package:mtcore/markettakers.dart' as mt; + + +@RoutePage() +class AboutScreen extends StatelessWidget { + @override + Widget build(BuildContext context) { + return mt.AboutScreen(decription: "Arbiter is bla bla bla"); + } +} diff --git a/useragent/lib/screens/calc.dart b/useragent/lib/screens/dashboard/calc.dart similarity index 96% rename from useragent/lib/screens/calc.dart rename to useragent/lib/screens/dashboard/calc.dart index 3d090cf..0ba7b9c 100644 --- a/useragent/lib/screens/calc.dart +++ b/useragent/lib/screens/dashboard/calc.dart @@ -1,5 +1,7 @@ +import 'package:auto_route/auto_route.dart'; import 'package:flutter/material.dart'; +@RoutePage() class CalcScreen extends StatefulWidget { const CalcScreen({super.key}); diff --git a/useragent/pubspec.lock b/useragent/pubspec.lock index 790c4b9..d7f4657 100644 --- a/useragent/pubspec.lock +++ b/useragent/pubspec.lock @@ -49,6 +49,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.13.0" + auto_route: + dependency: "direct main" + description: + name: auto_route + sha256: e9acfeb3df33d188fce4ad0239ef4238f333b7aa4d95ec52af3c2b9360dcd969 + url: "https://pub.dev" + source: hosted + version: "11.1.0" + auto_route_generator: + dependency: "direct dev" + description: + name: auto_route_generator + sha256: "04300eaf5821962aae8b5cd94f67013fd2fd326dc3be212d3ec1ae7470f09834" + url: "https://pub.dev" + source: hosted + version: "10.4.0" biometric_signature: dependency: "direct main" description: @@ -283,10 +299,10 @@ packages: description: path: "." ref: HEAD - resolved-ref: "4852b5041d8d9ed6cacb4dc4c6723086f0612e37" + resolved-ref: b2e3615901a7ab837cb7fc35efbfcf8b55f27638 url: "https://github.com/hdbg/flutter_adaptive_scaffold.git" source: git - version: "0.3.3+1" + version: "1.0.0+1" flutter_bloc: dependency: transitive description: @@ -465,6 +481,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.1.0" + hotreloader: + dependency: transitive + description: + name: hotreloader + sha256: bc167a1163807b03bada490bfe2df25b0d744df359227880220a5cbd04e5734b + url: "https://pub.dev" + source: hosted + version: "4.3.0" http: dependency: transitive description: @@ -545,6 +569,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.2" + lean_builder: + dependency: transitive + description: + name: lean_builder + sha256: "6af3cfbf34400eb14b89fe20111e5981e7083362f00ea10b9ed2a6e833250d76" + url: "https://pub.dev" + source: hosted + version: "0.1.6" lints: dependency: transitive description: @@ -1074,10 +1106,10 @@ packages: dependency: transitive description: name: watcher - sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" + sha256: "592ab6e2892f67760543fb712ff0177f4ec76c031f02f5b4ff8d3fc5eb9fb61a" url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.1.4" web: dependency: transitive description: @@ -1126,6 +1158,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.0" + xxh3: + dependency: transitive + description: + name: xxh3 + sha256: "399a0438f5d426785723c99da6b16e136f4953fb1e9db0bf270bd41dd4619916" + url: "https://pub.dev" + source: hosted + version: "1.2.0" yaml: dependency: transitive description: diff --git a/useragent/pubspec.yaml b/useragent/pubspec.yaml index cd83ae3..683baef 100644 --- a/useragent/pubspec.yaml +++ b/useragent/pubspec.yaml @@ -27,6 +27,7 @@ dependencies: riverpod_annotation: ^4.0.0 grpc: ^5.1.0 flutter_hooks: ^0.21.3+1 + auto_route: ^11.1.0 dev_dependencies: flutter_test: @@ -35,6 +36,7 @@ dev_dependencies: flutter_lints: ^6.0.0 riverpod_generator: ^4.0.0+1 build_runner: ^2.12.2 + auto_route_generator: ^10.4.0 flutter: uses-material-design: true \ No newline at end of file