From 5142663d752968057d090b8ae480f8a5f59fcd11 Mon Sep 17 00:00:00 2001 From: YumNumm Date: Sun, 20 Nov 2022 21:58:40 +0900 Subject: [PATCH 01/13] =?UTF-8?q?add:=20talker=5Fflutter=E3=83=A9=E3=82=A4?= =?UTF-8?q?=E3=83=96=E3=83=A9=E3=83=AA=E3=81=AE=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/main.dart | 22 +- lib/provider/init/talker.dart | 4 + lib/ui/view/main_view.dart | 88 ++--- pubspec.lock | 679 +++++++++++++--------------------- pubspec.yaml | 2 +- 5 files changed, 317 insertions(+), 478 deletions(-) create mode 100644 lib/provider/init/talker.dart diff --git a/lib/main.dart b/lib/main.dart index 3569a5e91..426131c2e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -18,6 +18,7 @@ import 'package:eqmonitor/provider/init/map_area_tsunami_forecast.dart'; import 'package:eqmonitor/provider/init/parameter_earthquake.dart'; import 'package:eqmonitor/provider/init/secure_storage.dart'; import 'package:eqmonitor/provider/init/shared_preferences.dart'; +import 'package:eqmonitor/provider/init/talker.dart'; import 'package:eqmonitor/provider/init/travel_time.dart'; import 'package:eqmonitor/provider/setting/crash_log_share.dart'; import 'package:eqmonitor/schema/local/kyoshin_kansokuten.dart'; @@ -38,6 +39,7 @@ import 'package:logger/logger.dart'; import 'package:path_provider/path_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import 'firebase_options.dart'; @@ -52,27 +54,26 @@ Future main() async { statusBarColor: Colors.transparent, // transparent status bar ), ); + final talker = Talker( + loggerSettings: TalkerLoggerSettings( + enableColors: !Platform.isIOS, + ), + ); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); Intl.defaultLocale = 'ja_JP'; final crashlytics = FirebaseCrashlytics.instance; - final deviceInfo = await DeviceInfoPlugin().androidInfo; final prefs = await SharedPreferences.getInstance(); // final appInfo = await PackageInfo.fromPlatform(); // クラッシュレポートの初期化 final isCrashLogShareAllowed = await CrashLogShareProvider(prefs).loadSettingsFromSharedPrefrences(); - await crashlytics.setUserIdentifier( - deviceInfo.fingerprint, - ); await crashlytics.setCrashlyticsCollectionEnabled( isCrashLogShareAllowed && kReleaseMode, ); - // ログ出力の初期化 - // ファイル等の読み込み late List kansokuten; late List mapAreaForecastLocalE; @@ -125,6 +126,7 @@ Future main() async { PlatformDispatcher.instance.onError = (error, stackTrace) { Logger().e(error, stackTrace); + talker.handle(error, stackTrace, 'Uncaught App Exception'); if (kReleaseMode) { crashlytics.recordError(error, stackTrace); } @@ -160,6 +162,7 @@ Future main() async { iOSDeviceInfoProvider.overrideWithValue(iosDeviceInfo), // if (kDebugMode) // changeLogProvider.overrideWithProvider(changeLogMockProvider), + talkerProvider.overrideWithValue(talker), ], observers: const [ //if (kDebugMode) ProvidersLogger(), @@ -171,7 +174,10 @@ Future main() async { } Future onFlutterError(FlutterErrorDetails details) async { - Logger().wtf('Error: ${details.exception}'); - Logger().wtf('Stack: ${details.stack}'); + Logger() + ..wtf('Error: ${details.exception}') + ..wtf('Stack: ${details.stack}'); + Talker() + .handle(details.exception, details.stack, 'Uncaught Flutter Exception'); await FirebaseCrashlytics.instance.recordFlutterError(details); } diff --git a/lib/provider/init/talker.dart b/lib/provider/init/talker.dart new file mode 100644 index 000000000..72bfdfd3a --- /dev/null +++ b/lib/provider/init/talker.dart @@ -0,0 +1,4 @@ +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:talker_flutter/talker_flutter.dart'; + +final talkerProvider = Provider((ref) => throw UnimplementedError()); diff --git a/lib/ui/view/main_view.dart b/lib/ui/view/main_view.dart index a186b25c9..9696b8962 100644 --- a/lib/ui/view/main_view.dart +++ b/lib/ui/view/main_view.dart @@ -1,7 +1,9 @@ +import 'package:eqmonitor/provider/init/talker.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import 'main/earthquake_history.dart'; import 'main/kmoni_map.dart'; @@ -12,49 +14,51 @@ class MainView extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final selectedIndex = useState(0); - return Banner( - message: 'DEVELOP', - location: BannerLocation.bottomStart, - child: Scaffold( - bottomNavigationBar: RepaintBoundary( - child: NavigationBar( - selectedIndex: selectedIndex.value, - onDestinationSelected: (i) { - HapticFeedback.selectionClick(); - selectedIndex.value = i; - }, - destinations: const [ - NavigationDestination( - icon: Icon(Icons.home), - label: '強震モニタ', - ), - NavigationDestination( - icon: Icon(Icons.history), - label: '地震履歴', - ), - //NavigationDestination( - // icon: Icon(Icons.calculate), - // label: '震度計算', - //), - NavigationDestination( - icon: Icon(Icons.settings), - label: '設定', - ), - ], - ), + return Scaffold( + bottomNavigationBar: RepaintBoundary( + child: NavigationBar( + selectedIndex: selectedIndex.value, + onDestinationSelected: (i) { + HapticFeedback.selectionClick(); + selectedIndex.value = i; + }, + destinations: const [ + NavigationDestination( + icon: Icon(Icons.home), + label: '強震モニタ', + ), + NavigationDestination( + icon: Icon(Icons.history), + label: '地震履歴', + ), + NavigationDestination( + icon: Icon(Icons.settings), + label: '設定', + ), + ], + ), + ), + body: TalkerWrapper( + talker: ref.watch(talkerProvider), + options: const TalkerWrapperOptions( + enableErrorAlerts: true, + errorTitle: 'エラーが発生しました', + exceptionTitle: '例外が発生しました', + ), + child: Container( + child: (() { + switch (selectedIndex.value) { + case 0: + return KmoniMap(); + case 1: + return EarthquakeHistoryPage(); + // case 2: + // return IntensityEstimatePage(); + case 2: + return const SettingsPage(); + } + })(), ), - body: (() { - switch (selectedIndex.value) { - case 0: - return KmoniMap(); - case 1: - return EarthquakeHistoryPage(); - // case 2: - // return IntensityEstimatePage(); - case 2: - return const SettingsPage(); - } - })(), ), ); } diff --git a/pubspec.lock b/pubspec.lock index 2af48364e..eedc84259 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,552 +5,490 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: "3444216bfd127af50bbe4862d8843ed44db946dd933554f0d7285e89f10e28ac" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "50.0.0" _flutterfire_internals: dependency: transitive description: name: _flutterfire_internals - sha256: e1d4810cd162d842ab1578239a4279a2402d3c1731c1345286df027c830890f8 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.9" analyzer: dependency: transitive description: name: analyzer - sha256: "68796c31f510c8455a06fed75fc97d8e5ad04d324a830322ab3efc9feb6201c1" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "5.2.0" + ansicolor: + dependency: transitive + description: + name: ansicolor + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.1" app_links: dependency: transitive description: name: app_links - sha256: d1b2cf9ad5568cc5b9036cb3f8c42705b4ada26c4ef57de75323186eafe36a0d - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.3.0" app_links_macos: dependency: transitive description: name: app_links_macos - sha256: "4cba12f66b74e9cbbd9a8d01671eb64cc09ffef52feceb85e617c2c4ca2b8e67" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" app_links_platform_interface: dependency: transitive description: name: app_links_platform_interface - sha256: "8bfdad6007218e8087a6a494abb16807b813a631ee36a15f2a1868fd9d82e569" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.2" app_links_web: dependency: transitive description: name: app_links_web - sha256: "4871af0bfe3c67f592a8e8b3539bde24e5c2bb763152d2ea1d837f3bba7f364b" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" app_links_windows: dependency: transitive description: name: app_links_windows - sha256: fb4eabe73e0536c8264ac37515dc8c118b76273f206c171d0e563e261777c94e - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" archive: dependency: transitive description: name: archive - sha256: "76d919e063a09d19d61f99463a20dba1c1e8d0bc3a5eba91bac2853fac095373" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.3.4" args: dependency: transitive description: name: args - sha256: b003c3098049a51720352d219b0bb5f219b60fbfb68e7a4748139a06a5676515 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.3.1" async: dependency: transitive description: name: async - sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.10.0" + version: "2.9.0" awesome_notifications: dependency: "direct main" description: name: awesome_notifications - sha256: "2b430c75cc879d6cfd52bb6eb2b5c1591ed425347816408cdcbd3f6916bba14c" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.7.4+1" boolean_selector: dependency: transitive description: name: boolean_selector - sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.0" bordered_text: dependency: "direct main" description: name: bordered_text - sha256: e52c549c9d01fdf6359eee7220900eb5a5853b08aa862c8c604442918ca6b4c4 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" build: dependency: transitive description: name: build - sha256: "3fbda25365741f8251b39f3917fb3c8e286a96fd068a5a242e11c2012d495777" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.3.1" build_config: dependency: transitive description: name: build_config - sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.1" build_daemon: dependency: transitive description: name: build_daemon - sha256: "6bc5544ea6ce4428266e7ea680e945c68806c4aae2da0eb5e9ccf38df8d6acbf" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" build_resolvers: dependency: transitive description: name: build_resolvers - sha256: "7c35a3a7868626257d8aee47b51c26b9dba11eaddf3431117ed2744951416aab" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" build_runner: dependency: "direct dev" description: name: build_runner - sha256: "6f48c61a9dcd2c3a9e62d3dcdab1ba382790e2f31026288cbabe55d6003c9c23" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.3.2" build_runner_core: dependency: transitive description: name: build_runner_core - sha256: "14febe0f5bac5ae474117a36099b4de6f1dbc52df6c5e55534b3da9591bf4292" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "7.2.7" built_collection: dependency: transitive description: name: built_collection - sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "5.1.1" built_value: dependency: transitive description: name: built_value - sha256: "59e08b0079bb75f7e27392498e26339387c1089c6bd58525a14eb8508637277b" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "8.4.2" characters: dependency: transitive description: name: characters - sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.2.1" checked_yaml: dependency: transitive description: name: checked_yaml - sha256: dd007e4fb8270916820a0d66e24f619266b60773cddd082c6439341645af2659 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" cli_util: dependency: transitive description: name: cli_util - sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.3.5" clock: dependency: transitive description: name: clock - sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.1" cloud_firestore_platform_interface: dependency: transitive description: name: cloud_firestore_platform_interface - sha256: ea3d1d12d72ecaa58909d93e50aca53263d3bf06b904a7f0f1dcd5798941c09b - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "5.9.0" cloud_firestore_web: dependency: transitive description: name: cloud_firestore_web - sha256: "3c9a77380e6a053129c2cb6dbe8ef1b708f4350ce0dad220d2c05cd68a2d467f" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" code_builder: dependency: transitive description: name: code_builder - sha256: "02ce3596b459c666530f045ad6f96209474e8fee6e4855940a3cee65fb872ec5" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.3.0" collection: dependency: "direct main" description: name: collection - sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "1.17.0" + version: "1.16.0" convert: dependency: transitive description: name: convert - sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.1" cross_file: dependency: transitive description: name: cross_file - sha256: f71079978789bc2fe78d79227f1f8cfe195b31bbd8db2399b0d15a4b96fb843b - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.3.3+2" crypto: dependency: "direct main" description: name: crypto - sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.2" csslib: dependency: transitive description: name: csslib - sha256: b36c7f7e24c0bdf1bf9a3da461c837d1de64b9f8beb190c9011d8c72a3dfd745 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.17.2" csv: dependency: "direct main" description: name: csv - sha256: "18aef53ab72181a0b5384562d18c8cbd57e941e24cb8e54eb41409d3d8abdc6d" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "5.0.1" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.5" dart_style: dependency: transitive description: name: dart_style - sha256: "7a03456c3490394c8e7665890333e91ae8a49be43542b616e414449ac358acd4" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.2.4" dartx: dependency: transitive description: name: dartx - sha256: "45d7176701f16c5a5e00a4798791c1964bc231491b879369c818dd9a9c764871" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" device_frame: dependency: transitive description: name: device_frame - sha256: afe76182aec178d171953d9b4a50a43c57c7cf3c77d8b09a48bf30c8fa04dd9d - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" device_info_plus: dependency: "direct main" description: name: device_info_plus - sha256: "8d99246809e63d93e4e68fade79495d81f445ad735bde2b129b19c0adddcaf1a" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "7.0.1" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface - sha256: "8b8b65e598b84fdb82c26cf9b3f05a6c4978636e99b0c070bae5905a24728199" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.0.1" device_preview: dependency: "direct main" description: name: device_preview - sha256: "2f097bf31b929e15e6756dbe0ec1bcb63952ab9ed51c25dc5a2c722d2b21fdaf" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" dio: dependency: "direct main" description: name: dio - sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.0.6" dio_http2_adapter: dependency: "direct main" description: name: dio_http2_adapter - sha256: f4ce5e29aaf24c6c1b99b2135c8f4f03c3e2f1b7b535bbfdc859f0c5a74a8298 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" dmdata_telegram_json: dependency: "direct main" description: name: dmdata_telegram_json - sha256: c68df854023e9816268689c79a05c8ac2010b1976ef93106a5147b52d2874f62 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.0.6" dotenv: dependency: transitive description: name: dotenv - sha256: "301007cddf9995f8e4430d2f4840045dfbd57a5720b1a88ecd4ff9085ce2be79" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.0.1" dynamic_color: dependency: "direct main" description: name: dynamic_color - sha256: "37a15576f5a0bfd5555b613cf20ea3bd379607cf88d457374a16032f4e942174" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.5.4" envied: dependency: "direct main" description: name: envied - sha256: "2545198df33f6ecb701af530bcc4f85385950d9c71a75882c16c85d0f95d0928" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.2.4" envied_generator: dependency: "direct dev" description: name: envied_generator - sha256: ebcf7d808a563383aa683899b212357dda7a2c4fa087a0c287b69dceee740f46 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.2.3+1" expandable: dependency: "direct main" description: name: expandable - sha256: "9604d612d4d1146dafa96c6d8eec9c2ff0994658d6d09fed720ab788c7f5afc2" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "5.0.1" extra_pedantic: dependency: transitive description: name: extra_pedantic - sha256: eb9cc0842dc1c980f00fd226364456d2169d54f7118b8ae16443188063edce0b - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.5.0" fake_async: dependency: transitive description: name: fake_async - sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.3.1" ffi: dependency: transitive description: name: ffi - sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" file: dependency: transitive description: name: file - sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.1.4" firebase_analytics: dependency: "direct main" description: name: firebase_analytics - sha256: "32e4090850ceb516dd6e2ec2a067f6468137d80238e4c175214f995b0e6563cb" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "10.0.6" firebase_analytics_platform_interface: dependency: transitive description: name: firebase_analytics_platform_interface - sha256: "1a6cdee97a1de2d4d583217aad4b4861ea6c57f7826abc34cef1664a7bb8677d" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.3.14" firebase_analytics_web: dependency: transitive description: name: firebase_analytics_web - sha256: "2546aad330770046da97fd5f98ae6029fda048f6ef3c25e3ad9cace250c38153" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.5.1+5" firebase_core: dependency: "direct main" description: name: firebase_core - sha256: "904bd270364cf4dfaf3c58dc6939c4c7ad26e2877d820dc295ade2cd589d70f3" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.3.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: "5fab93f5b354648efa62e7cc829c90efb68c8796eecf87e0888cae2d5f3accd4" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.5.2" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: a2acf43001a7fcd2997ce6b487b17666077be507d885c9941dd870a16aef3040 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" firebase_crashlytics: dependency: "direct main" description: name: firebase_crashlytics - sha256: "5cef9f58c38d11040f275daefc853a8be241270b3e94b3c0ee4c5451d871f39b" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.6" firebase_crashlytics_platform_interface: dependency: transitive description: name: firebase_crashlytics_platform_interface - sha256: "533861182fc4e3d209726fc6583395ea1a48f6a2fcd8cb091101846afd73134d" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.3.7" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: "29e2d2e20adaff69e0ea55b9034f7c1d28e43e3ed4a3a71f4ea5c5104c2247c7" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "14.1.1" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "7367f7cd05d77a620db7e687a71c5560894b8cf742ec09e39dfcd71f484a8fc2" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.2.7" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: "39569dc2bcdf32a347b2f6d819ed1b325bae83a2ff4667a7368d0a0b1a66fa2a" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.2.7" firebase_performance: dependency: "direct main" description: name: firebase_performance - sha256: f5c59d7eaed91804024415371df1b1c3a4b7d8ef98ca452bf75956cc482142cd - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.9.0+6" firebase_performance_platform_interface: dependency: transitive description: name: firebase_performance_platform_interface - sha256: e8e8665c1429bb9c344c2e605a4288a7154524e66c26aafdbf9f64bf10806b4a - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.1.1+26" firebase_performance_web: dependency: transitive description: name: firebase_performance_web - sha256: "02d24a4e7d5747575db330aa35e19cace22db23b14519d95c1c07a0619cfec06" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.1.1+15" fixnum: dependency: transitive description: name: fixnum - sha256: "04be3e934c52e082558cc9ee21f42f5c1cd7a1262f4c63cd0357c08d5bba81ec" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" flutter: @@ -562,40 +500,35 @@ packages: dependency: "direct main" description: name: flutter_colorpicker - sha256: "458a6ed8ea480eb16ff892aedb4b7092b2804affd7e046591fb03127e8d8ef8b" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.3" flutter_foreground_task: dependency: "direct main" description: name: flutter_foreground_task - sha256: "5eb81adfd98c77f4d4803ae80d7e0573fd35f706fce6aaa7376656a15ba2d1e0" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.10.0" flutter_hooks: dependency: "direct main" description: name: flutter_hooks - sha256: "2b202559a4ed3656bbb7aae9d8b335fb0037b23acc7ae3f377d1ba0b95c21aec" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.18.5+1" flutter_launcher_icons: dependency: "direct dev" description: name: flutter_launcher_icons - sha256: a9de6706cd844668beac27c0aed5910fa0534832b3c2cad61a5fd977fce82a5d - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.10.0" flutter_lints: dependency: "direct dev" description: name: flutter_lints - sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" flutter_localizations: @@ -607,72 +540,63 @@ packages: dependency: "direct main" description: name: flutter_markdown - sha256: "981442432b632237ffc1cf8092b4173b9e9f2278b5740637287c3069b51c8f09" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.6.13" flutter_native_splash: dependency: "direct main" description: name: flutter_native_splash - sha256: "13e50afa9e94912f319ec0944182c55843ce32ebce9bb857a2ee4f8b9f19bb26" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.2.14" flutter_riverpod: dependency: "direct main" description: name: flutter_riverpod - sha256: "371f6e8acb69dbe8aa3e0a50c8a65f8a9352b599134d585cc4923261cb5ae4d6" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.1" flutter_secure_storage: dependency: "direct main" description: name: flutter_secure_storage - sha256: a12d0213eab6848033b824fce82ef33229ec638debae46ef3d570d8b1146949b - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.0.0" flutter_secure_storage_linux: dependency: transitive description: name: flutter_secure_storage_linux - sha256: "7b36defaed0a994cc58d6a169a7c89c695ea660ef86903df13c2a2708fb1e1bb" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.1" flutter_secure_storage_macos: dependency: transitive description: name: flutter_secure_storage_macos - sha256: cd8eff6ebb4d9083aa3a57f29da00df837a869e8d5c65d9ad1ce549037c55d06 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.1" flutter_secure_storage_platform_interface: dependency: transitive description: name: flutter_secure_storage_platform_interface - sha256: "9af003dec5ba9f959300fd76ac8adf5608fbfbc957cdd7a987af206a8e073b32" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" flutter_secure_storage_web: dependency: transitive description: name: flutter_secure_storage_web - sha256: "926716d84eb45220cb1783af629093301613f5e5b51da7c1813e430d69bd716f" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.2" flutter_secure_storage_windows: dependency: transitive description: name: flutter_secure_storage_windows - sha256: cf9fd49c2807f80dc01f449592e1e7971a3697d1e248b653efb8323536dc2961 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.2" flutter_test: @@ -684,8 +608,7 @@ packages: dependency: "direct main" description: name: flutter_tts - sha256: bdd00b7976efd840fb0759822b2d2c1ad39819ea4db55f069d2b7590cc316bc4 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.6.1" flutter_web_plugins: @@ -697,672 +620,588 @@ packages: dependency: "direct main" description: name: fluttertoast - sha256: "7a738eddad04c7b27a1ecfecd12e8ecd4b188cdd2d91c252a02a4aba65838c9d" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "8.1.1" freezed: dependency: "direct dev" description: name: freezed - sha256: "7070a65156b1d60b81649005843b9a6ec861db6903dec2db082c95473c8f5f72" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.2.1" freezed_annotation: dependency: "direct main" description: name: freezed_annotation - sha256: aeac15850ef1b38ee368d4c53ba9a847e900bb2c53a4db3f6881cbb3cb684338 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.2.0" frontend_server_client: dependency: transitive description: name: frontend_server_client - sha256: "82715f8041a85a534a7bf64400b2ee0bb3d594ccf695d97c0bb017259657ff5d" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" functions_client: dependency: transitive description: name: functions_client - sha256: "1cd3af45489d397de11c9049193466766fdc63834b7e7a135e89c1bbaea586d3" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" geodesy: dependency: transitive description: name: geodesy - sha256: d9959000de938adf760f946546ccbf9ebdff8f4f6d0b5c54e8b8b1ed350b1028 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.4.0-nullsafety.0" geojson: dependency: "direct main" description: name: geojson - sha256: "8aab8116d074e92ef2d1ade25ec5ae90ea8bf024a920ab46703c433ffe08878f" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" geopoint: dependency: transitive description: name: geopoint - sha256: "594afb50a689e6584b80b7de8332c83a78e50725dc4324b2c014d19c56de5e3f" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" glob: dependency: transitive description: name: glob - sha256: "4515b5b6ddb505ebdd242a5f2cc5d22d3d6a80013789debfbda7777f47ea308c" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.1" go_router: dependency: "direct main" description: name: go_router - sha256: cc97ff57aec06c9f5cccc4bf07b6577c11d16633075f481ec1aabc9182b703f2 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "5.1.10" go_router_builder: dependency: "direct dev" description: name: go_router_builder - sha256: "1ca3a681ca62bc174ad01aeb0c1c5475a58e62e5c09912a1eaedc4635c5180a8" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.15" gotrue: dependency: transitive description: name: gotrue - sha256: c218c1ba6339a0a50c39ee0553517f7b011a5b0d36a1129fed80fa6eb0f1c33f - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.2.0" graphs: dependency: transitive description: name: graphs - sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.2.0" + group_button: + dependency: transitive + description: + name: group_button + url: "https://pub.dartlang.org" + source: hosted + version: "5.2.2" hive: dependency: transitive description: name: hive - sha256: "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.2.3" hive_flutter: dependency: transitive description: name: hive_flutter - sha256: dca1da446b1d808a51689fb5d0c6c9510c0a2ba01e22805d492c73b68e33eecc - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" hooks_riverpod: dependency: "direct main" description: name: hooks_riverpod - sha256: "33b7f91a10d385e3b4e8aac60fe15711d7bf53d199cb672789b44623770ae7ae" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.1" html: dependency: "direct main" description: name: html - sha256: d9793e10dbe0e6c364f4c59bf3e01fb33a9b2a674bc7a1081693dba0614b6269 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.15.1" http: dependency: "direct main" description: name: http - sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.13.5" http2: dependency: transitive description: name: http2 - sha256: "58805ebc6513eed3b98ee0a455a8357e61d187bf2e0fdc1e53120770f78de258" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" http_multi_server: dependency: transitive description: name: http_multi_server - sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.2.1" http_parser: dependency: transitive description: name: http_parser - sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.0.2" image: dependency: "direct main" description: name: image - sha256: f6ffe2895e3c86c6ad5a27e6302cf807403463e397cb2f0c580f619ac2fa588b - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.2.2" intl: dependency: "direct main" description: name: intl - sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.17.0" io: dependency: transitive description: name: io - sha256: "0d4c73c3653ab85bf696d51a9657604c900a370549196a91f33e4c39af760852" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.3" isar: dependency: transitive description: name: isar - sha256: "5be35dbc489880fccc535da3d1c4b3f5fdeee6ebfcacd4b149e39e803c4029cd" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.5" isar_generator: dependency: "direct dev" description: name: isar_generator - sha256: ee4ab5d5b251bc7e86e1257793b57af100065831f00f3a12404b177ae53c2d69 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.5" iso: dependency: transitive description: name: iso - sha256: "7030a1a096f7924deb6cccde6c7d80473dddd54eeedf20402e3d6e51b1672b27" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" js: dependency: transitive description: name: js - sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "0.6.5" + version: "0.6.4" json_annotation: dependency: "direct main" description: name: json_annotation - sha256: "3520fa844009431b5d4491a5a778603520cdc399ab3406332dcc50f93547258c" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.7.0" json_serializable: dependency: "direct dev" description: name: json_serializable - sha256: f3c2c18a7889580f71926f30c1937727c8c7d4f3a435f8f5e8b0ddd25253ef5d - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.5.4" jwt_decode: dependency: transitive description: name: jwt_decode - sha256: d2e9f68c052b2225130977429d30f187aa1981d789c76ad104a32243cfdebfbb - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.3.1" latlong2: dependency: "direct main" description: name: latlong2 - sha256: "408993a0e3f46e79ce1f129e4cb0386eef6d48dfa6394939ecacfbd7049154ec" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.8.1" lints: dependency: transitive description: name: lints - sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" logger: dependency: "direct main" description: name: logger - sha256: "5076f09225f91dc49289a4ccb92df2eeea9ea01cf7c26d49b3a1f04c6a49eec1" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" logging: dependency: transitive description: name: logging - sha256: c0bbfe94d46aedf9b8b3e695cf3bd48c8e14b35e3b2c639e0aa7755d589ba946 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" - lottie: - dependency: "direct dev" - description: - name: lottie - sha256: "893da7a0022ec2fcaa616f34529a081f617e86cc501105b856e5a3184c58c7c2" - url: "https://pub.dev" - source: hosted - version: "1.4.3" markdown: dependency: transitive description: name: markdown - sha256: c2b81e184067b41d0264d514f7cdaa2c02d38511e39d6521a1ccc238f6d7b3f2 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.0.1" matcher: dependency: transitive description: name: matcher - sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "0.12.13" + version: "0.12.12" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "0.2.0" + version: "0.1.5" meta: dependency: transitive description: name: meta - sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.8.0" mime: dependency: transitive description: name: mime - sha256: dab22e92b41aa1255ea90ddc4bc2feaf35544fd0728e209638cad041a6e3928a - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.2" nested: dependency: transitive description: name: nested - sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" oauth1: dependency: "direct main" description: name: oauth1 - sha256: bc23d3d5d36ba1cb39ba0f9ad18d29ab08a7c4e06f1d0fa7b2fb9b0225622873 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" package_config: dependency: transitive description: name: package_config - sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" package_info_plus: dependency: "direct main" description: name: package_info_plus - sha256: f619162573096d428ccde2e33f92e05b5a179cd6f0e3120c1005f181bee8ed16 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.2" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.1" path: dependency: transitive description: name: path - sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.8.2" path_provider: dependency: "direct main" description: name: path_provider - sha256: "050e8e85e4b7fecdf2bb3682c1c64c4887a183720c802d323de8a5fd76d372dd" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.11" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "1dab723dd8feeb80afb39c7be894f09df1457243d930010f6f328fb8c660c5e1" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.21" path_provider_ios: dependency: transitive description: name: path_provider_ios - sha256: "03d639406f5343478352433f00d3c4394d52dac8df3d847869c5e2333e0bbce8" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.11" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: ab0987bf95bc591da42dffb38c77398fc43309f0b9b894dcc5d6f40c4b26c379 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.7" path_provider_macos: dependency: transitive description: name: path_provider_macos - sha256: "2a97e7fbb7ae9dcd0dfc1220a78e9ec3e71da691912e617e8715ff2a13086ae8" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.6" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: f0abc8ebd7253741f05488b4813d936b4d07c6bae3e86148a09e342ee4b08e76 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.5" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: bcabbe399d4042b8ee687e17548d5d3f527255253b4a639f5f8d2094a9c2b45c - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.3" path_to_regexp: dependency: transitive description: name: path_to_regexp - sha256: "169d78fbd55e61ea8873bcca545979f559d22238f66facdd7ef30870c7f53327" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.4.0" pedantic: dependency: transitive description: name: pedantic - sha256: "67fc27ed9639506c856c840ccce7594d0bdcd91bc8d53d6e52359449a1d50602" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.11.1" pedantic_mono: dependency: "direct dev" description: name: pedantic_mono - sha256: e60a16f24fa067879aa9d881d3a1ebd32372cc0dc18afbbef6d66e8368290e0a - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.20.0" petitparser: dependency: transitive description: name: petitparser - sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "5.1.0" platform: dependency: transitive description: name: platform - sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.3" pointycastle: dependency: transitive description: name: pointycastle - sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.6.2" pool: dependency: transitive description: name: pool - sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.5.1" postgrest: dependency: transitive description: name: postgrest - sha256: "9d04cf56021f098fdb97dfbfddefc13351bf43c1453b5196742ebe3aff2655a5" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.1" process: dependency: transitive description: name: process - sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "4.2.4" provider: dependency: transitive description: name: provider - sha256: e1e7413d70444ea3096815a60fe5da1b11bda8a9dc4769252cc82c53536f8bcc - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.0.4" pub_semver: dependency: transitive description: name: pub_semver - sha256: "307de764d305289ff24ad257ad5c5793ce56d04947599ad68b3baa124105fc17" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.3" pubspec_parse: dependency: transitive description: name: pubspec_parse - sha256: "75f6614d6dde2dc68948dffbaa4fe5dae32cd700eb9fb763fe11dfb45a3c4d0a" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.2.1" realtime_client: dependency: "direct main" description: name: realtime_client - sha256: c882ad467a8b9842aa4f4719c5cb0c2b0aaa63471b5040c49342c3a68f97125d - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" restart_app: dependency: "direct main" description: name: restart_app - sha256: "2c3de763c51f6f9565f910ccf37ca039e2ba4a0d14c4749cae299e73b24285e6" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0+1" retry: dependency: transitive description: name: retry - sha256: "45dfeebaf095b606fdb9dbfb4c114cc204449bc274783b452658365e03afdbab" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.0" riverpod: dependency: transitive description: name: riverpod - sha256: "899cd0999b2f3b798349d9b5639cfea81d406c011bd914097145ff92e91b29f9" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.1" rxdart: dependency: transitive description: name: rxdart - sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.27.7" share_plus: dependency: "direct main" description: name: share_plus - sha256: e387077716f80609bb979cd199331033326033ecd1c8f200a90c5f57b1c9f55e - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.3.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "82ddd4ab9260c295e6e39612d4ff00390b9a7a21f1bb1da771e2f232d80ab8a1" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.2.0" shared_preferences: dependency: "direct main" description: name: shared_preferences - sha256: "76917b7d4b9526b2ba416808a7eb9fb2863c1a09cf63ec85f1453da240fa818a" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.15" shared_preferences_android: dependency: "direct main" description: name: shared_preferences_android - sha256: "8e251f3c986002b65fed6396bce81f379fb63c27317d49743cf289fd0fd1ab97" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.14" shared_preferences_ios: dependency: "direct main" description: name: shared_preferences_ios - sha256: "585a14cefec7da8c9c2fb8cd283a3bb726b4155c0952afe6a0caaa7b2272de34" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.1" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "28aefc1261746e7bad3d09799496054beb84e8c4ffcdfed7734e17b4ada459a5" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.1" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos - sha256: fbb94bf296576f49be37a1496d5951796211a8db0aa22cc0d68c46440dad808c - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.4" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: da9431745ede5ece47bc26d5d73a9d3c6936ef6945c101a5aca46f62e52c1cf3 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: a4b5bc37fe1b368bbc81f953197d55e12f49d0296e7e412dfe2d2d77d6929958 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.4" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "97f7ab9a7da96d9cf19581f5de520ceb529548498bd6b5e0ccd02d68a0d15eba" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.1" shelf: dependency: transitive description: name: shelf - sha256: c24a96135a2ccd62c64b69315a14adc5c3419df63b4d7c05832a346fdb73682c - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.4.0" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - sha256: a988c0e8d8ffbdb8a28aa7ec8e449c260f3deb808781fe1284d22c5bba7156e8 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.3" sky_engine: @@ -1374,282 +1213,268 @@ packages: dependency: transitive description: name: slugify - sha256: b272501565cb28050cac2d96b7bf28a2d24c8dae359280361d124f3093d337c3 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.0" source_gen: dependency: transitive description: name: source_gen - sha256: "2d79738b6bbf38a43920e2b8d189e9a3ce6cc201f4b8fc76be5e4fe377b1c38d" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.2.6" source_helper: dependency: transitive description: name: source_helper - sha256: "3b67aade1d52416149c633ba1bb36df44d97c6b51830c2198e934e3fca87ca1f" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.3.3" source_span: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "1.9.1" + version: "1.9.0" stack_trace: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "1.11.0" + version: "1.10.0" state_notifier: dependency: "direct main" description: name: state_notifier - sha256: "8fe42610f179b843b12371e40db58c9444f8757f8b69d181c97e50787caed289" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.7.2+1" storage_client: dependency: transitive description: name: storage_client - sha256: "028862c8355b1e8b75b34cff25fb6086aa80232d25a34c81baef6a35ab2c2a06" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.1.1" + version: "2.1.0" stream_transform: dependency: transitive description: name: stream_transform - sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "1.2.0" + version: "1.1.1" supabase: dependency: "direct main" description: name: supabase - sha256: fc187ce7f8ff78ca86d125537ce9bd88cc0593ea6261ef5adc23f8851f3b55f4 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "1.1.2" + version: "1.2.0" supabase_flutter: dependency: "direct main" description: name: supabase_flutter - sha256: "29cbb1d76ec9aed66471238296f39f0ac5d166f7f8f9c13247325c3d6ca15a47" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.1.0" + talker: + dependency: transitive + description: + name: talker + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + talker_flutter: + dependency: "direct main" + description: + name: talker_flutter + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" + talker_logger: + dependency: transitive + description: + name: talker_logger + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.0" term_glyph: dependency: transitive description: name: term_glyph - sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "0.4.16" + version: "0.4.12" time: dependency: transitive description: name: time - sha256: "83427e11d9072e038364a5e4da559e85869b227cf699a541be0da74f14140124" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.3" timing: dependency: transitive description: name: timing - sha256: c386d07d7f5efc613479a7c4d9d64b03710b03cfaa7e8ad5f2bfb295a1f0dfad - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.0" typed_data: dependency: transitive description: name: typed_data - sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.3.1" universal_io: dependency: transitive description: name: universal_io - sha256: "79f78ddad839ee3aae3ec7c01eb4575faf0d5c860f8e5223bc9f9c17f7f03cef" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.4" url_launcher: dependency: "direct main" description: name: url_launcher - sha256: "568176fc8ab5ac1d88ff0db8ff28659d103851670dda55e83b485664c2309299" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.1.6" url_launcher_android: dependency: transitive description: name: url_launcher_android - sha256: "2514dc16ac169adf55159268d7bf70317d9f2fc9ef5bb02020bb7ad710c0aeb4" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.0.21" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "6ba7dddee26c9fae27c9203c424631109d73c8fa26cfa7bc3e35e751cb87f62e" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "6.0.17" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "360fa359ab06bcb4f7c5cd3123a2a9a4d3364d4575d27c4b33468bd4497dd094" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: a9b3ea9043eabfaadfa3fb89de67a11210d85569086d22b3854484beab8b3978 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - sha256: "4eae912628763eb48fc214522e58e942fd16ce195407dbf45638239523c759a6" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.1.1" url_launcher_web: dependency: transitive description: name: url_launcher_web - sha256: "5669882643b96bb6d5786637cac727c6e918a790053b09245fd4513b8a07df2a" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.0.13" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: e3c3b16d3104260c10eea3b0e34272aaa57921f83148b0619f74c2eced9b7ef1 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.1" uuid: dependency: transitive description: name: uuid - sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.0.7" vector_math: dependency: transitive description: name: vector_math - sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "2.1.4" + version: "2.1.2" watcher: dependency: transitive description: name: watcher - sha256: "6a7f46926b01ce81bfc339da6a7f20afbe7733eff9846f6d6a5466aa4c6667c0" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.2" web_socket_channel: dependency: "direct main" description: name: web_socket_channel - sha256: "3a969ddcc204a3e34e863d204b29c0752716f78b6f9cc8235083208d268a4ccd" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "2.2.0" win32: dependency: transitive description: name: win32 - sha256: d13ac5deea7327f027b3b97ee19ee210f68256ecf3f1a304bcfb992ee947637c - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.1" xdg_directories: dependency: transitive description: name: xdg_directories - sha256: "11541eedefbcaec9de35aa82650b695297ce668662bbd6e3911a7fabdbde589f" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "0.2.0+2" xml: dependency: transitive description: name: xml - sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted - version: "6.2.2" + version: "6.1.0" xxh3: dependency: transitive description: name: xxh3 - sha256: a92b30944a9aeb4e3d4f3c3d4ddb3c7816ca73475cd603682c4f8149690f56d7 - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "1.0.1" yaml: dependency: transitive description: name: yaml - sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" - url: "https://pub.dev" + url: "https://pub.dartlang.org" source: hosted version: "3.1.1" sdks: - dart: ">=2.18.2 <4.0.0" + dart: ">=2.18.2 <3.0.0" flutter: ">=3.3.0" diff --git a/pubspec.yaml b/pubspec.yaml index 81b8ef0f5..5ede7a095 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -64,6 +64,7 @@ dependencies: state_notifier: ^0.7.2+1 supabase: ^1.0.1 supabase_flutter: ^1.0.1 + talker_flutter: ^2.1.0 url_launcher: ^6.1.6 web_socket_channel: ^2.2.0 @@ -78,7 +79,6 @@ dev_dependencies: go_router_builder: ^1.0.13 isar_generator: ^3.0.2 json_serializable: ^6.4.1 - lottie: ^1.4.3 pedantic_mono: ^1.19.2+1 flutter: From 6d9b087b7ec8dd12a9c8c6f24248b71722898a2a Mon Sep 17 00:00:00 2001 From: YumNumm Date: Sun, 20 Nov 2022 21:59:35 +0900 Subject: [PATCH 02/13] =?UTF-8?q?lib:=20Flutter=E3=81=AE=E3=82=A2=E3=83=83?= =?UTF-8?q?=E3=83=97=E3=83=87=E3=83=BC=E3=83=88=20Flutter=203.3.7=E3=81=8B?= =?UTF-8?q?=E3=82=893.3.8=E3=81=B8=E3=82=A2=E3=83=83=E3=83=97=E3=83=87?= =?UTF-8?q?=E3=83=BC=E3=83=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dart_tool/package_config.json | 470 +++++++++--------- .fvm/fvm_config.json | 2 +- macos/Flutter/GeneratedPluginRegistrant.swift | 40 ++ .../ephemeral/Flutter-Generated.xcconfig | 11 + .../ephemeral/flutter_export_environment.sh | 12 + 5 files changed, 311 insertions(+), 224 deletions(-) create mode 100644 macos/Flutter/GeneratedPluginRegistrant.swift create mode 100644 macos/Flutter/ephemeral/Flutter-Generated.xcconfig create mode 100644 macos/Flutter/ephemeral/flutter_export_environment.sh diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index 883a78e46..cc6730269 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -3,1249 +3,1273 @@ "packages": [ { "name": "_fe_analyzer_shared", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/_fe_analyzer_shared-50.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/_fe_analyzer_shared-50.0.0", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "_flutterfire_internals", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/_flutterfire_internals-1.0.9", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/_flutterfire_internals-1.0.9", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "analyzer", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/analyzer-5.2.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/analyzer-5.2.0", "packageUri": "lib/", "languageVersion": "2.17" }, + { + "name": "ansicolor", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/ansicolor-2.0.1", + "packageUri": "lib/", + "languageVersion": "2.12" + }, { "name": "app_links", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/app_links-3.3.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/app_links-3.3.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "app_links_macos", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/app_links_macos-1.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/app_links_macos-1.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "app_links_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/app_links_platform_interface-1.0.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/app_links_platform_interface-1.0.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "app_links_web", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/app_links_web-1.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/app_links_web-1.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "app_links_windows", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/app_links_windows-1.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/app_links_windows-1.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "archive", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/archive-3.3.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/archive-3.3.4", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "args", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/args-2.3.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/args-2.3.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "async", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/async-2.10.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/async-2.9.0", "packageUri": "lib/", - "languageVersion": "2.18" + "languageVersion": "2.14" }, { "name": "awesome_notifications", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/awesome_notifications-0.7.4+1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/awesome_notifications-0.7.4+1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "boolean_selector", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/boolean_selector-2.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/boolean_selector-2.1.0", "packageUri": "lib/", - "languageVersion": "2.17" + "languageVersion": "2.12" }, { "name": "bordered_text", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/bordered_text-2.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/bordered_text-2.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "build", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/build-2.3.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/build-2.3.1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "build_config", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/build_config-1.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/build_config-1.1.1", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "build_daemon", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/build_daemon-3.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/build_daemon-3.1.0", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "build_resolvers", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/build_resolvers-2.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/build_resolvers-2.1.0", "packageUri": "lib/", "languageVersion": "2.18" }, { "name": "build_runner", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/build_runner-2.3.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/build_runner-2.3.2", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "build_runner_core", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/build_runner_core-7.2.7", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/build_runner_core-7.2.7", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "built_collection", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/built_collection-5.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/built_collection-5.1.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "built_value", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/built_value-8.4.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/built_value-8.4.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "characters", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/characters-1.2.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/characters-1.2.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "checked_yaml", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/checked_yaml-2.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/checked_yaml-2.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "cli_util", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/cli_util-0.3.5", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/cli_util-0.3.5", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "clock", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/clock-1.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/clock-1.1.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "cloud_firestore_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/cloud_firestore_platform_interface-5.9.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/cloud_firestore_platform_interface-5.9.0", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "cloud_firestore_web", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/cloud_firestore_web-3.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/cloud_firestore_web-3.1.0", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "code_builder", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/code_builder-4.3.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/code_builder-4.3.0", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "collection", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/collection-1.17.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/collection-1.16.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "convert", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/convert-3.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/convert-3.1.1", "packageUri": "lib/", "languageVersion": "2.18" }, { "name": "cross_file", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/cross_file-0.3.3+2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/cross_file-0.3.3+2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "crypto", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/crypto-3.0.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/crypto-3.0.2", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "csslib", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/csslib-0.17.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/csslib-0.17.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "csv", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/csv-5.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/csv-5.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "cupertino_icons", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/cupertino_icons-1.0.5", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/cupertino_icons-1.0.5", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "dart_style", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/dart_style-2.2.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/dart_style-2.2.4", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "dartx", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/dartx-1.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/dartx-1.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "device_frame", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/device_frame-1.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/device_frame-1.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "device_info_plus", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/device_info_plus-7.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/device_info_plus-7.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "device_info_plus_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/device_info_plus_platform_interface-6.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/device_info_plus_platform_interface-6.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "device_preview", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/device_preview-1.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/device_preview-1.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "dio", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/dio-4.0.6", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/dio-4.0.6", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "dio_http2_adapter", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/dio_http2_adapter-2.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/dio_http2_adapter-2.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "dmdata_telegram_json", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/dmdata_telegram_json-0.0.6", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/dmdata_telegram_json-0.0.6", "packageUri": "lib/", "languageVersion": "2.18" }, { "name": "dotenv", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/dotenv-4.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/dotenv-4.0.1", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "dynamic_color", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/dynamic_color-1.5.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/dynamic_color-1.5.4", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "envied", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/envied-0.2.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/envied-0.2.4", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "envied_generator", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/envied_generator-0.2.3+1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/envied_generator-0.2.3+1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "expandable", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/expandable-5.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/expandable-5.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "extra_pedantic", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/extra_pedantic-1.5.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/extra_pedantic-1.5.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "fake_async", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/fake_async-1.3.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/fake_async-1.3.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "ffi", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/ffi-2.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/ffi-2.0.1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "file", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/file-6.1.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/file-6.1.4", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "firebase_analytics", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_analytics-10.0.6", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_analytics-10.0.6", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_analytics_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_analytics_platform_interface-3.3.14", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_analytics_platform_interface-3.3.14", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_analytics_web", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_analytics_web-0.5.1+5", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_analytics_web-0.5.1+5", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_core", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_core-2.3.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_core-2.3.0", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_core_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_core_platform_interface-4.5.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_core_platform_interface-4.5.2", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_core_web", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_core_web-2.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_core_web-2.0.1", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_crashlytics", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_crashlytics-3.0.6", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_crashlytics-3.0.6", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_crashlytics_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_crashlytics_platform_interface-3.3.7", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_crashlytics_platform_interface-3.3.7", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_messaging", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_messaging-14.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_messaging-14.1.1", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_messaging_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_messaging_platform_interface-4.2.7", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_messaging_platform_interface-4.2.7", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_messaging_web", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_messaging_web-3.2.7", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_messaging_web-3.2.7", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_performance", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_performance-0.9.0+6", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_performance-0.9.0+6", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_performance_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_performance_platform_interface-0.1.1+26", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_performance_platform_interface-0.1.1+26", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "firebase_performance_web", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/firebase_performance_web-0.1.1+15", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/firebase_performance_web-0.1.1+15", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "fixnum", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/fixnum-1.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/fixnum-1.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/packages/flutter", + "rootUri": "file:///C:/Users/onory/fvm/versions/3.3.8/packages/flutter", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "flutter_colorpicker", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_colorpicker-1.0.3", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_colorpicker-1.0.3", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter_foreground_task", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_foreground_task-3.10.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_foreground_task-3.10.0", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "flutter_hooks", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_hooks-0.18.5+1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_hooks-0.18.5+1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "flutter_launcher_icons", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_launcher_icons-0.10.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_launcher_icons-0.10.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter_lints", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_lints-2.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_lints-2.0.1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "flutter_localizations", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/packages/flutter_localizations", + "rootUri": "file:///C:/Users/onory/fvm/versions/3.3.8/packages/flutter_localizations", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "flutter_markdown", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_markdown-0.6.13", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_markdown-0.6.13", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter_native_splash", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_native_splash-2.2.14", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_native_splash-2.2.14", "packageUri": "lib/", "languageVersion": "2.18" }, { "name": "flutter_riverpod", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_riverpod-2.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_riverpod-2.1.1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "flutter_secure_storage", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_secure_storage-6.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_secure_storage-6.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter_secure_storage_linux", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_secure_storage_linux-1.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_secure_storage_linux-1.1.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter_secure_storage_macos", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_secure_storage_macos-1.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_secure_storage_macos-1.1.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter_secure_storage_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_secure_storage_platform_interface-1.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_secure_storage_platform_interface-1.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter_secure_storage_web", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_secure_storage_web-1.0.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_secure_storage_web-1.0.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter_secure_storage_windows", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_secure_storage_windows-1.1.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_secure_storage_windows-1.1.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter_test", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/packages/flutter_test", + "rootUri": "file:///C:/Users/onory/fvm/versions/3.3.8/packages/flutter_test", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "flutter_tts", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/flutter_tts-3.6.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/flutter_tts-3.6.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "flutter_web_plugins", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/packages/flutter_web_plugins", + "rootUri": "file:///C:/Users/onory/fvm/versions/3.3.8/packages/flutter_web_plugins", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "fluttertoast", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/fluttertoast-8.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/fluttertoast-8.1.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "freezed", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/freezed-2.2.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/freezed-2.2.1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "freezed_annotation", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/freezed_annotation-2.2.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/freezed_annotation-2.2.0", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "frontend_server_client", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/frontend_server_client-3.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/frontend_server_client-3.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "functions_client", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/functions_client-1.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/functions_client-1.0.0", "packageUri": "lib/", "languageVersion": "2.15" }, { "name": "geodesy", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/geodesy-0.4.0-nullsafety.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/geodesy-0.4.0-nullsafety.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "geojson", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/geojson-1.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/geojson-1.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "geopoint", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/geopoint-1.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/geopoint-1.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "glob", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/glob-2.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/glob-2.1.1", "packageUri": "lib/", "languageVersion": "2.15" }, { "name": "go_router", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/go_router-5.1.10", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/go_router-5.1.10", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "go_router_builder", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/go_router_builder-1.0.15", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/go_router_builder-1.0.15", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "gotrue", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/gotrue-1.2.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/gotrue-1.2.0", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "graphs", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/graphs-2.2.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/graphs-2.2.0", + "packageUri": "lib/", + "languageVersion": "2.12" + }, + { + "name": "group_button", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/group_button-5.2.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "hive", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/hive-2.2.3", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/hive-2.2.3", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "hive_flutter", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/hive_flutter-1.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/hive_flutter-1.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "hooks_riverpod", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/hooks_riverpod-2.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/hooks_riverpod-2.1.1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "html", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/html-0.15.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/html-0.15.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "http", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/http-0.13.5", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/http-0.13.5", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "http2", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/http2-2.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/http2-2.0.1", "packageUri": "lib/", "languageVersion": "2.15" }, { "name": "http_multi_server", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/http_multi_server-3.2.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/http_multi_server-3.2.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "http_parser", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/http_parser-4.0.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/http_parser-4.0.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "image", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/image-3.2.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/image-3.2.2", "packageUri": "lib/", "languageVersion": "2.15" }, { "name": "intl", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/intl-0.17.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/intl-0.17.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "io", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/io-1.0.3", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/io-1.0.3", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "isar", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/isar-3.0.5", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/isar-3.0.5", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "isar_generator", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/isar_generator-3.0.5", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/isar_generator-3.0.5", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "iso", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/iso-1.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/iso-1.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "js", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/js-0.6.5", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/js-0.6.4", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "json_annotation", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/json_annotation-4.7.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/json_annotation-4.7.0", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "json_serializable", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/json_serializable-6.5.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/json_serializable-6.5.4", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "jwt_decode", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/jwt_decode-0.3.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/jwt_decode-0.3.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "latlong2", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/latlong2-0.8.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/latlong2-0.8.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "lints", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/lints-2.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/lints-2.0.1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "logger", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/logger-1.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/logger-1.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "logging", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/logging-1.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/logging-1.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, - { - "name": "lottie", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/lottie-1.4.3", - "packageUri": "lib/", - "languageVersion": "2.18" - }, { "name": "markdown", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/markdown-6.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/markdown-6.0.1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "matcher", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/matcher-0.12.13", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/matcher-0.12.12", "packageUri": "lib/", - "languageVersion": "2.18" + "languageVersion": "2.12" }, { "name": "material_color_utilities", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/material_color_utilities-0.2.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/material_color_utilities-0.1.5", "packageUri": "lib/", "languageVersion": "2.13" }, { "name": "meta", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/meta-1.8.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/meta-1.8.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "mime", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/mime-1.0.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/mime-1.0.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "nested", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/nested-1.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/nested-1.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "oauth1", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/oauth1-2.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/oauth1-2.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "package_config", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/package_config-2.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/package_config-2.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "package_info_plus", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/package_info_plus-3.0.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/package_info_plus-3.0.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "package_info_plus_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/package_info_plus_platform_interface-2.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/package_info_plus_platform_interface-2.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "path", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/path-1.8.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/path-1.8.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "path_provider", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/path_provider-2.0.11", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/path_provider-2.0.11", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "path_provider_android", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/path_provider_android-2.0.21", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/path_provider_android-2.0.21", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "path_provider_ios", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/path_provider_ios-2.0.11", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/path_provider_ios-2.0.11", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "path_provider_linux", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/path_provider_linux-2.1.7", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/path_provider_linux-2.1.7", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "path_provider_macos", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/path_provider_macos-2.0.6", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/path_provider_macos-2.0.6", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "path_provider_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/path_provider_platform_interface-2.0.5", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/path_provider_platform_interface-2.0.5", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "path_provider_windows", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/path_provider_windows-2.1.3", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/path_provider_windows-2.1.3", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "path_to_regexp", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/path_to_regexp-0.4.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/path_to_regexp-0.4.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "pedantic", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/pedantic-1.11.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/pedantic-1.11.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "pedantic_mono", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/pedantic_mono-1.20.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/pedantic_mono-1.20.0", "packageUri": "lib/", "languageVersion": "2.18" }, { "name": "petitparser", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/petitparser-5.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/petitparser-5.1.0", "packageUri": "lib/", "languageVersion": "2.18" }, { "name": "platform", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/platform-3.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/platform-3.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "plugin_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/plugin_platform_interface-2.1.3", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/plugin_platform_interface-2.1.3", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "pointycastle", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/pointycastle-3.6.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/pointycastle-3.6.2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "pool", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/pool-1.5.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/pool-1.5.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "postgrest", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/postgrest-1.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/postgrest-1.1.1", "packageUri": "lib/", "languageVersion": "2.15" }, { "name": "process", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/process-4.2.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/process-4.2.4", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "provider", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/provider-6.0.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/provider-6.0.4", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "pub_semver", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/pub_semver-2.1.3", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/pub_semver-2.1.3", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "pubspec_parse", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/pubspec_parse-1.2.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/pubspec_parse-1.2.1", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "realtime_client", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/realtime_client-1.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/realtime_client-1.0.0", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "restart_app", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/restart_app-1.1.0+1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/restart_app-1.1.0+1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "retry", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/retry-3.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/retry-3.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "riverpod", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/riverpod-2.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/riverpod-2.1.1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "rxdart", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/rxdart-0.27.7", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/rxdart-0.27.7", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "share_plus", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/share_plus-6.3.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/share_plus-6.3.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "share_plus_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/share_plus_platform_interface-3.2.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/share_plus_platform_interface-3.2.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "shared_preferences", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/shared_preferences-2.0.15", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/shared_preferences-2.0.15", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "shared_preferences_android", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/shared_preferences_android-2.0.14", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/shared_preferences_android-2.0.14", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "shared_preferences_ios", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/shared_preferences_ios-2.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/shared_preferences_ios-2.1.1", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "shared_preferences_linux", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/shared_preferences_linux-2.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/shared_preferences_linux-2.1.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "shared_preferences_macos", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/shared_preferences_macos-2.0.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/shared_preferences_macos-2.0.4", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "shared_preferences_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/shared_preferences_platform_interface-2.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/shared_preferences_platform_interface-2.1.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "shared_preferences_web", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/shared_preferences_web-2.0.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/shared_preferences_web-2.0.4", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "shared_preferences_windows", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/shared_preferences_windows-2.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/shared_preferences_windows-2.1.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "shelf", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/shelf-1.4.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/shelf-1.4.0", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "shelf_web_socket", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/shelf_web_socket-1.0.3", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/shelf_web_socket-1.0.3", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "sky_engine", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/bin/cache/pkg/sky_engine", + "rootUri": "file:///C:/Users/onory/fvm/versions/3.3.8/bin/cache/pkg/sky_engine", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "slugify", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/slugify-2.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/slugify-2.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "source_gen", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/source_gen-1.2.6", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/source_gen-1.2.6", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "source_helper", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/source_helper-1.3.3", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/source_helper-1.3.3", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "source_span", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/source_span-1.9.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/source_span-1.9.0", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "stack_trace", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/stack_trace-1.11.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/stack_trace-1.10.0", "packageUri": "lib/", - "languageVersion": "2.18" + "languageVersion": "2.12" }, { "name": "state_notifier", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/state_notifier-0.7.2+1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/state_notifier-0.7.2+1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "storage_client", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/storage_client-1.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/storage_client-1.1.0", "packageUri": "lib/", "languageVersion": "2.15" }, { "name": "stream_channel", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/stream_channel-2.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/stream_channel-2.1.0", "packageUri": "lib/", - "languageVersion": "2.14" + "languageVersion": "2.12" }, { "name": "stream_transform", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/stream_transform-2.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/stream_transform-2.1.0", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "string_scanner", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/string_scanner-1.2.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/string_scanner-1.1.1", "packageUri": "lib/", - "languageVersion": "2.18" + "languageVersion": "2.12" }, { "name": "supabase", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/supabase-1.1.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/supabase-1.2.0", "packageUri": "lib/", "languageVersion": "2.15" }, { "name": "supabase_flutter", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/supabase_flutter-1.1.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/supabase_flutter-1.1.0", + "packageUri": "lib/", + "languageVersion": "2.15" + }, + { + "name": "talker", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/talker-2.1.0", + "packageUri": "lib/", + "languageVersion": "2.15" + }, + { + "name": "talker_flutter", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/talker_flutter-2.1.0", + "packageUri": "lib/", + "languageVersion": "2.15" + }, + { + "name": "talker_logger", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/talker_logger-2.1.0", "packageUri": "lib/", "languageVersion": "2.15" }, { "name": "term_glyph", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/term_glyph-1.2.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/term_glyph-1.2.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "test_api", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/test_api-0.4.16", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/test_api-0.4.12", "packageUri": "lib/", - "languageVersion": "2.18" + "languageVersion": "2.12" }, { "name": "time", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/time-2.1.3", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/time-2.1.3", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "timing", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/timing-1.0.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/timing-1.0.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "typed_data", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/typed_data-1.3.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/typed_data-1.3.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "universal_io", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/universal_io-2.0.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/universal_io-2.0.4", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "url_launcher", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/url_launcher-6.1.6", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/url_launcher-6.1.6", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "url_launcher_android", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/url_launcher_android-6.0.21", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/url_launcher_android-6.0.21", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "url_launcher_ios", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/url_launcher_ios-6.0.17", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/url_launcher_ios-6.0.17", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "url_launcher_linux", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/url_launcher_linux-3.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/url_launcher_linux-3.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "url_launcher_macos", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/url_launcher_macos-3.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/url_launcher_macos-3.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "url_launcher_platform_interface", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/url_launcher_platform_interface-2.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/url_launcher_platform_interface-2.1.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "url_launcher_web", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/url_launcher_web-2.0.13", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/url_launcher_web-2.0.13", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "url_launcher_windows", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/url_launcher_windows-3.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/url_launcher_windows-3.0.1", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "uuid", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/uuid-3.0.7", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/uuid-3.0.7", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "vector_math", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/vector_math-2.1.4", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/vector_math-2.1.2", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "watcher", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/watcher-1.0.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/watcher-1.0.2", "packageUri": "lib/", "languageVersion": "2.14" }, { "name": "web_socket_channel", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/web_socket_channel-2.2.0", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/web_socket_channel-2.2.0", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "win32", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/win32-3.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/win32-3.1.1", "packageUri": "lib/", "languageVersion": "2.17" }, { "name": "xdg_directories", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/xdg_directories-0.2.0+2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/xdg_directories-0.2.0+2", "packageUri": "lib/", "languageVersion": "2.12" }, { "name": "xml", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/xml-6.2.2", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/xml-6.1.0", "packageUri": "lib/", - "languageVersion": "2.18" + "languageVersion": "2.17" }, { "name": "xxh3", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/xxh3-1.0.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/xxh3-1.0.1", "packageUri": "lib/", "languageVersion": "2.16" }, { "name": "yaml", - "rootUri": "file:///Users/builder/programs/flutter_3_3_7/.pub-cache/hosted/pub.dev/yaml-3.1.1", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/yaml-3.1.1", "packageUri": "lib/", "languageVersion": "2.12" }, @@ -1256,7 +1280,7 @@ "languageVersion": "2.18" } ], - "generated": "2022-11-19T13:06:13.069912Z", + "generated": "2022-11-20T12:01:31.914348Z", "generator": "pub", - "generatorVersion": "2.19.0-406.0.dev" + "generatorVersion": "2.18.4" } diff --git a/.fvm/fvm_config.json b/.fvm/fvm_config.json index 95b5a1367..f474c4f1b 100644 --- a/.fvm/fvm_config.json +++ b/.fvm/fvm_config.json @@ -1,4 +1,4 @@ { - "flutterSdkVersion": "3.3.7", + "flutterSdkVersion": "3.3.8", "flavors": {} } \ No newline at end of file diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift new file mode 100644 index 000000000..5b7f46fa8 --- /dev/null +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -0,0 +1,40 @@ +// +// Generated file. Do not edit. +// + +import FlutterMacOS +import Foundation + +import app_links_macos +import awesome_notifications +import device_info_plus +import dynamic_color +import firebase_analytics +import firebase_core +import firebase_crashlytics +import firebase_messaging +import flutter_secure_storage_macos +import flutter_tts +import package_info_plus +import path_provider_macos +import share_plus +import shared_preferences_macos +import url_launcher_macos + +func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { + AppLinksMacosPlugin.register(with: registry.registrar(forPlugin: "AppLinksMacosPlugin")) + AwesomeNotificationsPlugin.register(with: registry.registrar(forPlugin: "AwesomeNotificationsPlugin")) + DeviceInfoPlusMacosPlugin.register(with: registry.registrar(forPlugin: "DeviceInfoPlusMacosPlugin")) + DynamicColorPlugin.register(with: registry.registrar(forPlugin: "DynamicColorPlugin")) + FLTFirebaseAnalyticsPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseAnalyticsPlugin")) + FLTFirebaseCorePlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCorePlugin")) + FLTFirebaseCrashlyticsPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseCrashlyticsPlugin")) + FLTFirebaseMessagingPlugin.register(with: registry.registrar(forPlugin: "FLTFirebaseMessagingPlugin")) + FlutterSecureStorageMacosPlugin.register(with: registry.registrar(forPlugin: "FlutterSecureStorageMacosPlugin")) + FlutterTtsPlugin.register(with: registry.registrar(forPlugin: "FlutterTtsPlugin")) + FLTPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FLTPackageInfoPlusPlugin")) + PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) + SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) + SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) + UrlLauncherPlugin.register(with: registry.registrar(forPlugin: "UrlLauncherPlugin")) +} diff --git a/macos/Flutter/ephemeral/Flutter-Generated.xcconfig b/macos/Flutter/ephemeral/Flutter-Generated.xcconfig new file mode 100644 index 000000000..f0b1b8352 --- /dev/null +++ b/macos/Flutter/ephemeral/Flutter-Generated.xcconfig @@ -0,0 +1,11 @@ +// This is a generated file; do not edit or check into version control. +FLUTTER_ROOT=C:\Users\onory\fvm\versions\3.3.8 +FLUTTER_APPLICATION_PATH=C:\Users\onory\dev\EQMonitor +COCOAPODS_PARALLEL_CODE_SIGN=true +FLUTTER_BUILD_DIR=build +FLUTTER_BUILD_NAME=0.7.1 +FLUTTER_BUILD_NUMBER=400 +DART_OBFUSCATION=false +TRACK_WIDGET_CREATION=true +TREE_SHAKE_ICONS=false +PACKAGE_CONFIG=.dart_tool/package_config.json diff --git a/macos/Flutter/ephemeral/flutter_export_environment.sh b/macos/Flutter/ephemeral/flutter_export_environment.sh new file mode 100644 index 000000000..16fda08cd --- /dev/null +++ b/macos/Flutter/ephemeral/flutter_export_environment.sh @@ -0,0 +1,12 @@ +#!/bin/sh +# This is a generated file; do not edit or check into version control. +export "FLUTTER_ROOT=C:\Users\onory\fvm\versions\3.3.8" +export "FLUTTER_APPLICATION_PATH=C:\Users\onory\dev\EQMonitor" +export "COCOAPODS_PARALLEL_CODE_SIGN=true" +export "FLUTTER_BUILD_DIR=build" +export "FLUTTER_BUILD_NAME=0.7.1" +export "FLUTTER_BUILD_NUMBER=400" +export "DART_OBFUSCATION=false" +export "TRACK_WIDGET_CREATION=true" +export "TREE_SHAKE_ICONS=false" +export "PACKAGE_CONFIG=.dart_tool/package_config.json" From 5239ff955cfa4fe6b405b10b276a80382876ed62 Mon Sep 17 00:00:00 2001 From: YumNumm Date: Sun, 20 Nov 2022 22:00:19 +0900 Subject: [PATCH 03/13] =?UTF-8?q?fix:=20eewHistoryProvider=E3=82=92eewProv?= =?UTF-8?q?ider=E3=81=AB=E3=83=AA=E3=83=8D=E3=83=BC=E3=83=A0=20EEW?= =?UTF-8?q?=E3=81=AE=E5=B1=A5=E6=AD=B4=E3=82=92=E6=8F=90=E4=BE=9B=E3=81=99?= =?UTF-8?q?=E3=82=8BProvider=E3=81=A7=E3=81=AF=E3=81=AA=E3=81=84=E3=81=9F?= =?UTF-8?q?=E3=82=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/provider/earthquake/eew_controller.dart | 14 +-- lib/ui/view/main/kmoni_map.dart | 92 +++++++++---------- .../map/eew_estimated_intensity.dart | 2 +- .../main/kmoni_map/map/eew_hypocenter.dart | 3 +- .../main/kmoni_map/map/eew_intensity.dart | 3 +- .../map/eew_pswave_arraival_circle.dart | 2 +- .../eew_pswave_arraival_circle_stroke.dart | 36 ++++---- lib/ui/view/setting/about_app.viewmodel.dart | 2 +- lib/ui/view/setting/debug/eew_test.dart | 6 +- lib/ui/view/setting/debug_info.dart | 14 +-- 10 files changed, 84 insertions(+), 90 deletions(-) diff --git a/lib/provider/earthquake/eew_controller.dart b/lib/provider/earthquake/eew_controller.dart index bde506454..73b41a06b 100644 --- a/lib/provider/earthquake/eew_controller.dart +++ b/lib/provider/earthquake/eew_controller.dart @@ -37,13 +37,11 @@ import '../../schema/remote/dmdata/eq-information/earthquake-information/magnitu import '../../schema/remote/dmdata/eq-information/earthquake-information/magnitude/magnitude_condition.dart'; import '../../schema/remote/kmoni/EEW.dart'; -final eewHistoryProvider = - StateNotifierProvider((ref) { - return EewHistoryProvider(); -}); +final eewProvider = + StateNotifierProvider(EewProvider.new); -class EewHistoryProvider extends StateNotifier { - EewHistoryProvider() +class EewProvider extends StateNotifier { + EewProvider(this.ref) : super( EewHistoryModel( supabase: SupabaseClient(Env.supabaseS2Url, Env.supabaseS2AnonKey), @@ -57,6 +55,7 @@ class EewHistoryProvider extends StateNotifier { onInit(); } + final Ref ref; final eewApi = EewApi(); final logger = Logger( @@ -66,6 +65,9 @@ class EewHistoryProvider extends StateNotifier { ), ); + List eewTelegrams = []; + Map> eewTelegramsGroupByEventId = {}; + void onInit() { startEewStreaming(); Timer.periodic(const Duration(seconds: 1), (_) { diff --git a/lib/ui/view/main/kmoni_map.dart b/lib/ui/view/main/kmoni_map.dart index d52d7d654..29114bb61 100644 --- a/lib/ui/view/main/kmoni_map.dart +++ b/lib/ui/view/main/kmoni_map.dart @@ -93,51 +93,48 @@ class KmoniMap extends HookConsumerWidget { key: mapKey, children: [ GestureDetector( - child: Center( - child: InteractiveViewer( - transformationController: - ref.watch(transformationControllerProvider), - maxScale: 10, - boundaryMargin: const EdgeInsets.all(100), - clipBehavior: Clip.none, - child: SizedBox( - height: 927.4, - width: 476, - child: Stack( - children: [ - // マップベース - if (vm.layers.contains(KmoniLayer.baseMap)) - const BaseMapWidget(), - if (vm.layers.contains(KmoniLayer.psWaveArrivalCircle)) - const EewPswaveArraivalCirclesWidget(), - // EEWの距離減衰式による予想震度 - if ((ref.watch(kmoniProvider).testCaseStartTime != - null) || - (vm.layers - .contains(KmoniLayer.distanceDecayIntensity))) - EewEstimatedIntensityWidget(isDeveloper: isDeveloper), + child: InteractiveViewer( + transformationController: + ref.watch(transformationControllerProvider), + maxScale: 10, + boundaryMargin: const EdgeInsets.all(100), + clipBehavior: Clip.none, + child: SizedBox( + height: 927.4, + width: 476, + child: Stack( + children: [ + // マップベース + if (vm.layers.contains(KmoniLayer.baseMap)) + const BaseMapWidget(), + if (vm.layers.contains(KmoniLayer.psWaveArrivalCircle)) + const EewPswaveArraivalCirclesWidget(), + // EEWの距離減衰式による予想震度 + if ((ref.watch(kmoniProvider).testCaseStartTime != + null) || + (vm.layers + .contains(KmoniLayer.distanceDecayIntensity))) + EewEstimatedIntensityWidget(isDeveloper: isDeveloper), - // EEWの予想震度 - if (vm.layers.contains(KmoniLayer.jmaIntensity)) - const EewIntensityWidget(), - // 観測点 - if (vm.layers.contains(KmoniLayer.kmoniPoints) || - vm.layers - .contains(KmoniLayer.realtimeIntensityIcon)) - KyoshinKansokutenWidget( - showIntensityIcon: vm.layers - .contains(KmoniLayer.realtimeIntensityIcon), - showKmoniPoints: - vm.layers.contains(KmoniLayer.kmoniPoints), - ), - // EEWのP/S波到達予想円 枠 - if (vm.layers - .contains(KmoniLayer.psWaveArrivalCircleStroke)) - const EewPswaveArraivalCircleStrokeWidgets(), - // EEWの震央位置 - const EewHypocentersWidget(), - ], - ), + // EEWの予想震度 + if (vm.layers.contains(KmoniLayer.jmaIntensity)) + const EewIntensityWidget(), + // 観測点 + if (vm.layers.contains(KmoniLayer.kmoniPoints) || + vm.layers.contains(KmoniLayer.realtimeIntensityIcon)) + KyoshinKansokutenWidget( + showIntensityIcon: vm.layers + .contains(KmoniLayer.realtimeIntensityIcon), + showKmoniPoints: + vm.layers.contains(KmoniLayer.kmoniPoints), + ), + // EEWのP/S波到達予想円 枠 + if (vm.layers + .contains(KmoniLayer.psWaveArrivalCircleStroke)) + const EewPswaveArraivalCircleStrokeWidgets(), + // EEWの震央位置 + const EewHypocentersWidget(), + ], ), ), ), @@ -190,7 +187,7 @@ class KmoniStatusWidget extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final kmoni = ref.watch(kmoniProvider); - final eewProvider = ref.watch(eewHistoryProvider); + final eewState = ref.watch(eewProvider); final maxShindoColor = (kmoni.analyzedPoint.length > 100) ? kmoni.analyzedPoint @@ -241,7 +238,7 @@ class KmoniStatusWidget extends ConsumerWidget { ), const SizedBox(width: 8), // WebSocket 接続状態 - if (eewProvider.channel?.isJoined == true) + if (eewState.channel?.isJoined == true) const Icon( Icons.link, semanticLabel: 'WebSocket 接続中', @@ -298,8 +295,7 @@ class OnEewWidget extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final eews = - ref.watch(eewHistoryProvider.select((value) => value.showEews)); + final eews = ref.watch(eewProvider.select((value) => value.showEews)); return Column( children: [ for (final eew in eews) diff --git a/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart b/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart index 744d971fb..658008d7e 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart @@ -20,7 +20,7 @@ class EewEstimatedIntensityWidget extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final eews = ref.watch(eewHistoryProvider).showEews; + final eews = ref.watch(eewProvider.select((value) => value.showEews)); if (eews.isEmpty || (eews.any( (e) => e.value.earthQuake?.isAssuming ?? false, diff --git a/lib/ui/view/main/kmoni_map/map/eew_hypocenter.dart b/lib/ui/view/main/kmoni_map/map/eew_hypocenter.dart index a0e7609b9..7fa16277e 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_hypocenter.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_hypocenter.dart @@ -12,8 +12,7 @@ class EewHypocentersWidget extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { - final eews = - ref.watch(eewHistoryProvider.select((value) => value.showEews)); + final eews = ref.watch(eewProvider.select((value) => value.showEews)); return Stack( children: [ diff --git a/lib/ui/view/main/kmoni_map/map/eew_intensity.dart b/lib/ui/view/main/kmoni_map/map/eew_intensity.dart index cb3954499..02c83e692 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_intensity.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_intensity.dart @@ -18,8 +18,7 @@ class EewIntensityWidget extends ConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final mapSource = ref.watch(mapAreaForecastLocalEProvider); - final eews = - ref.watch(eewHistoryProvider.select((value) => value.showEews)); + final eews = ref.watch(eewProvider.select((value) => value.showEews)); return RepaintBoundary( child: CustomPaint( isComplex: true, diff --git a/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle.dart b/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle.dart index 72772f152..334c764cf 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle.dart @@ -21,7 +21,7 @@ class EewPswaveArraivalCirclesWidget extends ConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { // 精度が低いEEWを除いたEEWのリスト final eews = ref - .watch(eewHistoryProvider.select((value) => value.showEews)) + .watch(eewProvider.select((value) => value.showEews)) .where( (e) => e.value.earthQuake?.isAssuming != true && diff --git a/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart b/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart index 491443ab9..c527ba3b1 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart @@ -19,7 +19,7 @@ class EewPswaveArraivalCircleStrokeWidgets extends ConsumerWidget { Widget build(BuildContext context, WidgetRef ref) { // 精度が低いEEWを除いたEEWのリスト final eews = ref - .watch(eewHistoryProvider.select((value) => value.showEews)) + .watch(eewProvider.select((value) => value.showEews)) .where( (e) => e.value.earthQuake?.isAssuming != true && @@ -120,23 +120,25 @@ class _EewPswaveArraivalCircleStrokePainter extends CustomPainter { false; canvas ..drawPath( - Path()..addPolygon(sOffsets, true), - Paint() - ..color = isWarning - ? Color.fromARGB(255, 255, 0, 0) - : Color.fromARGB(255, 255, 149, 0) - ..isAntiAlias = true - ..strokeCap = StrokeCap.square - ..style = PaintingStyle.stroke - ..strokeWidth = 1) + Path()..addPolygon(sOffsets, true), + Paint() + ..color = isWarning + ? const Color.fromARGB(255, 255, 0, 0) + : const Color.fromARGB(255, 255, 149, 0) + ..isAntiAlias = true + ..strokeCap = StrokeCap.square + ..style = PaintingStyle.stroke + ..strokeWidth = 1, + ) ..drawPath( - Path()..addPolygon(pOffsets, true), - Paint() - ..color = Color.fromARGB(255, 0, 0, 255) - ..isAntiAlias = true - ..strokeCap = StrokeCap.square - ..style = PaintingStyle.stroke - ..strokeWidth = 0.0); + Path()..addPolygon(pOffsets, true), + Paint() + ..color = const Color.fromARGB(255, 0, 0, 255) + ..isAntiAlias = true + ..strokeCap = StrokeCap.square + ..style = PaintingStyle.stroke + ..strokeWidth = 0.0, + ); } } } diff --git a/lib/ui/view/setting/about_app.viewmodel.dart b/lib/ui/view/setting/about_app.viewmodel.dart index b73f92279..7b5e0e60c 100644 --- a/lib/ui/view/setting/about_app.viewmodel.dart +++ b/lib/ui/view/setting/about_app.viewmodel.dart @@ -34,7 +34,7 @@ class AboutAppViewModel { GoRouter.of(context).pop(); ref.read(kmoniProvider.notifier).startTestCase(); - ref.read(eewHistoryProvider.notifier).startTestcase(); + ref.read(eewProvider.notifier).startTestcase(); } /// 開発者向けモードのボタンHandler diff --git a/lib/ui/view/setting/debug/eew_test.dart b/lib/ui/view/setting/debug/eew_test.dart index 665c2ca27..b92829b82 100644 --- a/lib/ui/view/setting/debug/eew_test.dart +++ b/lib/ui/view/setting/debug/eew_test.dart @@ -236,7 +236,7 @@ class EewTestPage extends HookConsumerWidget { FloatingActionButton.extended( heroTag: 'send', onPressed: () { - final hash = ref.read(eewHistoryProvider.notifier).addTestEew( + final hash = ref.read(eewProvider.notifier).addTestEew( maxint: ForecastMaxInt( from: maxIntensityFrom.value, to: maxIntensityTo.value, @@ -259,7 +259,7 @@ class EewTestPage extends HookConsumerWidget { FloatingActionButton.extended( heroTag: 'newsend', onPressed: () { - final hash = ref.read(eewHistoryProvider.notifier).addTestEew( + final hash = ref.read(eewProvider.notifier).addTestEew( maxint: ForecastMaxInt( from: maxIntensityFrom.value, to: maxIntensityTo.value, @@ -283,7 +283,7 @@ class EewTestPage extends HookConsumerWidget { FloatingActionButton.extended( heroTag: 'delete', onPressed: () { - ref.read(eewHistoryProvider.notifier).clearTelegrams(); + ref.read(eewProvider.notifier).clearTelegrams(); GoRouter.of(context).pop(); Fluttertoast.showToast(msg: 'EEWを全て削除しました'); }, diff --git a/lib/ui/view/setting/debug_info.dart b/lib/ui/view/setting/debug_info.dart index 4da0d565d..3b5231e08 100644 --- a/lib/ui/view/setting/debug_info.dart +++ b/lib/ui/view/setting/debug_info.dart @@ -30,11 +30,7 @@ class DeveloperDebugPage extends HookConsumerWidget { ListTile( title: const Text('Join Once'), subtitle: Text( - ref - .watch(eewHistoryProvider) - .channel - ?.joinedOnce - .toString() ?? + ref.watch(eewProvider).channel?.joinedOnce.toString() ?? 'Unknown', ), ), @@ -42,7 +38,7 @@ class DeveloperDebugPage extends HookConsumerWidget { title: const Text('Connection State'), subtitle: Text( ref - .watch(eewHistoryProvider) + .watch(eewProvider) .channel ?.socket .connState @@ -53,14 +49,14 @@ class DeveloperDebugPage extends HookConsumerWidget { ListTile( title: const Text('Topic'), subtitle: Text( - ref.watch(eewHistoryProvider).channel?.topic ?? 'Unknown', + ref.watch(eewProvider).channel?.topic ?? 'Unknown', ), ), ListTile( title: const Text('HeartbeatInterval(ms)'), subtitle: Text( ref - .watch(eewHistoryProvider) + .watch(eewProvider) .channel ?.socket .heartbeatIntervalMs @@ -72,7 +68,7 @@ class DeveloperDebugPage extends HookConsumerWidget { title: const Text('LongPoller T/O(ms)'), subtitle: Text( ref - .watch(eewHistoryProvider) + .watch(eewProvider) .channel ?.socket .longpollerTimeout From 3f68dd98758988c27536d019a12fa7ae27c7ab94 Mon Sep 17 00:00:00 2001 From: YumNumm Date: Sun, 20 Nov 2022 22:04:50 +0900 Subject: [PATCH 04/13] =?UTF-8?q?del:=20EarthquakeHistoryFutureProvider?= =?UTF-8?q?=E3=81=AE=E6=B6=88=E5=8E=BB=20EarthquakeHistoryViewModel?= =?UTF-8?q?=E3=81=AB=E7=A7=BB=E8=A1=8C=E6=B8=88=E3=81=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../earthquake/earthquake_controller.dart | 38 ------------------- 1 file changed, 38 deletions(-) delete mode 100644 lib/provider/earthquake/earthquake_controller.dart diff --git a/lib/provider/earthquake/earthquake_controller.dart b/lib/provider/earthquake/earthquake_controller.dart deleted file mode 100644 index 2833ec596..000000000 --- a/lib/provider/earthquake/earthquake_controller.dart +++ /dev/null @@ -1,38 +0,0 @@ -import 'package:collection/collection.dart'; -import 'package:flutter/foundation.dart'; -import 'package:flutter_riverpod/flutter_riverpod.dart'; - -import '../../api/remote/supabase/telegram.dart'; -import '../../schema/remote/supabase/telegram.dart'; -import '../setting/developer_mode.dart'; - -final earthquakeHistoryFutureProvider = - FutureProvider>>( - (ref) async { - final telegrams = await TelegramApi.getTelegramsWithLimit(); - final testTelegram = []; - if (kDebugMode || ref.read(developerModeProvider).isDeveloper) { - final telegram = await TelegramApi.getTestData(); - testTelegram.addAll(telegram); - } - - final grouped = [ - ...telegrams, - if (kDebugMode || ref.read(developerModeProvider).isDeveloper) - ...testTelegram, - ] - .where( - (element) => ['VXSE51', 'VXSE52', 'VXSE53', 'VXSE61'] - .contains(element.type), - ) - .toList() - .sorted( - (a, b) => int.parse(b.eventId.toString()).compareTo( - int.parse(a.eventId.toString()), - ), - ) - .groupListsBy((element) => int.parse(element.eventId.toString())); - - return grouped; - }, -); From 89b3b306a8a9defe1819e5da9f962793505e935b Mon Sep 17 00:00:00 2001 From: YumNumm Date: Sun, 20 Nov 2022 22:05:49 +0900 Subject: [PATCH 05/13] =?UTF-8?q?ren:=20EewProvider=E3=81=AE=E3=83=95?= =?UTF-8?q?=E3=82=A1=E3=82=A4=E3=83=AB=E5=90=8D=E3=82=92=E9=81=A9=E3=81=97?= =?UTF-8?q?=E3=81=9F=E5=BD=A2=E3=81=AB=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../earthquake/{eew_controller.dart => eew_provider.dart} | 0 lib/ui/view/main/kmoni_map.dart | 2 +- lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart | 2 +- lib/ui/view/main/kmoni_map/map/eew_hypocenter.dart | 2 +- lib/ui/view/main/kmoni_map/map/eew_intensity.dart | 2 +- lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle.dart | 2 +- .../main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart | 2 +- lib/ui/view/setting/about_app.viewmodel.dart | 2 +- lib/ui/view/setting/debug/eew_test.dart | 2 +- lib/ui/view/setting/debug_info.dart | 2 +- 10 files changed, 9 insertions(+), 9 deletions(-) rename lib/provider/earthquake/{eew_controller.dart => eew_provider.dart} (100%) diff --git a/lib/provider/earthquake/eew_controller.dart b/lib/provider/earthquake/eew_provider.dart similarity index 100% rename from lib/provider/earthquake/eew_controller.dart rename to lib/provider/earthquake/eew_provider.dart diff --git a/lib/ui/view/main/kmoni_map.dart b/lib/ui/view/main/kmoni_map.dart index 29114bb61..86d052b43 100644 --- a/lib/ui/view/main/kmoni_map.dart +++ b/lib/ui/view/main/kmoni_map.dart @@ -4,7 +4,7 @@ import 'dart:ui'; import 'package:bordered_text/bordered_text.dart'; import 'package:eqmonitor/model/setting/kmoni_setting_model.dart'; -import 'package:eqmonitor/provider/earthquake/eew_controller.dart'; +import 'package:eqmonitor/provider/earthquake/eew_provider.dart'; import 'package:eqmonitor/provider/earthquake/kmoni_controller.dart'; import 'package:eqmonitor/provider/package_info.dart'; import 'package:eqmonitor/provider/setting/developer_mode.dart'; diff --git a/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart b/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart index 658008d7e..f7407bcad 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart @@ -1,6 +1,6 @@ import 'package:collection/collection.dart'; import 'package:eqmonitor/model/setting/jma_intensity_color_model.dart'; -import 'package:eqmonitor/provider/earthquake/eew_controller.dart'; +import 'package:eqmonitor/provider/earthquake/eew_provider.dart'; import 'package:eqmonitor/provider/init/map_area_forecast_local_e.dart'; import 'package:eqmonitor/provider/init/parameter_earthquake.dart'; import 'package:eqmonitor/provider/setting/intensity_color_provider.dart'; diff --git a/lib/ui/view/main/kmoni_map/map/eew_hypocenter.dart b/lib/ui/view/main/kmoni_map/map/eew_hypocenter.dart index 7fa16277e..622975b7f 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_hypocenter.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_hypocenter.dart @@ -3,7 +3,7 @@ import 'package:eqmonitor/ui/view/main/kmoni_map/map/eew_hypocenter_normal.dart' import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import '../../../../../provider/earthquake/eew_controller.dart'; +import '../../../../../provider/earthquake/eew_provider.dart'; import '../../../../../schema/remote/dmdata/eew-information/earthquake/accuracy/epicCenterAccuracy.dart'; /// 緊急地震速報関連のWidget diff --git a/lib/ui/view/main/kmoni_map/map/eew_intensity.dart b/lib/ui/view/main/kmoni_map/map/eew_intensity.dart index 02c83e692..775f72ecd 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_intensity.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_intensity.dart @@ -3,7 +3,7 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:logger/logger.dart'; import '../../../../../model/setting/jma_intensity_color_model.dart'; -import '../../../../../provider/earthquake/eew_controller.dart'; +import '../../../../../provider/earthquake/eew_provider.dart'; import '../../../../../provider/init/map_area_forecast_local_e.dart'; import '../../../../../provider/setting/intensity_color_provider.dart'; import '../../../../../schema/local/prefecture/map_polygon.dart'; diff --git a/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle.dart b/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle.dart index 334c764cf..e2557bf19 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle.dart @@ -10,7 +10,7 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:latlong2/latlong.dart' hide Path; -import '../../../../../provider/earthquake/eew_controller.dart'; +import '../../../../../provider/earthquake/eew_provider.dart'; import '../../../../../schema/remote/dmdata/eew-information/earthquake/accuracy/epicCenterAccuracy.dart'; /// 緊急地震速報のP・S波到達予想円を表示するWidget diff --git a/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart b/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart index c527ba3b1..1ff36d007 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:latlong2/latlong.dart' hide Path; -import '../../../../../provider/earthquake/eew_controller.dart'; +import '../../../../../provider/earthquake/eew_provider.dart'; import '../../../../../schema/remote/dmdata/eew-information/earthquake/accuracy/epicCenterAccuracy.dart'; /// 緊急地震速報のP・S波到達予想円の枠を表示するWidget diff --git a/lib/ui/view/setting/about_app.viewmodel.dart b/lib/ui/view/setting/about_app.viewmodel.dart index 7b5e0e60c..685692be6 100644 --- a/lib/ui/view/setting/about_app.viewmodel.dart +++ b/lib/ui/view/setting/about_app.viewmodel.dart @@ -7,7 +7,7 @@ import 'package:fluttertoast/fluttertoast.dart'; import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import '../../../provider/earthquake/eew_controller.dart'; +import '../../../provider/earthquake/eew_provider.dart'; import '../../../provider/earthquake/kmoni_controller.dart'; import '../../../provider/setting/developer_mode.dart'; diff --git a/lib/ui/view/setting/debug/eew_test.dart b/lib/ui/view/setting/debug/eew_test.dart index b92829b82..3e3311ca6 100644 --- a/lib/ui/view/setting/debug/eew_test.dart +++ b/lib/ui/view/setting/debug/eew_test.dart @@ -10,7 +10,7 @@ import 'package:go_router/go_router.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:latlong2/latlong.dart'; -import '../../../../provider/earthquake/eew_controller.dart'; +import '../../../../provider/earthquake/eew_provider.dart'; import '../../../../schema/remote/dmdata/eew-information/earthquake/accuracy.dart'; import '../../../../schema/remote/dmdata/eew-information/earthquake/accuracy/depth_calculation.dart'; import '../../../../schema/remote/dmdata/eew-information/earthquake/accuracy/epicCenterAccuracy.dart'; diff --git a/lib/ui/view/setting/debug_info.dart b/lib/ui/view/setting/debug_info.dart index 3b5231e08..1e36466e1 100644 --- a/lib/ui/view/setting/debug_info.dart +++ b/lib/ui/view/setting/debug_info.dart @@ -8,7 +8,7 @@ import 'package:eqmonitor/ui/view/setting/component/setting_section.dart'; import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import '../../../provider/earthquake/eew_controller.dart'; +import '../../../provider/earthquake/eew_provider.dart'; import '../../../provider/init/application_support_dir.dart'; import '../../../provider/init/device_info.dart'; import '../../../provider/init/kyoshin_kansokuten.dart'; From 7e0c74466d696e28fe820b1b2b70bd102eef53ae Mon Sep 17 00:00:00 2001 From: YumNumm Date: Sun, 20 Nov 2022 23:47:30 +0900 Subject: [PATCH 06/13] =?UTF-8?q?fix:=20=E3=83=AD=E3=82=B0=E9=96=A2?= =?UTF-8?q?=E9=80=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dart_tool/package_config.json | 8 +-- lib/api/dio_firebase_performance.dart | 10 ++- lib/api/remote/kmoni.dart | 2 - lib/api/remote/kmoni/kmoni_image_parser.dart | 11 ++-- lib/api/remote/supabase/dio_client.dart | 22 ++++--- lib/main.dart | 35 +++++------ lib/provider/earthquake/eew_provider.dart | 62 +++++++----------- lib/provider/earthquake/kmoni_controller.dart | 25 ++++---- lib/provider/init/kyoshin_kansokuten.dart | 11 +++- .../init/map_area_forecast_local_e.dart | 10 +-- .../init/map_area_forecast_local_eew.dart | 14 +++-- .../init/map_area_information_city_quake.dart | 16 ++--- .../init/map_area_tsunami_forecast.dart | 10 +-- lib/provider/init/parameter_earthquake.dart | 11 +++- lib/provider/init/talker.dart | 3 +- lib/provider/init/travel_time.dart | 9 ++- lib/provider/logger.dart | 4 -- lib/ui/route.dart | 14 ++++- lib/ui/view/introduction/files_download.dart | 13 ++-- lib/ui/view/main/earthquake_history.dart | 8 +-- .../main/earthquake_history.viewmodel.dart | 13 ++++ .../earthquake_history_detail.dart | 23 ++++--- lib/ui/view/main/intensity_estimate.dart | 2 + .../map/eew_estimated_intensity.dart | 10 ++- .../main/kmoni_map/map/eew_intensity.dart | 10 ++- lib/ui/view/setting/debug/debug_menu.dart | 7 +++ lib/ui/view/setting/debug/log_view.dart | 17 +++++ lib/ui/view/widget/updater.dart | 7 ++- lib/utils/background_task/init.dart | 5 +- lib/utils/background_task/task.dart | 4 +- .../fcm/firebase_notification_controller.dart | 11 ++++ lib/utils/providers_logger.dart | 12 ++-- .../talker_log/go_router_talker_observer.dart | 63 +++++++++++++++++++ lib/utils/talker_log/log_types.dart | 57 +++++++++++++++++ pubspec.lock | 7 --- pubspec.yaml | 1 - 36 files changed, 367 insertions(+), 180 deletions(-) delete mode 100644 lib/provider/logger.dart create mode 100644 lib/ui/view/setting/debug/log_view.dart create mode 100644 lib/utils/talker_log/go_router_talker_observer.dart create mode 100644 lib/utils/talker_log/log_types.dart diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index cc6730269..499058587 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -739,12 +739,6 @@ "packageUri": "lib/", "languageVersion": "2.17" }, - { - "name": "logger", - "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/logger-1.1.0", - "packageUri": "lib/", - "languageVersion": "2.12" - }, { "name": "logging", "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/logging-1.1.0", @@ -1280,7 +1274,7 @@ "languageVersion": "2.18" } ], - "generated": "2022-11-20T12:01:31.914348Z", + "generated": "2022-11-20T14:20:37.003502Z", "generator": "pub", "generatorVersion": "2.18.4" } diff --git a/lib/api/dio_firebase_performance.dart b/lib/api/dio_firebase_performance.dart index ac13c8232..63db73047 100644 --- a/lib/api/dio_firebase_performance.dart +++ b/lib/api/dio_firebase_performance.dart @@ -1,14 +1,17 @@ // ignore_for_file: avoid_dynamic_calls import 'package:dio/dio.dart'; +import 'package:eqmonitor/utils/talker_log/log_types.dart'; import 'package:firebase_performance/firebase_performance.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; class DioFirebasePerformanceInterceptor extends Interceptor { - DioFirebasePerformanceInterceptor({ + DioFirebasePerformanceInterceptor( + this.talker, { this.requestContentLengthMethod = defaultRequestContentLength, this.responseContentLengthMethod = defaultResponseContentLength, }); + final Talker talker; /// key: requestKey hash code, value: ongoing metric final _map = {}; @@ -31,7 +34,8 @@ class DioFirebasePerformanceInterceptor extends Interceptor { try { await metric.start(); } on Exception catch (e) { - Logger().e(e); + talker.logTyped(FirebasePerformanceLog(e.toString()), + logLevel: LogLevel.error); } if (requestContentLength != null) { metric.requestPayloadSize = requestContentLength; diff --git a/lib/api/remote/kmoni.dart b/lib/api/remote/kmoni.dart index b164495e1..7c740ef08 100644 --- a/lib/api/remote/kmoni.dart +++ b/lib/api/remote/kmoni.dart @@ -19,8 +19,6 @@ class KyoshinMonitorApi { //); ; - // final _logger = Logger(); - /// 強震モニタ サーバ側の最新時刻を取得します Future getLatestDateTime() async { final res = await dio.get>( diff --git a/lib/api/remote/kmoni/kmoni_image_parser.dart b/lib/api/remote/kmoni/kmoni_image_parser.dart index b08b29d72..9f821cd21 100644 --- a/lib/api/remote/kmoni/kmoni_image_parser.dart +++ b/lib/api/remote/kmoni/kmoni_image_parser.dart @@ -2,7 +2,7 @@ import 'dart:math'; import 'package:flutter/cupertino.dart'; import 'package:image/image.dart' as image_lib; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../../model/analyzed_kyoshin_kansokuten.dart'; import '../../../schema/local/kyoshin_kansokuten.dart'; @@ -10,12 +10,9 @@ import '../../../ui/theme/jma_intensity.dart'; import 'real_time_data_type.dart'; class KyoshinImageParser { - final Logger logger = Logger( - printer: PrettyPrinter( - methodCount: 1, - printTime: true, - ), - ); + KyoshinImageParser(this.talker); + + final Talker talker; List imageParse({ required List picture, diff --git a/lib/api/remote/supabase/dio_client.dart b/lib/api/remote/supabase/dio_client.dart index b3a1be732..1101b5538 100644 --- a/lib/api/remote/supabase/dio_client.dart +++ b/lib/api/remote/supabase/dio_client.dart @@ -7,16 +7,22 @@ import 'package:dio/dio.dart' hide Response; import 'package:dio_http2_adapter/dio_http2_adapter.dart'; import 'package:eqmonitor/api/dio_firebase_performance.dart'; import 'package:http/http.dart'; +import 'package:talker_flutter/talker_flutter.dart'; class SupabaseHttpsClientWithDioAndFirebase implements Client { - final Dio dio = Dio() - ..options.connectTimeout = 5000 - ..interceptors.add(DioFirebasePerformanceInterceptor()) - ..httpClientAdapter = Http2Adapter( - ConnectionManager( - onClientCreate: (_, config) => config.onBadCertificate = (_) => true, - ), - ); + SupabaseHttpsClientWithDioAndFirebase(this.talker) : super() { + dio = Dio() + ..options.connectTimeout = 5000 + ..interceptors.add(DioFirebasePerformanceInterceptor(talker)) + ..httpClientAdapter = Http2Adapter( + ConnectionManager( + onClientCreate: (_, config) => config.onBadCertificate = (_) => true, + ), + ); + } + + final Talker talker; + late Dio dio; @override void close() {} diff --git a/lib/main.dart b/lib/main.dart index 426131c2e..a5c409d16 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,4 @@ -// ignore_for_file: avoid_Logger().wtf +// ignore_for_file: avoid_talker.wdebugtf import 'dart:async'; import 'dart:convert'; @@ -26,6 +26,7 @@ import 'package:eqmonitor/schema/local/prefecture/map_polygon.dart'; import 'package:eqmonitor/schema/remote/dmdata/parameter-earthquake/parameter-earthquake.dart'; import 'package:eqmonitor/ui/app.dart'; import 'package:eqmonitor/utils/fcm/firebase_notification_controller.dart'; +import 'package:eqmonitor/utils/talker_log/log_types.dart'; import 'package:firebase_core/firebase_core.dart'; import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:flutter/foundation.dart'; @@ -35,7 +36,6 @@ import 'package:flutter_native_splash/flutter_native_splash.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:flutter_secure_storage/flutter_secure_storage.dart'; import 'package:intl/intl.dart' hide TextDirection; -import 'package:logger/logger.dart'; import 'package:path_provider/path_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; @@ -54,11 +54,7 @@ Future main() async { statusBarColor: Colors.transparent, // transparent status bar ), ); - final talker = Talker( - loggerSettings: TalkerLoggerSettings( - enableColors: !Platform.isIOS, - ), - ); + final talker = Talker(); await Firebase.initializeApp( options: DefaultFirebaseOptions.currentPlatform, ); @@ -88,18 +84,19 @@ Future main() async { ParameterEarthquake? parameterEarthquake; final futures = >[ - loadKyoshinKansokuten().then((e) => kansokuten = e), - loadMapAreaTsunamiForecast().then((e) => mapAreaTsunamiForecast = e), - loadMapAreaForecastLocalE().then((e) => mapAreaForecastLocalE = e), - loadMapAreaForecastLocalEew().then((e) => mapAreaForecastLocalEew = e), - loadMapAreaInformationCityQuake() + loadKyoshinKansokuten(talker).then((e) => kansokuten = e), + loadMapAreaTsunamiForecast(talker).then((e) => mapAreaTsunamiForecast = e), + loadMapAreaForecastLocalE(talker).then((e) => mapAreaForecastLocalE = e), + loadMapAreaForecastLocalEew(talker) + .then((e) => mapAreaForecastLocalEew = e), + loadMapAreaInformationCityQuake(talker) .then((e) => mapAreaInformationCityQuake = e), - loadTravelTimeTable().then((e) => travelTimeTable = e), + loadTravelTimeTable(talker).then((e) => travelTimeTable = e), getApplicationSupportDirectory().then((e) => dir = e), Supabase.initialize( url: Env.supabaseS1Url, anonKey: Env.supabaseS1AnonKey, - debug: false, + debug: kDebugMode, ), initFirebaseCloudMessaging(), crashlytics.sendUnsentReports(), @@ -120,12 +117,15 @@ Future main() async { //isar = await Isar.open([], directory: dir.path); FlutterNativeSplash.remove(); - Logger().d('全ての初期化が完了: ${(stopwatch..stop()).elapsedMicroseconds / 1000}ms'); + talker.logTyped( + InitializationEventLog( + '全ての初期化が完了: ${(stopwatch..stop()).elapsedMicroseconds / 1000}ms', + ), + ); FlutterError.onError = onFlutterError; DartPluginRegistrant.ensureInitialized(); PlatformDispatcher.instance.onError = (error, stackTrace) { - Logger().e(error, stackTrace); talker.handle(error, stackTrace, 'Uncaught App Exception'); if (kReleaseMode) { crashlytics.recordError(error, stackTrace); @@ -174,9 +174,6 @@ Future main() async { } Future onFlutterError(FlutterErrorDetails details) async { - Logger() - ..wtf('Error: ${details.exception}') - ..wtf('Stack: ${details.stack}'); Talker() .handle(details.exception, details.stack, 'Uncaught Flutter Exception'); await FirebaseCrashlytics.instance.recordFlutterError(details); diff --git a/lib/provider/earthquake/eew_provider.dart b/lib/provider/earthquake/eew_provider.dart index 73b41a06b..c087839c4 100644 --- a/lib/provider/earthquake/eew_provider.dart +++ b/lib/provider/earthquake/eew_provider.dart @@ -2,13 +2,14 @@ import 'dart:async'; import 'dart:convert'; import 'package:collection/collection.dart'; +import 'package:eqmonitor/utils/talker_log/log_types.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:http/http.dart' as http; import 'package:intl/intl.dart'; -import 'package:logger/logger.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../api/remote/supabase/eew.dart'; import '../../env/env.dart'; @@ -52,30 +53,22 @@ class EewProvider extends StateNotifier { testCaseStartTime: null, ), ) { + talker = Talker(filter: BaseTalkerFilter(titles: ['EEW'])); onInit(); } final Ref ref; final eewApi = EewApi(); - final logger = Logger( - printer: PrettyPrinter( - methodCount: 1, - printTime: true, - ), - ); + late Talker talker; + /// 取得したEEW電文 List eewTelegrams = []; + + /// `eewTelegrams`のうち、`event_id`でグルーピングしたもの Map> eewTelegramsGroupByEventId = {}; - void onInit() { - startEewStreaming(); - Timer.periodic(const Duration(seconds: 1), (_) { - if (mounted) { - checkTelegrams(); - } - }); - } + void onInit() => startEewStreaming(); Future startEewStreaming() async { // EEWのストリーミングを開始 @@ -88,9 +81,7 @@ class EewProvider extends StateNotifier { table: 'eew', ), (payload, [ref]) { - logger - ..i(payload.runtimeType) - ..i('EEW STREAM: $payload'); + talker.logTyped(EewProviderLog('EEW STREAM: $payload')); final commonHead = CommonHead.fromJson( ((payload as Map)['new'] as Map)['data'], @@ -100,25 +91,29 @@ class EewProvider extends StateNotifier { ) ..subscribe( (p0, [p1]) { - logger.i('EEW STREAM: $p0', p1); + talker.logTyped(EewProviderLog('EEW STREAM: $p0, $p1')); }, - ); + ) + ..onClose(() { + talker.handleException(Exception(), null, '緊急地震速報サーバとの接続が切断されました'); + }) + ..onError((p0) { + talker.handleException( + Exception(p0), + null, + '緊急地震速報サーバとの接続中にエラーが発生しました', + ); + }); state = state.copyWith( channel: channel, ); - // Timer.periodic(const Duration(seconds: 5), (_) async { - // final latency = await this.latency(); - // logger.i('latency: $latency ms'); - // }); - /// 再接続タイマー Timer.periodic( const Duration(seconds: 1), (_) { if (state.channel?.joinedOnce == false) { - logger.i('EEW STREAM: reconnect'); - state.channel?.rejoinUntilConnected(); + talker.logTyped(EewProviderLog('EEW STREAM: reconnect')); } }, ); @@ -143,6 +138,7 @@ class EewProvider extends StateNotifier { } void addTelegram(CommonHead commonHead) { + talker.logTyped(EewProviderLog('EEW電文追加: Event${commonHead.eventId}')); // eewTelegramsに追加 final eewTelegrams = state.eewTelegrams; @@ -215,16 +211,6 @@ class EewProvider extends StateNotifier { } } - Future latency() async { - final stopWatch = Stopwatch()..start(); - await state.channel!.send( - type: RealtimeListenTypes.broadcast, - payload: {}, - event: 'latency', - ); - return (stopWatch..stop()).elapsedMicroseconds / 1000; - } - void startTestcase() { // 時刻設定 state = state.copyWith( @@ -252,7 +238,7 @@ class EewProvider extends StateNotifier { } // ignore: avoid_catches_without_on_clauses } catch (e) { - logger.e('NIED EEW STREAM(TEST): $e'); + talker.info('強震モニタのテストを終了しました'); // テストケースを終了する state = state.copyWith( testCaseStartTime: null, diff --git a/lib/provider/earthquake/kmoni_controller.dart b/lib/provider/earthquake/kmoni_controller.dart index b6616f701..7895a51ec 100644 --- a/lib/provider/earthquake/kmoni_controller.dart +++ b/lib/provider/earthquake/kmoni_controller.dart @@ -5,7 +5,7 @@ import 'package:eqmonitor/api/remote/kmoni/real_time_data_type.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../api/remote/kmoni.dart'; import '../../api/remote/kmoni/kmoni_image_parser.dart'; @@ -30,22 +30,23 @@ class KmoniProvider extends StateNotifier { testCaseStartTime: null, ), ) { + talker = Talker( + filter: BaseTalkerFilter( + titles: ['KmoniProvider'], + ), + ); + kyoshinImageParser = KyoshinImageParser(talker); onInit(); } final Ref ref; - final logger = Logger( - printer: PrettyPrinter( - methodCount: 1, - printTime: true, - ), - ); + late Talker talker; final KyoshinMonitorApi kyoshinMonitorApi = KyoshinMonitorApi(); final KyoshinWebApiUrlGenerator kyoshinWebApiUrlGenerator = KyoshinWebApiUrlGenerator(); - final KyoshinImageParser kyoshinImageParser = KyoshinImageParser(); + late KyoshinImageParser kyoshinImageParser; // Kmoniからデータを取得するタイマーを開始 void onInit() { @@ -113,7 +114,7 @@ class KmoniProvider extends StateNotifier { final dt = await kyoshinMonitorApi.getLatestDateTime(); await updateShindo(dt); } on Exception catch (e) { - logger.e(e); + talker.handleException(e); } finally { // 更新中フラグを下ろす state = state.copyWith( @@ -150,8 +151,10 @@ class KmoniProvider extends StateNotifier { analyzedPoint: parsedAnalyzedPoint, lastUpdated: dt, ); - } on Exception { - logger.e( + } on Exception catch (e, stackTrace) { + talker.handleException( + e, + stackTrace, 'リアルタイム震度画像の取得に失敗しました', ); } diff --git a/lib/provider/init/kyoshin_kansokuten.dart b/lib/provider/init/kyoshin_kansokuten.dart index be2062ca5..726c95c88 100644 --- a/lib/provider/init/kyoshin_kansokuten.dart +++ b/lib/provider/init/kyoshin_kansokuten.dart @@ -1,13 +1,14 @@ import 'package:eqmonitor/schema/local/kyoshin_kansokuten.dart'; +import 'package:eqmonitor/utils/talker_log/log_types.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; final kyoshinKansokutenProvider = Provider>((ref) { throw UnimplementedError('観測点データが読み込まれていません'); }); -Future> loadKyoshinKansokuten() async { +Future> loadKyoshinKansokuten(Talker talker) async { final stopwatch = Stopwatch()..start(); final kansokuten = await rootBundle.loadString('assets/kmoni/kansokuten.csv'); @@ -19,7 +20,11 @@ Future> loadKyoshinKansokuten() async { obsPoints.add(KyoshinKansokuten.fromList(row.split(','))); } stopwatch.stop(); - Logger().d('観測点データを読み込みました: ${stopwatch.elapsedMicroseconds / 1000}ms'); + talker.logTyped( + InitializationEventLog( + '観測点データを読み込みました: ${stopwatch.elapsedMicroseconds / 1000}ms', + ), + ); return obsPoints; } diff --git a/lib/provider/init/map_area_forecast_local_e.dart b/lib/provider/init/map_area_forecast_local_e.dart index 0d72e3122..1c63bc1e9 100644 --- a/lib/provider/init/map_area_forecast_local_e.dart +++ b/lib/provider/init/map_area_forecast_local_e.dart @@ -1,10 +1,11 @@ import 'dart:convert'; +import 'package:eqmonitor/utils/talker_log/log_types.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; import 'package:geojson/geojson.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../schema/local/prefecture/map_polygon.dart'; import '../../utils/map/map_global_offset.dart'; @@ -14,10 +15,9 @@ final mapAreaForecastLocalEProvider = Provider>((ref) { throw UnimplementedError(); }); -Future> loadMapAreaForecastLocalE() async { +Future> loadMapAreaForecastLocalE(Talker talker) async { final stopwatch = Stopwatch()..start(); final geo = GeoJson(); - final logger = Logger(); final mapPaths = []; @@ -70,10 +70,10 @@ Future> loadMapAreaForecastLocalE() async { }); geo.endSignal.listen((_) { stopwatch.stop(); - logger.i( + talker.logTyped(InitializationEventLog( 'mapAreaForecastLocalEを読み込みました: ' '${stopwatch.elapsedMicroseconds / 1000}ms', - ); + )); }); await geo.parse( utf8.decode( diff --git a/lib/provider/init/map_area_forecast_local_eew.dart b/lib/provider/init/map_area_forecast_local_eew.dart index ec7e9a75e..1875cf3b2 100644 --- a/lib/provider/init/map_area_forecast_local_eew.dart +++ b/lib/provider/init/map_area_forecast_local_eew.dart @@ -1,11 +1,12 @@ import 'dart:convert'; import 'package:eqmonitor/schema/local/prefecture/map_polygon.dart'; +import 'package:eqmonitor/utils/talker_log/log_types.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; import 'package:geojson/geojson.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../utils/map/map_global_offset.dart'; @@ -14,10 +15,9 @@ final mapAreaForecastLocalEewProvider = Provider>((ref) { throw UnimplementedError(); }); -Future> loadMapAreaForecastLocalEew() async { +Future> loadMapAreaForecastLocalEew(Talker talker) async { final stopwatch = Stopwatch()..start(); final geo = GeoJson(); - final logger = Logger(); final mapPaths = []; @@ -70,9 +70,11 @@ Future> loadMapAreaForecastLocalEew() async { }); geo.endSignal.listen((_) { stopwatch.stop(); - logger.i( - 'AreaForecastLocalEEW.jsonを読み込みました: ' - '${stopwatch.elapsedMicroseconds / 1000}ms', + talker.logTyped( + InitializationEventLog( + 'AreaForecastLocalEEW.jsonを読み込みました: ' + '${stopwatch.elapsedMicroseconds / 1000}ms', + ), ); }); await geo.parse( diff --git a/lib/provider/init/map_area_information_city_quake.dart b/lib/provider/init/map_area_information_city_quake.dart index 9a452e969..7898d86e0 100644 --- a/lib/provider/init/map_area_information_city_quake.dart +++ b/lib/provider/init/map_area_information_city_quake.dart @@ -1,11 +1,12 @@ import 'dart:convert'; import 'package:eqmonitor/schema/local/prefecture/map_polygon.dart'; +import 'package:eqmonitor/utils/talker_log/log_types.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; import 'package:geojson/geojson.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../utils/map/map_global_offset.dart'; @@ -28,10 +29,9 @@ class MapAreaInformationCityQuakePolygon extends MapPolygon { } Future> - loadMapAreaInformationCityQuake() async { + loadMapAreaInformationCityQuake(Talker talker) async { final stopwatch = Stopwatch()..start(); final geo = GeoJson(); - final logger = Logger(); final mapPaths = []; @@ -86,10 +86,12 @@ Future> }); geo.endSignal.listen((_) { stopwatch.stop(); - logger.i( - 'mapAreaInformationCityQuakeを読み込みました: ' - '${stopwatch.elapsedMicroseconds / 1000}ms\n' - '読み込んだ数: ${mapPaths.length}', + talker.logTyped( + InitializationEventLog( + 'mapAreaInformationCityQuakeを読み込みました: ' + '${stopwatch.elapsedMicroseconds / 1000}ms\n' + '読み込んだ数: ${mapPaths.length}', + ), ); }); await geo.parse( diff --git a/lib/provider/init/map_area_tsunami_forecast.dart b/lib/provider/init/map_area_tsunami_forecast.dart index aa9a6f811..2b4debe45 100644 --- a/lib/provider/init/map_area_tsunami_forecast.dart +++ b/lib/provider/init/map_area_tsunami_forecast.dart @@ -1,10 +1,11 @@ import 'dart:convert'; +import 'package:eqmonitor/utils/talker_log/log_types.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/services.dart'; import 'package:geojson/geojson.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../schema/local/prefecture/map_polygon.dart'; import '../../utils/map/map_global_offset.dart'; @@ -23,10 +24,9 @@ class MapAreaTsunami extends MapPolygon { }); } -Future> loadMapAreaTsunamiForecast() async { +Future> loadMapAreaTsunamiForecast(Talker talker) async { final stopwatch = Stopwatch()..start(); final geo = GeoJson(); - final logger = Logger(); final mapPaths = []; @@ -71,9 +71,9 @@ Future> loadMapAreaTsunamiForecast() async { }); geo.endSignal.listen((_) { stopwatch.stop(); - logger.i( + talker.logTyped(InitializationEventLog( 'MapAreaTsunamiForecastを読み込みました: ${stopwatch.elapsedMicroseconds / 1000}ms', - ); + )); }); await geo.parse( utf8.decode( diff --git a/lib/provider/init/parameter_earthquake.dart b/lib/provider/init/parameter_earthquake.dart index 46f20e216..d9b9d9012 100644 --- a/lib/provider/init/parameter_earthquake.dart +++ b/lib/provider/init/parameter_earthquake.dart @@ -1,8 +1,9 @@ import 'dart:convert'; +import 'package:eqmonitor/utils/talker_log/log_types.dart'; import 'package:flutter/services.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../schema/remote/dmdata/parameter-earthquake/parameter-earthquake.dart'; @@ -10,12 +11,16 @@ final parameterEarthquakeProvider = Provider((ref) { throw UnimplementedError('Parameter-Earthquakeが読み込まれていません'); }); -Future loadParameterEarthquake() async { +Future loadParameterEarthquake(Talker talker) async { final stopwatch = Stopwatch()..start(); final body = await rootBundle.loadString('assets/parameter-earthquake.json'); final json = jsonDecode(body) as Map; final parameter = ParameterEarthquake.fromJson(json); final duration = (stopwatch..stop()).elapsedMicroseconds; - Logger().d('Parameter-Earthquakeを読み込みました: ${duration / 1000}ms'); + talker.logTyped( + InitializationEventLog( + 'Parameter-Earthquakeを読み込みました: ${duration / 1000}ms', + ), + ); return parameter; } diff --git a/lib/provider/init/talker.dart b/lib/provider/init/talker.dart index 72bfdfd3a..d7f4f2b9b 100644 --- a/lib/provider/init/talker.dart +++ b/lib/provider/init/talker.dart @@ -1,4 +1,5 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:talker_flutter/talker_flutter.dart'; -final talkerProvider = Provider((ref) => throw UnimplementedError()); +final talkerProvider = + Provider((ref) => throw UnimplementedError('Talkerが初期化されていません')); diff --git a/lib/provider/init/travel_time.dart b/lib/provider/init/travel_time.dart index f00e1ef12..99a84fb62 100644 --- a/lib/provider/init/travel_time.dart +++ b/lib/provider/init/travel_time.dart @@ -3,7 +3,7 @@ import 'package:collection/collection.dart'; import 'package:flutter/services.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../model/travel_time_table/travel_time_table.dart'; @@ -11,8 +11,7 @@ final travelTimeProvider = Provider>((ref) { throw UnimplementedError('TravelTimeTableが読み込まれていません'); }); -Future> loadTravelTimeTable() async { - final logger = Logger(); +Future> loadTravelTimeTable(Talker talker) async { // 走時表読み込み開始 // ストップウォッチ final stopWatch = Stopwatch()..start(); @@ -25,12 +24,12 @@ Future> loadTravelTimeTable() async { try { travelTimeTable.add(TravelTimeTable.fromList(row.split(','))); } on Exception catch (e) { - logger.e(e); + talker.error(e); } } // 走時表読み込み終了 stopWatch.stop(); - logger.d('走時表を読み込みました: ${stopWatch.elapsedMicroseconds / 1000}ms'); + talker.debug('走時表を読み込みました: ${stopWatch.elapsedMicroseconds / 1000}ms'); return travelTimeTable; } diff --git a/lib/provider/logger.dart b/lib/provider/logger.dart deleted file mode 100644 index 1f84d42ca..000000000 --- a/lib/provider/logger.dart +++ /dev/null @@ -1,4 +0,0 @@ -import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:logger/logger.dart'; - -final loggerProvider = Provider((ref) => Logger()); diff --git a/lib/ui/route.dart b/lib/ui/route.dart index 4f8cddca5..b403be3f2 100644 --- a/lib/ui/route.dart +++ b/lib/ui/route.dart @@ -1,4 +1,7 @@ +import 'package:eqmonitor/provider/init/talker.dart'; +import 'package:eqmonitor/ui/view/setting/debug/log_view.dart'; import 'package:eqmonitor/ui/view/setting/update_history_view/update_history_view.dart'; +import 'package:eqmonitor/utils/talker_log/go_router_talker_observer.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/services.dart'; import 'package:go_router/go_router.dart'; @@ -99,7 +102,11 @@ final routerProvider = Provider( GoRoute( path: 'eew_test', builder: (context, state) => const EewTestPage(), - ) + ), + GoRoute( + path: 'log', + builder: (context, state) => const LogView(), + ), ], ), ], @@ -110,7 +117,8 @@ final routerProvider = Provider( ? '/' : '/introduction', errorBuilder: (context, state) => ErrorScreen(state.error!), - debugLogDiagnostics: - kDebugMode || ref.watch(developerModeProvider).isDeveloper, + observers: [ + if (kDebugMode) GoRouterTalkerObserver(ref.watch(talkerProvider)) + ], ), ); diff --git a/lib/ui/view/introduction/files_download.dart b/lib/ui/view/introduction/files_download.dart index 1b232b7ea..d3cb354db 100644 --- a/lib/ui/view/introduction/files_download.dart +++ b/lib/ui/view/introduction/files_download.dart @@ -4,6 +4,7 @@ import 'dart:convert'; import 'dart:io'; import 'package:dio/dio.dart'; +import 'package:eqmonitor/provider/init/talker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_hooks/flutter_hooks.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; @@ -12,7 +13,6 @@ import 'package:restart_app/restart_app.dart'; import '../../../env/env.dart'; import '../../../provider/init/application_support_dir.dart'; import '../../../provider/init/shared_preferences.dart'; -import '../../../provider/logger.dart'; import '../../../schema/remote/dmdata/parameter-earthquake/parameter-earthquake.dart'; class FilesDownloadWidget extends HookConsumerWidget { @@ -23,6 +23,9 @@ class FilesDownloadWidget extends HookConsumerWidget { final isDownloading = useState(false); final showRetry = useState(false); final downloadingStatus = useState('0%'); + + final talker = ref.watch(talkerProvider); + return Scaffold( appBar: AppBar( title: const Text('観測点データの取得'), @@ -93,12 +96,12 @@ class FilesDownloadWidget extends HookConsumerWidget { downloadingStatus.value = 'ダウンロード中にエラーが発生しました。\n' '${e.message}\n' '${e.response?.data}'; - ref.read(loggerProvider).wtf(e.response?.data); + talker.error(e.response?.data); showRetry.value = true; } on Error catch (e) { downloadingStatus.value = 'エラーが発生しました。\n' '$e'; - ref.read(loggerProvider).wtf(e); + talker.error(e); showRetry.value = true; } }, @@ -164,12 +167,12 @@ class FilesDownloadWidget extends HookConsumerWidget { downloadingStatus.value = 'ダウンロード中にエラーが発生しました。\n' '${e.message}\n' '${e.response?.data}'; - ref.read(loggerProvider).wtf(e.response?.data); + talker.error(e.response?.data); showRetry.value = true; } on Error catch (e) { downloadingStatus.value = 'エラーが発生しました。\n' '$e'; - ref.read(loggerProvider).wtf(e); + talker.error(e); showRetry.value = true; } }, diff --git a/lib/ui/view/main/earthquake_history.dart b/lib/ui/view/main/earthquake_history.dart index 34561438f..63b22b1c0 100644 --- a/lib/ui/view/main/earthquake_history.dart +++ b/lib/ui/view/main/earthquake_history.dart @@ -1,7 +1,5 @@ // ignore_for_file: lines_longer_than_80_chars -import 'dart:developer'; - import 'package:eqmonitor/api/remote/supabase/telegram.dart'; import 'package:eqmonitor/provider/setting/intensity_color_provider.dart'; import 'package:eqmonitor/schema/remote/dmdata/commonHeader.dart'; @@ -23,7 +21,6 @@ class EarthquakeHistoryPage extends HookConsumerWidget { @override Widget build(BuildContext context, WidgetRef ref) { final vm = ref.watch(earthquakeHistoryViewModel); - final appBar = AppBar( title: const Text('地震履歴'), actions: [ @@ -164,8 +161,9 @@ class EarthquakeHistoryPage extends HookConsumerWidget { }, loading: () => const Center(child: CircularProgressIndicator()), error: (error, stack) { - log(error.toString()); - log(stack.toString()); + ref + .read(earthquakeHistoryViewModel.notifier) + .logError('地震履歴読み込み中にエラー発生', error, stack); return SingleChildScrollView( child: Column( mainAxisAlignment: MainAxisAlignment.center, diff --git a/lib/ui/view/main/earthquake_history.viewmodel.dart b/lib/ui/view/main/earthquake_history.viewmodel.dart index b04f58a72..3447e9411 100644 --- a/lib/ui/view/main/earthquake_history.viewmodel.dart +++ b/lib/ui/view/main/earthquake_history.viewmodel.dart @@ -1,8 +1,10 @@ import 'package:collection/collection.dart'; import 'package:dmdata_telegram_json/dmdata_telegram_json.dart'; import 'package:eqmonitor/api/remote/supabase/telegram.dart'; +import 'package:eqmonitor/provider/init/talker.dart'; import 'package:eqmonitor/schema/remote/dmdata/commonHeader.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; +import 'package:talker_flutter/talker_flutter.dart'; /// EventIDごとにまとめた地震情報 class EarthquakeHistoryItem { @@ -39,11 +41,14 @@ final earthquakeHistoryViewModel = StateNotifierProvider< class EarthquakeHistoryViewModel extends StateNotifier>> { EarthquakeHistoryViewModel(this.ref) : super(const AsyncValue.loading()) { + talker = ref.watch(talkerProvider); fetch(); } final Ref ref; + late Talker talker; + /// 電文保管用 final List _telegrams = []; @@ -166,4 +171,12 @@ class EarthquakeHistoryViewModel state = const AsyncValue.data([]); fetch(); } + + void logError( + dynamic msg, [ + Object? exception, + StackTrace? stackTrace, + ]) { + talker.error(msg, exception, stackTrace); + } } diff --git a/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart b/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart index e2d06de80..c8ba4a601 100644 --- a/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart +++ b/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart @@ -1,11 +1,12 @@ import 'dart:developer'; import 'package:dmdata_telegram_json/dmdata_telegram_json.dart'; +import 'package:eqmonitor/provider/init/talker.dart'; import 'package:flutter/material.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:intl/intl.dart' hide TextDirection; import 'package:latlong2/latlong.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../../../model/setting/jma_intensity_color_model.dart'; import '../../../../provider/init/map_area_forecast_local_e.dart'; @@ -21,8 +22,8 @@ import '../../../../schema/remote/dmdata/parameter-earthquake/parameter-earthqua import '../../../../utils/map/map_global_offset.dart'; import '../../../theme/jma_intensity.dart'; import '../../../view/widget/intensity_widget.dart'; -import '../kmoni_map/map/base_map.dart'; import '../earthquake_history.viewmodel.dart'; +import '../kmoni_map/map/base_map.dart'; class EarthquakeHistoryDetailPage extends HookConsumerWidget { const EarthquakeHistoryDetailPage({ @@ -345,6 +346,7 @@ class MapRegionIntensityWidget extends ConsumerWidget { parameterEarthquake: parameterEarthquake, mapAreaInformationCityQuakePolygons: mapAreaInformationCityQuake, isDarkMode: ref.watch(themeProvider.notifier).isDarkMode, + talker: ref.watch(talkerProvider), ), size: Size.infinite, ); @@ -361,6 +363,7 @@ class MapRegionIntensityV2Painter extends CustomPainter { required this.parameterEarthquake, required this.mapAreaInformationCityQuakePolygons, required this.isDarkMode, + required this.talker, }); final List mapPolygons; final List regions; @@ -371,6 +374,7 @@ class MapRegionIntensityV2Painter extends CustomPainter { final List mapAreaInformationCityQuakePolygons; final bool isDarkMode; + final Talker talker; @override void paint(Canvas canvas, Size size) { @@ -406,8 +410,12 @@ class MapRegionIntensityV2Painter extends CustomPainter { ..style = PaintingStyle.stroke, ); } - } on Exception catch (e) { - Logger().e(e, city.code); + } on Exception catch (e, st) { + talker.error( + 'MapRegionIntensityV2Painter ${city.code}', + e, + st, + ); } } // Regionの描画 @@ -488,6 +496,7 @@ class MapRegionIntensityPainter extends CustomPainter { required this.parameterEarthquake, required this.mapAreaInformationCityQuakePolygons, required this.isDarkMode, + required this.talker, }); final List mapPolygons; final List regions; @@ -498,10 +507,10 @@ class MapRegionIntensityPainter extends CustomPainter { final List mapAreaInformationCityQuakePolygons; final bool isDarkMode; + final Talker talker; @override void paint(Canvas canvas, Size size) { - log('Redraw'); // Cityの描画 for (final city in cities) { // city.codeが一致するMapPolygonを探す @@ -533,8 +542,8 @@ class MapRegionIntensityPainter extends CustomPainter { ..style = PaintingStyle.stroke, ); } - } on Exception catch (e) { - Logger().e(e, city.code); + } on Exception catch (e, st) { + talker.error('MapRegionIntensityPainter ${city.code}', e, st); } } // Regionの描画 diff --git a/lib/ui/view/main/intensity_estimate.dart b/lib/ui/view/main/intensity_estimate.dart index 94c2c0598..291eccb63 100644 --- a/lib/ui/view/main/intensity_estimate.dart +++ b/lib/ui/view/main/intensity_estimate.dart @@ -2,6 +2,7 @@ import 'dart:math'; import 'package:collection/collection.dart'; import 'package:eqmonitor/provider/init/parameter_earthquake.dart'; +import 'package:eqmonitor/provider/init/talker.dart'; import 'package:eqmonitor/provider/setting/intensity_color_provider.dart'; import 'package:eqmonitor/provider/theme_providers.dart'; import 'package:eqmonitor/ui/theme/jma_intensity.dart'; @@ -173,6 +174,7 @@ class IntensityEstimatePage extends HookConsumerWidget { mapPolygons: ref.watch(mapAreaForecastLocalEProvider), isDeveloper: true, + talker: ref.watch(talkerProvider), ), size: const Size(476, 927.4), ), diff --git a/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart b/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart index f7407bcad..ff7135c02 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_estimated_intensity.dart @@ -3,6 +3,7 @@ import 'package:eqmonitor/model/setting/jma_intensity_color_model.dart'; import 'package:eqmonitor/provider/earthquake/eew_provider.dart'; import 'package:eqmonitor/provider/init/map_area_forecast_local_e.dart'; import 'package:eqmonitor/provider/init/parameter_earthquake.dart'; +import 'package:eqmonitor/provider/init/talker.dart'; import 'package:eqmonitor/provider/setting/intensity_color_provider.dart'; import 'package:eqmonitor/schema/local/prefecture/map_polygon.dart'; import 'package:eqmonitor/ui/theme/jma_intensity.dart'; @@ -10,7 +11,7 @@ import 'package:eqmonitor/utils/intensity_estimate/intensity_estimate.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; import 'package:latlong2/latlong.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; /// EEWの震源要素から距離減衰式により計算した予想震度を描画 class EewEstimatedIntensityWidget extends ConsumerWidget { @@ -58,6 +59,7 @@ class EewEstimatedIntensityWidget extends ConsumerWidget { colors: ref.watch(jmaIntensityColorProvider), alpha: 0.6, isDeveloper: isDeveloper, + talker: ref.watch(talkerProvider), ), ); } @@ -73,6 +75,7 @@ class EstimatedIntensityPainter extends CustomPainter { required this.isDeveloper, this.showIntensityPoint = false, this.alpha = 1, + required this.talker, }); List mapPolygons; @@ -82,6 +85,7 @@ class EstimatedIntensityPainter extends CustomPainter { final bool showIntensityPoint; final double alpha; final bool isDeveloper; + final Talker talker; @override void paint(Canvas canvas, Size size) { @@ -122,8 +126,8 @@ class EstimatedIntensityPainter extends CustomPainter { ..style = PaintingStyle.stroke, ); } - } on Exception catch (e) { - Logger().e(e); + } on Exception catch (e, st) { + talker.error('EstimatedIntensityPainter', e, st); } }, ); diff --git a/lib/ui/view/main/kmoni_map/map/eew_intensity.dart b/lib/ui/view/main/kmoni_map/map/eew_intensity.dart index 775f72ecd..842a9452a 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_intensity.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_intensity.dart @@ -1,6 +1,7 @@ +import 'package:eqmonitor/provider/init/talker.dart'; import 'package:flutter/material.dart'; import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; import '../../../../../model/setting/jma_intensity_color_model.dart'; import '../../../../../provider/earthquake/eew_provider.dart'; @@ -26,6 +27,7 @@ class EewIntensityWidget extends ConsumerWidget { colors: ref.watch(jmaIntensityColorProvider), eews: eews, mapPolygons: mapSource, + talker: ref.watch(talkerProvider), ), size: const Size(476, 927.4), ), @@ -39,10 +41,12 @@ class EewIntensityPainter extends CustomPainter { required this.mapPolygons, required this.eews, required this.colors, + required this.talker, }); List mapPolygons; Iterable> eews; JmaIntensityColorModel colors; + final Talker talker; @override void paint(Canvas canvas, Size size) { @@ -92,8 +96,8 @@ class EewIntensityPainter extends CustomPainter { // ); // } } - } on Exception catch (e) { - Logger().e(e, region.code); + } on Exception catch (e, st) { + talker.error('EewIntensityPainter while ${region.code}', e, st); } } } diff --git a/lib/ui/view/setting/debug/debug_menu.dart b/lib/ui/view/setting/debug/debug_menu.dart index 37abe8b30..a515ef326 100644 --- a/lib/ui/view/setting/debug/debug_menu.dart +++ b/lib/ui/view/setting/debug/debug_menu.dart @@ -32,6 +32,13 @@ class DebugMenuPage extends ConsumerWidget { context.push('/settings/debug/eew_test'); }, ), + ListTile( + title: const Text('ログ'), + leading: const Icon(Icons.logo_dev), + onTap: () { + context.push('/settings/debug/log'); + }, + ), ], ), ); diff --git a/lib/ui/view/setting/debug/log_view.dart b/lib/ui/view/setting/debug/log_view.dart new file mode 100644 index 000000000..877215a4d --- /dev/null +++ b/lib/ui/view/setting/debug/log_view.dart @@ -0,0 +1,17 @@ +import 'package:eqmonitor/provider/init/talker.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:talker_flutter/talker_flutter.dart'; + +class LogView extends ConsumerWidget { + const LogView({super.key}); + + @override + Widget build(BuildContext context, WidgetRef ref) { + final talker = ref.watch(talkerProvider); + return TalkerScreen( + talker: talker, + appBarTitle: 'アプリ内ログ', + ); + } +} diff --git a/lib/ui/view/widget/updater.dart b/lib/ui/view/widget/updater.dart index 1de124bcd..45d9efeb3 100644 --- a/lib/ui/view/widget/updater.dart +++ b/lib/ui/view/widget/updater.dart @@ -1,3 +1,4 @@ +import 'package:eqmonitor/provider/init/talker.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_markdown/flutter_markdown.dart'; @@ -5,7 +6,6 @@ import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:intl/intl.dart'; import 'package:url_launcher/url_launcher_string.dart'; -import '../../../provider/logger.dart'; import '../../../provider/package_info.dart'; import '../../../provider/setting/change_log.dart'; @@ -15,15 +15,16 @@ class UpdaterButtonWidget extends HookConsumerWidget { const UpdaterButtonWidget({super.key}); @override Widget build(BuildContext context, WidgetRef ref) { + final talker = ref.watch(talkerProvider); return ref.watch(changeLogProvider).when( loading: () => const SizedBox.shrink(), error: (err, stack) { - ref.read(loggerProvider).e('error', err, stack); + talker.error('error', err, stack); return kDebugMode ? Text(err.toString()) : const SizedBox.shrink(); }, data: (changeLog) => ref.watch(packageInfoProvider).when( error: (err, stack) { - ref.read(loggerProvider).e('error', err, stack); + talker.error('error', err, stack); return const SizedBox.shrink(); }, loading: () => const SizedBox.shrink(), diff --git a/lib/utils/background_task/init.dart b/lib/utils/background_task/init.dart index 9a472dc19..0e290d3f8 100644 --- a/lib/utils/background_task/init.dart +++ b/lib/utils/background_task/init.dart @@ -1,9 +1,10 @@ +import 'dart:developer'; + import 'package:flutter_foreground_task/flutter_foreground_task.dart'; -import 'package:logger/logger.dart'; @pragma('vm:entry-point') void initForegroundTask() { - Logger().d('initForegroundTask'); + log('initForegroundTask'); FlutterForegroundTask.init( androidNotificationOptions: AndroidNotificationOptions( channelId: 'foreground_task', diff --git a/lib/utils/background_task/task.dart b/lib/utils/background_task/task.dart index a20c167d3..babf04946 100644 --- a/lib/utils/background_task/task.dart +++ b/lib/utils/background_task/task.dart @@ -1,6 +1,7 @@ // ignore_for_file: avoid_dynamic_calls import 'dart:convert'; +import 'dart:developer'; import 'dart:io'; import 'dart:isolate'; @@ -10,7 +11,6 @@ import 'package:dmdata_telegram_json/schema/dmdata/websocket_v2/websocket_v2_dat import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_foreground_task/flutter_foreground_task.dart'; -import 'package:logger/logger.dart'; import 'package:web_socket_channel/io.dart'; import '../../env/env.dart'; @@ -19,7 +19,7 @@ import '../../ui/theme/jma_intensity.dart'; // The callback function should always be a top-level function. @pragma('vm:entry-point') void startForegroundTask() { - Logger().d('startForegroundTask'); + log('startForegroundTask'); FlutterForegroundTask.setTaskHandler(FirstTaskHandler()); } diff --git a/lib/utils/fcm/firebase_notification_controller.dart b/lib/utils/fcm/firebase_notification_controller.dart index 3ee7ac94a..91f1b781b 100644 --- a/lib/utils/fcm/firebase_notification_controller.dart +++ b/lib/utils/fcm/firebase_notification_controller.dart @@ -8,8 +8,14 @@ import 'package:eqmonitor/utils/fcm/notification_channel.dart'; import 'package:firebase_messaging/firebase_messaging.dart'; import 'package:flutter/foundation.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:talker_flutter/talker_flutter.dart'; Future initFirebaseCloudMessaging() async { + final talker = Talker( + filter: BaseTalkerFilter( + titles: ['Firebase Cloud Messaging'], + ), + ); final messaging = FirebaseMessaging.instance; // 権限を取得 await AwesomeNotifications().isNotificationAllowed().then((isAllowed) { @@ -36,19 +42,24 @@ Future initFirebaseCloudMessaging() async { // TopicをSubscribe for (final e in Topics.values) { await messaging.subscribeToTopic(e.name); + talker.debug('Subscribed to Topic ${e.name}'); } // Notification Settingを取得 final prefs = await SharedPreferences.getInstance(); final setting = NotificationSettingsModel.loadFromPrefs(prefs); if (setting.isRecieveTraining) { await messaging.subscribeToTopic('test'); + talker.debug('Subscribed to Topic test'); } else { await messaging.unsubscribeFromTopic('test'); + talker.debug('Unsubscribed to Topic test'); } if (setting.isRecieveVzse40) { await messaging.subscribeToTopic('vzse40'); + talker.debug('Subscribed to Topic vzse40'); } else { await messaging.unsubscribeFromTopic('vzse40'); + talker.debug('Unsubscribed to Topic vzse40'); } } diff --git a/lib/utils/providers_logger.dart b/lib/utils/providers_logger.dart index 2f27abcd8..f1dc11e3f 100644 --- a/lib/utils/providers_logger.dart +++ b/lib/utils/providers_logger.dart @@ -1,9 +1,11 @@ import 'package:flutter_riverpod/flutter_riverpod.dart'; -import 'package:logger/logger.dart'; +import 'package:talker_flutter/talker_flutter.dart'; /// ref: https://github.com/GitGud31/theme_riverpod_hive/blob/master/lib/log.dart class ProvidersLogger extends ProviderObserver { - final logger = Logger(); + ProvidersLogger(this.talker); + + final Talker talker; @override void didAddProvider( @@ -13,7 +15,7 @@ class ProvidersLogger extends ProviderObserver { ) { //super.didAddProvider(provider, value, container); - logger.d( + talker.debug( ''' { "provider": "${provider.name ?? provider.runtimeType}", @@ -30,7 +32,7 @@ class ProvidersLogger extends ProviderObserver { Object? newValue, ProviderContainer container, ) { - logger.d( + talker.debug( ''' { "provider": "${provider.name ?? provider.runtimeType}", @@ -46,7 +48,7 @@ class ProvidersLogger extends ProviderObserver { ) { //super.didDisposeProvider(provider, containers); - logger.d( + talker.debug( ''' { "provider": "${provider.name ?? provider.runtimeType}", diff --git a/lib/utils/talker_log/go_router_talker_observer.dart b/lib/utils/talker_log/go_router_talker_observer.dart new file mode 100644 index 000000000..3d48eee3e --- /dev/null +++ b/lib/utils/talker_log/go_router_talker_observer.dart @@ -0,0 +1,63 @@ +import 'package:eqmonitor/utils/talker_log/log_types.dart'; +import 'package:flutter/material.dart'; +import 'package:talker_flutter/talker_flutter.dart'; + +class GoRouterTalkerObserver extends NavigatorObserver { + GoRouterTalkerObserver(this.talker); + + final Talker talker; + @override + void didPush(Route route, Route? previousRoute) { + talker.logTyped( + GoRouterLog( + '[PUSH] ${previousRoute?.settings.name} -> ${route.settings.name}', + ), + ); + } + + @override + void didPop(Route route, Route? previousRoute) { + talker.logTyped( + GoRouterLog( + '[POP] ${previousRoute?.settings.name} -> ${route.settings.name}', + ), + ); + } + + @override + void didRemove(Route route, Route? previousRoute) { + talker.logTyped( + GoRouterLog( + '[REMOVE] ${previousRoute?.settings.name} -> ${route.settings.name}', + ), + ); + } + + @override + void didReplace({Route? newRoute, Route? oldRoute}) { + talker.logTyped( + GoRouterLog( + '[REPLACE] $oldRoute -> $newRoute', + ), + ); + } + + @override + void didStartUserGesture( + Route route, Route? previousRoute) { + talker.logTyped( + GoRouterLog( + '[USER GESTURE] ${previousRoute?.settings.name} -> ${route.settings.name}', + ), + ); + } + + @override + void didStopUserGesture() { + talker.logTyped( + GoRouterLog( + '[STOP USER GESTURE]', + ), + ); + } +} diff --git a/lib/utils/talker_log/log_types.dart b/lib/utils/talker_log/log_types.dart new file mode 100644 index 000000000..f815f1aa9 --- /dev/null +++ b/lib/utils/talker_log/log_types.dart @@ -0,0 +1,57 @@ +import 'package:flutter/material.dart'; +import 'package:talker_flutter/talker_flutter.dart'; + +/// 初期化時のログ +class InitializationEventLog extends FlutterTalkerLog { + InitializationEventLog(super.message); + + @override + String get title => 'Initialization'; + + @override + Color get color => Colors.blue; +} + +/// GoRouterのログ +class GoRouterLog extends FlutterTalkerLog { + GoRouterLog(super.message); + + @override + String get title => 'GoRouter'; + + @override + Color get color => Colors.green; +} + +/// Firebase Performanceのログ +class FirebasePerformanceLog extends FlutterTalkerLog { + FirebasePerformanceLog(super.message); + + @override + String get title => 'Firebase Performance'; + + @override + Color get color => Colors.orange; +} + +/// KyoshinImageParserのログ +class KyoshinImageParserLog extends FlutterTalkerLog { + KyoshinImageParserLog(super.message); + + @override + String get title => 'KyoshinImageParser'; + + @override + Color get color => Colors.purple; +} + +/// EewProviderのログ +class EewProviderLog extends FlutterTalkerLog { + EewProviderLog(super.message); + + @override + String get title => 'EewProvider'; + + @override + Color get color => Colors.blueAccent; +} diff --git a/pubspec.lock b/pubspec.lock index eedc84259..5b6a9a553 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -854,13 +854,6 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.0.1" - logger: - dependency: "direct main" - description: - name: logger - url: "https://pub.dartlang.org" - source: hosted - version: "1.1.0" logging: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 5ede7a095..1c6c9c2d1 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -51,7 +51,6 @@ dependencies: intl: ^0.17.0 json_annotation: ^4.7.0 latlong2: ^0.8.1 - logger: ^1.1.0 oauth1: ^2.0.0 package_info_plus: ^3.0.1 path_provider: ^2.0.11 From 14d3193f6c68de134ad32ed1ad1224df2455b55e Mon Sep 17 00:00:00 2001 From: YumNumm Date: Sun, 20 Nov 2022 23:54:00 +0900 Subject: [PATCH 07/13] =?UTF-8?q?add:=20=E5=9C=B0=E9=9C=87=E5=B1=A5?= =?UTF-8?q?=E6=AD=B4=E3=81=AE=E3=83=AD=E3=82=B0=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/ui/view/main/earthquake_history.viewmodel.dart | 3 +++ lib/utils/talker_log/log_types.dart | 11 +++++++++++ 2 files changed, 14 insertions(+) diff --git a/lib/ui/view/main/earthquake_history.viewmodel.dart b/lib/ui/view/main/earthquake_history.viewmodel.dart index 3447e9411..eda621e05 100644 --- a/lib/ui/view/main/earthquake_history.viewmodel.dart +++ b/lib/ui/view/main/earthquake_history.viewmodel.dart @@ -3,6 +3,7 @@ import 'package:dmdata_telegram_json/dmdata_telegram_json.dart'; import 'package:eqmonitor/api/remote/supabase/telegram.dart'; import 'package:eqmonitor/provider/init/talker.dart'; import 'package:eqmonitor/schema/remote/dmdata/commonHeader.dart'; +import 'package:eqmonitor/utils/talker_log/log_types.dart'; import 'package:hooks_riverpod/hooks_riverpod.dart'; import 'package:talker_flutter/talker_flutter.dart'; @@ -162,12 +163,14 @@ class EarthquakeHistoryViewModel ); }, ); + talker.logTyped(EarthquakeHistoryLog('地震履歴を${toState.length}件取得しました')); return toState; }); } void refresh() { _telegrams.clear(); + talker.logTyped(EarthquakeHistoryLog('地震履歴をクリアしました')); state = const AsyncValue.data([]); fetch(); } diff --git a/lib/utils/talker_log/log_types.dart b/lib/utils/talker_log/log_types.dart index f815f1aa9..4fd9a76fc 100644 --- a/lib/utils/talker_log/log_types.dart +++ b/lib/utils/talker_log/log_types.dart @@ -55,3 +55,14 @@ class EewProviderLog extends FlutterTalkerLog { @override Color get color => Colors.blueAccent; } + +/// EarthquakeHistory関連のログ +class EarthquakeHistoryLog extends FlutterTalkerLog { + EarthquakeHistoryLog(super.message); + + @override + String get title => 'EarthquakeHistory'; + + @override + Color get color => Colors.lightBlueAccent; +} \ No newline at end of file From 984d0517eb04f5596865db75dd47835f960abcde Mon Sep 17 00:00:00 2001 From: YumNumm Date: Mon, 21 Nov 2022 00:05:41 +0900 Subject: [PATCH 08/13] =?UTF-8?q?fix:=20EEWUI=E3=81=AE`=E7=A8=8B=E5=BA=A6?= =?UTF-8?q?=E4=BB=A5=E4=B8=8A`=E3=81=AE=E6=96=87=E5=AD=97=E8=89=B2?= =?UTF-8?q?=E3=81=8C=E9=9C=87=E5=BA=A6=E9=83=A8=E5=88=86=E3=81=A8=E7=95=B0?= =?UTF-8?q?=E3=81=AA=E3=82=8B=E5=95=8F=E9=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dart_tool/package_config.json | 8 +++++++- .../map/eew_pswave_arraival_circle_stroke.dart | 4 ++-- lib/ui/view/widget/eew/eew_body_widget.dart | 16 +++++++++++++--- pubspec.lock | 7 +++++++ pubspec.yaml | 1 + 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/.dart_tool/package_config.json b/.dart_tool/package_config.json index 499058587..b7059dfb8 100644 --- a/.dart_tool/package_config.json +++ b/.dart_tool/package_config.json @@ -1099,6 +1099,12 @@ "packageUri": "lib/", "languageVersion": "2.12" }, + { + "name": "substring_highlight", + "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/substring_highlight-1.0.33", + "packageUri": "lib/", + "languageVersion": "2.12" + }, { "name": "supabase", "rootUri": "file:///C:/Users/onory/AppData/Local/Pub/Cache/hosted/pub.dartlang.org/supabase-1.2.0", @@ -1274,7 +1280,7 @@ "languageVersion": "2.18" } ], - "generated": "2022-11-20T14:20:37.003502Z", + "generated": "2022-11-20T15:03:39.731354Z", "generator": "pub", "generatorVersion": "2.18.4" } diff --git a/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart b/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart index 1ff36d007..845078964 100644 --- a/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart +++ b/lib/ui/view/main/kmoni_map/map/eew_pswave_arraival_circle_stroke.dart @@ -123,8 +123,8 @@ class _EewPswaveArraivalCircleStrokePainter extends CustomPainter { Path()..addPolygon(sOffsets, true), Paint() ..color = isWarning - ? const Color.fromARGB(255, 255, 0, 0) - : const Color.fromARGB(255, 255, 149, 0) + ? const Color.fromARGB(255, 255, 0, 0).withOpacity(0.6) + : const Color.fromARGB(255, 255, 149, 0).withOpacity(0.6) ..isAntiAlias = true ..strokeCap = StrokeCap.square ..style = PaintingStyle.stroke diff --git a/lib/ui/view/widget/eew/eew_body_widget.dart b/lib/ui/view/widget/eew/eew_body_widget.dart index 96781162f..6bbddb24a 100644 --- a/lib/ui/view/widget/eew/eew_body_widget.dart +++ b/lib/ui/view/widget/eew/eew_body_widget.dart @@ -71,6 +71,11 @@ class EewBodyWidget extends ConsumerWidget { initialExpanded: ref.watch(eewExpandedProvider)[eew.key.eventId], ); + /// 警報かどうか + final isWarning = eew.value.isWarning ?? + eew.value.comments?.warning?.codes.contains(201) ?? + false; + return SizedBox( width: MediaQuery.of(context).size.width, child: Padding( @@ -133,7 +138,7 @@ class EewBodyWidget extends ConsumerWidget { child: Padding( padding: const EdgeInsets.all(8), child: Text( - '${(eew.value.comments?.warning?.codes ?? []).contains(201) ? '警報' : ''}' + '${isWarning ? '警報 ' : ''}' '${eew.value.isLastInfo ? ' 最終 ' : ''}#${eew.key.serialNo}', style: const TextStyle( fontWeight: FontWeight.bold, @@ -202,11 +207,16 @@ class EewBodyWidget extends ConsumerWidget { // 程度以上 if (eew.value.intensity?.maxint.to == JmaIntensity.over) - const Text( + Text( '程度以上', style: TextStyle( fontWeight: FontWeight.bold, fontSize: 15, + color: (eew.value.intensity?.maxint + .from ?? + JmaIntensity.Unknown) + .fromUser(colors) + .onPrimary, ), ), ], @@ -274,7 +284,7 @@ class EewBodyWidget extends ConsumerWidget { ), ), Text( - '${(eew.value.comments?.warning?.codes ?? []).contains(201) ? '警報' : '予報'}' + '${isWarning ? '警報' : '予報'}' '${eew.value.isLastInfo ? ' 最終' : ''} #${eew.key.serialNo}', style: const TextStyle( fontWeight: FontWeight.bold, diff --git a/pubspec.lock b/pubspec.lock index 5b6a9a553..6ef9edbe4 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1272,6 +1272,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.1" + substring_highlight: + dependency: "direct main" + description: + name: substring_highlight + url: "https://pub.dartlang.org" + source: hosted + version: "1.0.33" supabase: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 1c6c9c2d1..d6b45286b 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -61,6 +61,7 @@ dependencies: shared_preferences_android: ^2.0.13 shared_preferences_ios: ^2.1.1 state_notifier: ^0.7.2+1 + substring_highlight: ^1.0.33 supabase: ^1.0.1 supabase_flutter: ^1.0.1 talker_flutter: ^2.1.0 From 85382ada4403d8e4072c612fff5559a622b98fb9 Mon Sep 17 00:00:00 2001 From: YumNumm Date: Mon, 21 Nov 2022 00:16:33 +0900 Subject: [PATCH 09/13] =?UTF-8?q?add:=20=E5=9C=B0=E9=9C=87=E5=B1=A5?= =?UTF-8?q?=E6=AD=B4=E8=A9=B3=E7=B4=B0=E7=94=BB=E9=9D=A2=E3=81=AE=E3=83=AD?= =?UTF-8?q?=E3=82=B0=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../earthquake_history_detail.dart | 139 +----------------- lib/ui/view/main/kmoni_map.dart | 24 ++- 2 files changed, 16 insertions(+), 147 deletions(-) diff --git a/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart b/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart index c8ba4a601..c87fc2f10 100644 --- a/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart +++ b/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart @@ -1,5 +1,3 @@ -import 'dart:developer'; - import 'package:dmdata_telegram_json/dmdata_telegram_json.dart'; import 'package:eqmonitor/provider/init/talker.dart'; import 'package:flutter/material.dart'; @@ -15,8 +13,6 @@ import '../../../../provider/init/parameter_earthquake.dart'; import '../../../../provider/setting/intensity_color_provider.dart'; import '../../../../provider/theme_providers.dart'; import '../../../../schema/local/prefecture/map_polygon.dart'; -import '../../../../schema/remote/dmdata/eq-information/earthquake-information/intensity/city.dart'; -import '../../../../schema/remote/dmdata/eq-information/earthquake-information/intensity/region.dart'; import '../../../../schema/remote/dmdata/eq-information/earthquake-information/intensity/station.dart'; import '../../../../schema/remote/dmdata/parameter-earthquake/parameter-earthquake.dart'; import '../../../../utils/map/map_global_offset.dart'; @@ -378,7 +374,8 @@ class MapRegionIntensityV2Painter extends CustomPainter { @override void paint(Canvas canvas, Size size) { - log('Redraw'); + final stopWatch = Stopwatch()..start(); + // Cityの描画 for (final city in cities) { // city.codeが一致するMapPolygonを探す @@ -470,138 +467,14 @@ class MapRegionIntensityV2Painter extends CustomPainter { ); } */ - } - - @override - bool shouldRepaint(MapRegionIntensityV2Painter oldDelegate) { - return oldDelegate.mapPolygons != mapPolygons || - oldDelegate.regions != regions || - oldDelegate.colors != colors || - oldDelegate.parameterEarthquake != parameterEarthquake || - oldDelegate.stations != stations || - oldDelegate.cities != cities || - oldDelegate.mapAreaInformationCityQuakePolygons != - mapAreaInformationCityQuakePolygons || - oldDelegate.isDarkMode != isDarkMode; - } -} - -class MapRegionIntensityPainter extends CustomPainter { - MapRegionIntensityPainter({ - required this.mapPolygons, - required this.regions, - required this.stations, - required this.cities, - required this.colors, - required this.parameterEarthquake, - required this.mapAreaInformationCityQuakePolygons, - required this.isDarkMode, - required this.talker, - }); - final List mapPolygons; - final List regions; - final List stations; - final List cities; - final JmaIntensityColorModel colors; - final ParameterEarthquake parameterEarthquake; - final List - mapAreaInformationCityQuakePolygons; - final bool isDarkMode; - final Talker talker; - @override - void paint(Canvas canvas, Size size) { - // Cityの描画 - for (final city in cities) { - // city.codeが一致するMapPolygonを探す - try { - final mapCityPolygons = mapAreaInformationCityQuakePolygons.where( - (element) => element.code == city.code, - ); - for (final mapPolygon in mapCityPolygons) { - canvas - ..drawPath( - mapPolygon.path, - Paint() - ..color = JmaIntensity.values - .firstWhere( - (e) => e.name == city.maxInt.toString(), - orElse: () => JmaIntensity.Error, - ) - .fromUser(colors) - ..isAntiAlias = true - ..strokeCap = StrokeCap.square, - ) - ..drawPath( - mapPolygon.path, - Paint() - ..color = isDarkMode - ? const Color.fromARGB(70, 50, 50, 50) - : const Color.fromARGB(70, 150, 150, 150) - ..isAntiAlias = true - ..style = PaintingStyle.stroke, - ); - } - } on Exception catch (e, st) { - talker.error('MapRegionIntensityPainter ${city.code}', e, st); - } - } - // Regionの描画 - for (final region in regions) { - // region.codeが一致するMapPolygonを探す - final mapRegionPolygons = mapPolygons.where( - (element) => element.code == region.code, - ); - for (final mapPolygon in mapRegionPolygons) { - if (cities.isEmpty) { - canvas.drawPath( - mapPolygon.path, - Paint() - ..color = JmaIntensity.values - .firstWhere( - (e) => e.name == region.maxInt.toString(), - orElse: () => JmaIntensity.Error, - ) - .fromUser(colors) - ..isAntiAlias = true - ..strokeCap = StrokeCap.square, - ); - } - canvas.drawPath( - mapPolygon.path, - Paint() - ..color = isDarkMode - ? const Color.fromARGB(150, 50, 50, 50) - : const Color.fromARGB(150, 150, 150, 150) - ..isAntiAlias = true - ..style = PaintingStyle.stroke, - ); - } - } - // TODO(YumNumm): 観測点の描画実装 - /*for (final station in stations) { - final param = - parameterEarthquake.items.firstWhere((e) => e.code == station.code); - final offset = MapGlobalOffset.latLonToGlobalPoint( - LatLng(param.latitude, param.longitude), - ).toLocalOffset(const Size(476, 927.4)); - canvas.drawCircle( - offset, - 1, - Paint() - ..color = JmaIntensity.values - .firstWhere((e) => e.name == station.intensity) - .color - .withBlue(100) - ..isAntiAlias = true - ..style = PaintingStyle.fill, - ); - } - */ + talker.debug( + 'MapRegionIntensityPainter took ${stopWatch.elapsed.inMicroseconds / 1000}ms', + ); } @override - bool shouldRepaint(MapRegionIntensityPainter oldDelegate) { + bool shouldRepaint(MapRegionIntensityV2Painter oldDelegate) { return oldDelegate.mapPolygons != mapPolygons || oldDelegate.regions != regions || oldDelegate.colors != colors || diff --git a/lib/ui/view/main/kmoni_map.dart b/lib/ui/view/main/kmoni_map.dart index 86d052b43..1044e2d85 100644 --- a/lib/ui/view/main/kmoni_map.dart +++ b/lib/ui/view/main/kmoni_map.dart @@ -2,7 +2,6 @@ import 'dart:ui'; -import 'package:bordered_text/bordered_text.dart'; import 'package:eqmonitor/model/setting/kmoni_setting_model.dart'; import 'package:eqmonitor/provider/earthquake/eew_provider.dart'; import 'package:eqmonitor/provider/earthquake/kmoni_controller.dart'; @@ -142,21 +141,18 @@ class KmoniMap extends HookConsumerWidget { // テストモードのオーバレイ if (ref.watch(kmoniProvider).testCaseStartTime != null) - Center( - child: IgnorePointer( + const IgnorePointer( + child: Align( + alignment: Alignment.bottomRight, child: Padding( - padding: const EdgeInsets.all(8), + padding: EdgeInsets.all(kFloatingActionButtonMargin * 3), child: FittedBox( - child: BorderedText( - strokeWidth: 1, - strokeColor: Colors.white, - child: const Text( - 'TESTING...', - style: TextStyle( - fontWeight: FontWeight.bold, - color: Color.fromARGB(129, 255, 0, 0), - fontSize: 50, - ), + child: Text( + '訓練', + style: TextStyle( + fontWeight: FontWeight.bold, + color: Color.fromARGB(202, 255, 0, 0), + fontSize: 100, ), ), ), From 75e8c06b519fd16343738434e7bb268dd02320ac Mon Sep 17 00:00:00 2001 From: YumNumm Date: Mon, 21 Nov 2022 00:54:03 +0900 Subject: [PATCH 10/13] =?UTF-8?q?fix:=20EEWUI=E3=81=AE=E6=94=B9=E5=96=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/earthquake_history.viewmodel.dart | 47 ++++++++------ .../earthquake_history_detail.dart | 43 +++++++------ lib/ui/view/widget/eew/eew_body_widget.dart | 61 +++++++++---------- 3 files changed, 84 insertions(+), 67 deletions(-) diff --git a/lib/ui/view/main/earthquake_history.viewmodel.dart b/lib/ui/view/main/earthquake_history.viewmodel.dart index eda621e05..3c17b25d2 100644 --- a/lib/ui/view/main/earthquake_history.viewmodel.dart +++ b/lib/ui/view/main/earthquake_history.viewmodel.dart @@ -141,24 +141,35 @@ class EarthquakeHistoryViewModel isSokuhou: isSokuhou, component: component, intensity: intensity, - comments: [ - if (latestVxse61Info != null && - latestVxse61Info.comments != null) ...[ - latestVxse61Info.comments! - ], + comments: () { if (latestVxse53Info != null && - latestVxse53Info.comments != null) ...[ - latestVxse53Info.comments! - ], - if (latestVxse52Info != null && - latestVxse52Info.comments != null) ...[ - latestVxse52Info.comments! - ], - if (latestVxse51Info != null && - latestVxse51Info.comments != null) ...[ - latestVxse51Info.comments! - ], - ], + latestVxse53Info.comments != null) { + return [ + if (latestVxse61Info != null && + latestVxse61Info.comments != null) + latestVxse61Info.comments!, + latestVxse53Info.comments!, + ]; + } + return [ + if (latestVxse61Info != null && + latestVxse61Info.comments != null) ...[ + latestVxse61Info.comments! + ], + if (latestVxse53Info != null && + latestVxse53Info.comments != null) ...[ + latestVxse53Info.comments! + ], + if (latestVxse52Info != null && + latestVxse52Info.comments != null) ...[ + latestVxse52Info.comments! + ], + if (latestVxse51Info != null && + latestVxse51Info.comments != null) ...[ + latestVxse51Info.comments! + ], + ]; + }(), ), ); }, @@ -170,7 +181,7 @@ class EarthquakeHistoryViewModel void refresh() { _telegrams.clear(); - talker.logTyped(EarthquakeHistoryLog('地震履歴をクリアしました')); + talker.logTyped(EarthquakeHistoryLog('地震履歴をクリアしました')); state = const AsyncValue.data([]); fetch(); } diff --git a/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart b/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart index c87fc2f10..057401aed 100644 --- a/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart +++ b/lib/ui/view/main/earthquake_history/earthquake_history_detail.dart @@ -55,6 +55,7 @@ class EarthquakeHistoryDetailPage extends HookConsumerWidget { ), ), child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ Row(), // 発生時刻 @@ -224,26 +225,26 @@ class EarthquakeHistoryDetailPage extends HookConsumerWidget { ), ], ), + Padding( + padding: const EdgeInsets.all(4), + child: Text( + (StringBuffer() + ..writeAll( + [ + for (final comment in item.comments) ...[ + if (comment.forecast?.text != null) + comment.forecast!.text, + if (comment.free != null) '\n${comment.free!}' + ] + ], + )) + .toString(), + ), + ), ], ), ), ), - // Padding( - // padding: const EdgeInsets.symmetric(horizontal: 8), - // child: Text( - // (StringBuffer() - // ..writeAll( - // [ - // if (comment?.forecast?.text != null) - // comment!.forecast!.text, - // if (comment?.comments?.text != null) - // '\n${comment!.comments!.text}', - // if (comment?.free != null) '\n${comment!.free!}', - // ], - // )) - // .toString(), - // ), - // ), Expanded( child: DecoratedBox( decoration: BoxDecoration( @@ -284,10 +285,16 @@ class EarthquakeHistoryDetailPage extends HookConsumerWidget { padding: const EdgeInsets.all(8), child: Row( children: [ + // int1 ~ maxInt for (final i in JmaIntensity.values) - if (i == JmaIntensity.over) + if ([ + JmaIntensity.Int0, + JmaIntensity.over, + JmaIntensity.Unknown, + JmaIntensity.Error, + ].contains(i)) const SizedBox.shrink() - else + else if (i.intValue <= maxInt.intValue) Row( mainAxisSize: MainAxisSize.min, children: [ diff --git a/lib/ui/view/widget/eew/eew_body_widget.dart b/lib/ui/view/widget/eew/eew_body_widget.dart index 6bbddb24a..6c192cfdb 100644 --- a/lib/ui/view/widget/eew/eew_body_widget.dart +++ b/lib/ui/view/widget/eew/eew_body_widget.dart @@ -268,35 +268,29 @@ class EewBodyWidget extends ConsumerWidget { // ヘッダー・予想最大震度 Expanded( child: Column( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Card( - child: Row( - mainAxisAlignment: MainAxisAlignment.center, + child: Column( + mainAxisSize: MainAxisSize.min, children: [ - FittedBox( - child: Column( - children: [ - Row(), - const Text( - '緊急地震速報', - style: TextStyle( - fontWeight: FontWeight.bold, - ), - ), - Text( - '${isWarning ? '警報' : '予報'}' - '${eew.value.isLastInfo ? ' 最終' : ''} #${eew.key.serialNo}', - style: const TextStyle( - fontWeight: FontWeight.bold, - ), - ), - ], + Row(), + const Text( + '緊急地震速報', + style: TextStyle( + fontWeight: FontWeight.bold, + ), + ), + Text( + '${isWarning ? '警報' : '予報'}' + '${eew.value.isLastInfo ? ' 最終' : ''} #${eew.key.serialNo}', + style: const TextStyle( + fontWeight: FontWeight.bold, ), ), ], ), ), - // 予想最大震度 Text( '予想最大震度', @@ -309,16 +303,21 @@ class EewBodyWidget extends ConsumerWidget { ), // 予想最大震度不明の場合 if (maxIntensity == JmaIntensity.Unknown) - FittedBox( - child: Text( - '不明', - style: TextStyle( - fontWeight: FontWeight.bold, - fontSize: 30, - color: (eew.value.intensity?.maxint.from ?? - JmaIntensity.Unknown) - .fromUser(colors) - .onPrimary, + Padding( + padding: + const EdgeInsets.symmetric(vertical: 15), + child: FittedBox( + child: Text( + '不明', + style: TextStyle( + fontWeight: FontWeight.bold, + fontSize: 30, + color: + (eew.value.intensity?.maxint.from ?? + JmaIntensity.Unknown) + .fromUser(colors) + .onPrimary, + ), ), ), ) From 485cdba1070009d4ace4fc1bd917b66c41ffe250 Mon Sep 17 00:00:00 2001 From: YumNumm Date: Mon, 21 Nov 2022 00:58:13 +0900 Subject: [PATCH 11/13] =?UTF-8?q?add:=20=E3=83=AD=E3=82=B0View=E3=82=92?= =?UTF-8?q?=E9=96=8B=E3=81=8F=E3=83=9C=E3=82=BF=E3=83=B3=E3=82=92=E8=BF=BD?= =?UTF-8?q?=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/ui/view/setting/about_app.dart | 2 ++ .../setting/component/log_view_widget.dart | 29 +++++++++++++++++++ .../setting/component/update_history.dart | 1 + .../update_history_view.dart | 1 + 4 files changed, 33 insertions(+) create mode 100644 lib/ui/view/setting/component/log_view_widget.dart diff --git a/lib/ui/view/setting/about_app.dart b/lib/ui/view/setting/about_app.dart index a5aa1073c..523dc1d19 100644 --- a/lib/ui/view/setting/about_app.dart +++ b/lib/ui/view/setting/about_app.dart @@ -1,5 +1,6 @@ import 'package:eqmonitor/ui/view/setting/component/fcm_token_widget.dart'; import 'package:eqmonitor/ui/view/setting/component/license_widget.dart'; +import 'package:eqmonitor/ui/view/setting/component/log_view_widget.dart'; import 'package:eqmonitor/ui/view/setting/component/setting_section.dart'; import 'package:eqmonitor/ui/view/setting/component/thanks_widget.dart'; import 'package:eqmonitor/ui/view/setting/component/update_history.dart'; @@ -55,6 +56,7 @@ class AboutAppPage extends HookConsumerWidget { ), ), ), + const LogViewButtonWidget(), const Divider(), const SettingsSection( title: 'アプリ情報', diff --git a/lib/ui/view/setting/component/log_view_widget.dart b/lib/ui/view/setting/component/log_view_widget.dart new file mode 100644 index 000000000..a922ba11c --- /dev/null +++ b/lib/ui/view/setting/component/log_view_widget.dart @@ -0,0 +1,29 @@ +import 'package:flutter/material.dart'; +import 'package:go_router/go_router.dart'; + +class LogViewButtonWidget extends StatelessWidget { + const LogViewButtonWidget({super.key}); + + @override + Widget build(BuildContext context) { + const descriptionTextStyle = TextStyle( + fontWeight: FontWeight.w400, + fontSize: 14, + ); + const titleTextStyle = TextStyle( + fontSize: 20, + fontWeight: FontWeight.w500, + ); + + return ListTile( + contentPadding: const EdgeInsets.symmetric(horizontal: 20), + title: const Text( + 'ログ', + style: titleTextStyle, + ), + subtitle: const Text('ログを確認する', style: descriptionTextStyle), + leading: const Icon(Icons.logo_dev), + onTap: () => context.push('/settings/debug/log'), + ); + } +} diff --git a/lib/ui/view/setting/component/update_history.dart b/lib/ui/view/setting/component/update_history.dart index 1f0ff5d67..5154186be 100644 --- a/lib/ui/view/setting/component/update_history.dart +++ b/lib/ui/view/setting/component/update_history.dart @@ -22,6 +22,7 @@ class UpdateHistoryButtonWidget extends StatelessWidget { style: titleTextStyle, ), subtitle: const Text('更新履歴を確認する', style: descriptionTextStyle), + leading: const Icon(Icons.history), onTap: () => context.push('/settings/appinfo/updateHistory'), ); } diff --git a/lib/ui/view/setting/update_history_view/update_history_view.dart b/lib/ui/view/setting/update_history_view/update_history_view.dart index a0f9ff3b5..d912ae9db 100644 --- a/lib/ui/view/setting/update_history_view/update_history_view.dart +++ b/lib/ui/view/setting/update_history_view/update_history_view.dart @@ -21,6 +21,7 @@ class UpdateHistotyView extends HookConsumerWidget { itemBuilder: (context, index) { final item = data.items[index]; return ExpansionTile( + initiallyExpanded: index == 0, title: ListTile( title: Text( item.version, From 4abff60406f6fd13711d08c987760d6618a337ea Mon Sep 17 00:00:00 2001 From: YumNumm Date: Mon, 21 Nov 2022 01:26:11 +0900 Subject: [PATCH 12/13] =?UTF-8?q?add:=20[ci]=20Firebase=E3=81=AB=E3=82=B7?= =?UTF-8?q?=E3=83=B3=E3=83=9C=E3=83=AB=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB?= =?UTF-8?q?=E3=82=92=E3=82=A2=E3=83=83=E3=83=97=E3=83=AD=E3=83=BC=E3=83=89?= =?UTF-8?q?=E3=81=99=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/android-release.yaml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/.github/workflows/android-release.yaml b/.github/workflows/android-release.yaml index 8ec8ef9ee..c8d827dbc 100644 --- a/.github/workflows/android-release.yaml +++ b/.github/workflows/android-release.yaml @@ -2,7 +2,7 @@ name: Flutter build Android(r) on: push: - branches: [main,android,without-firebase] + branches: [main, android, without-firebase] workflow_dispatch: jobs: @@ -13,6 +13,10 @@ jobs: steps: - uses: actions/checkout@v2 + - uses: pocket-apps/action-setup-firebase@v2 + with: + firebase-token: ${{ secrets.FIREBASE_TOKEN }} + # https://github.com/kuhnroyal/flutter-fvm-config-action - name: Fetch flutter config uses: kuhnroyal/flutter-fvm-config-action@v1 @@ -87,6 +91,10 @@ jobs: name: release-apk path: build/app/outputs/flutter-apk/app-release.apk + - name: Upload obfuscate + run: | + firebase crashlytics:symbols:upload --app=1:179553945248:android:31d2c3e4dcc608f66fabc5 obfuscate/android + # - uses: codecov/codecov-action@v3 # with: # token: ${{ secrets.CODECOV_TOKEN }} # not required for public repos From b3b00022cb24e34be71364a7e31390b13d9e0c9b Mon Sep 17 00:00:00 2001 From: "Restyled.io" Date: Sun, 20 Nov 2022 16:30:09 +0000 Subject: [PATCH 13/13] Restyled by whitespace --- lib/utils/talker_log/log_types.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/talker_log/log_types.dart b/lib/utils/talker_log/log_types.dart index 4fd9a76fc..f345cfc72 100644 --- a/lib/utils/talker_log/log_types.dart +++ b/lib/utils/talker_log/log_types.dart @@ -65,4 +65,4 @@ class EarthquakeHistoryLog extends FlutterTalkerLog { @override Color get color => Colors.lightBlueAccent; -} \ No newline at end of file +}