From dfdf7b23c87e7921ba4c090ef7e3b43fc1c53129 Mon Sep 17 00:00:00 2001 From: LittleSheep Date: Wed, 31 Jul 2024 13:29:26 +0800 Subject: [PATCH] :bug: Fix theme switching --- ios/Podfile.lock | 30 ++++----- lib/bootstrapper.dart | 14 ---- lib/main.dart | 12 ++++ lib/screens/settings.dart | 45 ++++++++----- lib/theme.dart | 3 + lib/translations/en_us.dart | 5 +- lib/translations/zh_cn.dart | 4 +- .../navigation/app_navigation_drawer.dart | 43 +++++++------ macos/Podfile.lock | 39 ++++++----- pubspec.lock | 64 +++++++++---------- pubspec.yaml | 13 +++- 11 files changed, 156 insertions(+), 116 deletions(-) diff --git a/ios/Podfile.lock b/ios/Podfile.lock index 49d73e0..e4fd06a 100644 --- a/ios/Podfile.lock +++ b/ios/Podfile.lock @@ -38,19 +38,19 @@ PODS: - file_picker (0.0.1): - DKImagePickerController/PhotoGallery - Flutter - - Firebase/CoreOnly (10.28.0): - - FirebaseCore (= 10.28.0) - - Firebase/Messaging (10.28.0): + - Firebase/CoreOnly (10.29.0): + - FirebaseCore (= 10.29.0) + - Firebase/Messaging (10.29.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 10.28.0) - - firebase_core (3.2.0): - - Firebase/CoreOnly (= 10.28.0) + - FirebaseMessaging (~> 10.29.0) + - firebase_core (3.3.0): + - Firebase/CoreOnly (= 10.29.0) - Flutter - - firebase_messaging (15.0.3): - - Firebase/Messaging (= 10.28.0) + - firebase_messaging (15.0.4): + - Firebase/Messaging (= 10.29.0) - firebase_core - Flutter - - FirebaseCore (10.28.0): + - FirebaseCore (10.29.0): - FirebaseCoreInternal (~> 10.0) - GoogleUtilities/Environment (~> 7.12) - GoogleUtilities/Logger (~> 7.12) @@ -61,7 +61,7 @@ PODS: - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseMessaging (10.28.0): + - FirebaseMessaging (10.29.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - GoogleDataTransport (~> 9.3) @@ -266,13 +266,13 @@ SPEC CHECKSUMS: DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 file_picker: 09aa5ec1ab24135ccd7a1621c46c84134bfd6655 - Firebase: 5121c624121af81cbc81df3bda414b3c28c4f3c3 - firebase_core: a9d0180d5285527884d07a41eb4a9ec9ed12cdb6 - firebase_messaging: ccc82a143a74de75f440a4e413dbbb37ec3fddbc - FirebaseCore: 857dc1c6dd1255675047404d8466f7dfaac5d779 + Firebase: cec914dab6fd7b1bd8ab56ea07ce4e03dd251c2d + firebase_core: 57aeb91680e5d5e6df6b888064be7c785f146efb + firebase_messaging: c862b3d2b973ecc769194dc8de09bd22c77ae757 + FirebaseCore: 30e9c1cbe3d38f5f5e75f48bfcea87d7c358ec16 FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd - FirebaseMessaging: 087a7c7cadef7b9239f005bc4db823894844f323 + FirebaseMessaging: 7b5d8033e183ab59eb5b852a53201559e976d366 Flutter: e0871f40cf51350855a761d2e70bf5af5b9b5de7 flutter_secure_storage: d33dac7ae2ea08509be337e775f6b59f1ff45f12 flutter_webrtc: 75b868e4f9e817c7a9a42ca4b6169063de4eec9f diff --git a/lib/bootstrapper.dart b/lib/bootstrapper.dart index ea382bb..e1dac38 100644 --- a/lib/bootstrapper.dart +++ b/lib/bootstrapper.dart @@ -1,14 +1,12 @@ import 'package:flutter/material.dart'; import 'package:flutter_animate/flutter_animate.dart'; import 'package:get/get.dart'; -import 'package:shared_preferences/shared_preferences.dart'; import 'package:solian/exts.dart'; import 'package:solian/providers/auth.dart'; import 'package:solian/providers/content/channel.dart'; import 'package:solian/providers/relation.dart'; import 'package:solian/providers/websocket.dart'; import 'package:solian/services.dart'; -import 'package:solian/theme.dart'; import 'package:solian/widgets/sized_container.dart'; class BootstrapperShell extends StatefulWidget { @@ -31,18 +29,6 @@ class _BootstrapperShellState extends State { int _periodCursor = 0; late final List<({String label, Future Function() action})> _periods = [ - ( - label: 'bsLoadingTheme', - action: () async { - final prefs = await SharedPreferences.getInstance(); - if (prefs.containsKey('global_theme_color')) { - final value = prefs.getInt('global_theme_color')!; - final color = Color(value); - currentLightTheme = SolianTheme.build(Brightness.light, seedColor: color); - currentDarkTheme = SolianTheme.build(Brightness.dark, seedColor: color); - } - } - ), ( label: 'bsCheckingServer', action: () async { diff --git a/lib/main.dart b/lib/main.dart index 8f8c525..26612df 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -6,6 +6,7 @@ import 'package:go_router/go_router.dart'; import 'package:media_kit/media_kit.dart'; import 'package:protocol_handler/protocol_handler.dart'; import 'package:sentry_flutter/sentry_flutter.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'package:solian/bootstrapper.dart'; import 'package:solian/firebase_options.dart'; import 'package:solian/platform.dart'; @@ -37,6 +38,7 @@ void main() async { MediaKit.ensureInitialized(); await Future.wait([ + _initializeTheme(), _initializeFirebase(), _initializePlatformComponents(), ]); @@ -49,6 +51,16 @@ void main() async { ); } +Future _initializeTheme() async { + final prefs = await SharedPreferences.getInstance(); + if (prefs.containsKey('global_theme_color')) { + final value = prefs.getInt('global_theme_color')!; + final color = Color(value); + currentLightTheme = SolianTheme.build(Brightness.light, seedColor: color); + currentDarkTheme = SolianTheme.build(Brightness.dark, seedColor: color); + } +} + Future _initializeFirebase() async { await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); } diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index 89ed471..f96b9ff 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -30,15 +30,37 @@ class _SettingScreenState extends State { icon: Icon(Icons.circle, color: color), tooltip: label, onPressed: () { - currentLightTheme = - SolianTheme.build(Brightness.light, seedColor: color); - currentDarkTheme = SolianTheme.build(Brightness.dark, seedColor: color); + currentLightTheme = SolianTheme.build( + Brightness.light, + seedColor: color, + ); + currentDarkTheme = SolianTheme.build( + Brightness.dark, + seedColor: color, + ); + if (!Get.isDarkMode) { + Get.changeTheme( + SolianTheme.build(Brightness.light, seedColor: color), + ); + } else { + // Dark mode cannot be hot reload + // https://github.com/jonataslaw/getx/issues/1411 + } _prefs.setInt('global_theme_color', color.value); + context.clearSnackbar(); context.showSnackbar('themeColorApplied'.tr); }, ); } + static final List<(String, Color)> _presentTheme = [ + ('themeColorRed', const Color.fromRGBO(154, 98, 91, 1)), + ('themeColorBlue', const Color.fromRGBO(103, 96, 193, 1)), + ('themeColorMiku', const Color.fromRGBO(56, 120, 126, 1)), + ('themeColorKagamine', const Color.fromRGBO(244, 183, 63, 1)), + ('themeColorLuka', const Color.fromRGBO(243, 174, 218, 1)), + ]; + @override void initState() { super.initState(); @@ -58,20 +80,9 @@ class _SettingScreenState extends State { height: 56, child: ListView( scrollDirection: Axis.horizontal, - children: [ - _buildThemeColorButton( - 'themeColorRed'.tr, - const Color.fromRGBO(154, 98, 91, 1), - ), - _buildThemeColorButton( - 'themeColorBlue'.tr, - const Color.fromRGBO(103, 96, 193, 1), - ), - _buildThemeColorButton( - 'themeColorMiku'.tr, - const Color.fromRGBO(56, 120, 126, 1), - ), - ], + children: _presentTheme + .map((x) => _buildThemeColorButton(x.$1, x.$2)) + .toList(), ).paddingSymmetric(horizontal: 12, vertical: 8), ), ], diff --git a/lib/theme.dart b/lib/theme.dart index 3819919..b8de593 100644 --- a/lib/theme.dart +++ b/lib/theme.dart @@ -38,6 +38,9 @@ abstract class SolianTheme { brightness: brightness, seedColor: seedColor ?? const Color.fromRGBO(154, 98, 91, 1), ), + fontFamily: 'Quicksand', + fontFamilyFallback: const ['NotoSansSC', 'NotoSansHK'], + typography: Typography.material2021(), ); } } diff --git a/lib/translations/en_us.dart b/lib/translations/en_us.dart index e5766fb..38d3707 100644 --- a/lib/translations/en_us.dart +++ b/lib/translations/en_us.dart @@ -310,5 +310,8 @@ const i18nEnglish = { 'themeColorRed': 'Modern Red', 'themeColorBlue': 'Classic Blue', 'themeColorMiku': 'Miku Blue', - 'themeColorApplied': 'Global theme color has been saved, restart to get applied.', + 'themeColorKagamine': 'Kagamine Yellow', + 'themeColorLuka': 'Luka Pink', + 'themeColorApplied': + 'Global theme color has been applied, dark mode theme need restart to get applied.', }; diff --git a/lib/translations/zh_cn.dart b/lib/translations/zh_cn.dart index baaabc2..99ce64d 100644 --- a/lib/translations/zh_cn.dart +++ b/lib/translations/zh_cn.dart @@ -287,5 +287,7 @@ const i18nSimplifiedChinese = { 'themeColorRed': '现代红', 'themeColorBlue': '经典蓝', 'themeColorMiku': '未来色', - 'themeColorApplied': '全局主题颜色已保存,重启后生效。', + 'themeColorKagamine': '镜音黄', + 'themeColorLuka': '流音粉', + 'themeColorApplied': '全局主题颜色已应用,深色模式中主题需要重启生效', }; diff --git a/lib/widgets/navigation/app_navigation_drawer.dart b/lib/widgets/navigation/app_navigation_drawer.dart index 06368cf..fe9e697 100644 --- a/lib/widgets/navigation/app_navigation_drawer.dart +++ b/lib/widgets/navigation/app_navigation_drawer.dart @@ -29,7 +29,7 @@ class _AppNavigationDrawerState extends State { late final ChannelProvider _channels; - void getStatus() async { + Future _getStatus() async { final StatusProvider provider = Get.find(); final resp = await provider.getCurrentStatus(); @@ -40,7 +40,7 @@ class _AppNavigationDrawerState extends State { }); } - void detectSelectedIndex() { + void _detectSelectedIndex() { if (widget.routeName == null) return; final nameList = AppNavigation.destinations.map((x) => x.page).toList(); @@ -49,22 +49,33 @@ class _AppNavigationDrawerState extends State { _selectedIndex = idx != -1 ? idx : null; } - void closeDrawer() { + void _closeDrawer() { rootScaffoldKey.currentState!.closeDrawer(); } + Widget _buildSettingButton() { + return IconButton( + icon: const Icon(Icons.settings), + onPressed: () { + AppRouter.instance.pushNamed('settings'); + setState(() => _selectedIndex = null); + _closeDrawer(); + } + ); + } + @override void initState() { super.initState(); _channels = Get.find(); - detectSelectedIndex(); - getStatus(); + _detectSelectedIndex(); + _getStatus(); } @override void didChangeDependencies() { super.didChangeDependencies(); - detectSelectedIndex(); + _detectSelectedIndex(); } @override @@ -78,7 +89,7 @@ class _AppNavigationDrawerState extends State { onDestinationSelected: (idx) { setState(() => _selectedIndex = idx); AppRouter.instance.goNamed(AppNavigation.destinations[idx].page); - closeDrawer(); + _closeDrawer(); }, children: [ Obx(() { @@ -88,10 +99,11 @@ class _AppNavigationDrawerState extends State { leading: const Icon(Icons.account_circle), title: Text('guest'.tr), subtitle: Text('unsignedIn'.tr), + trailing: _buildSettingButton(), onTap: () { AppRouter.instance.goNamed('account'); setState(() => _selectedIndex = null); - closeDrawer(); + _closeDrawer(); }, ); } @@ -137,18 +149,11 @@ class _AppNavigationDrawerState extends State { ), ); }), - trailing: IconButton( - icon: const Icon(Icons.settings), - onPressed: () { - AppRouter.instance.pushNamed('settings'); - setState(() => _selectedIndex = null); - closeDrawer(); - }, - ), + trailing: _buildSettingButton(), onTap: () { AppRouter.instance.goNamed('account'); setState(() => _selectedIndex = null); - closeDrawer(); + _closeDrawer(); }, onLongPress: () { showModalBottomSheet( @@ -158,7 +163,7 @@ class _AppNavigationDrawerState extends State { currentStatus: _accountStatus!.status, ), ).then((val) { - if (val == true) getStatus(); + if (val == true) _getStatus(); }); }, ); @@ -204,7 +209,7 @@ class _AppNavigationDrawerState extends State { useReplace: true, onSelected: (_) { setState(() => _selectedIndex = null); - closeDrawer(); + _closeDrawer(); }, ), ), diff --git a/macos/Podfile.lock b/macos/Podfile.lock index f67d84c..6e7e7d8 100644 --- a/macos/Podfile.lock +++ b/macos/Podfile.lock @@ -8,20 +8,20 @@ PODS: - FlutterMacOS - file_selector_macos (0.0.1): - FlutterMacOS - - Firebase/CoreOnly (10.28.1): - - FirebaseCore (= 10.28.1) - - Firebase/Messaging (10.28.1): + - Firebase/CoreOnly (10.29.0): + - FirebaseCore (= 10.29.0) + - Firebase/Messaging (10.29.0): - Firebase/CoreOnly - - FirebaseMessaging (~> 10.28.0) - - firebase_core (3.2.0): - - Firebase/CoreOnly (~> 10.28.0) + - FirebaseMessaging (~> 10.29.0) + - firebase_core (3.3.0): + - Firebase/CoreOnly (~> 10.29.0) - FlutterMacOS - - firebase_messaging (15.0.3): - - Firebase/CoreOnly (~> 10.28.0) - - Firebase/Messaging (~> 10.28.0) + - firebase_messaging (15.0.4): + - Firebase/CoreOnly (~> 10.29.0) + - Firebase/Messaging (~> 10.29.0) - firebase_core - FlutterMacOS - - FirebaseCore (10.28.1): + - FirebaseCore (10.29.0): - FirebaseCoreInternal (~> 10.0) - GoogleUtilities/Environment (~> 7.12) - GoogleUtilities/Logger (~> 7.12) @@ -32,7 +32,7 @@ PODS: - GoogleUtilities/Environment (~> 7.8) - GoogleUtilities/UserDefaults (~> 7.8) - PromisesObjC (~> 2.1) - - FirebaseMessaging (10.28.0): + - FirebaseMessaging (10.29.0): - FirebaseCore (~> 10.0) - FirebaseInstallations (~> 10.0) - GoogleDataTransport (~> 9.3) @@ -111,6 +111,9 @@ PODS: - Sentry/HybridSDK (= 8.32.0) - share_plus (0.0.1): - FlutterMacOS + - shared_preferences_foundation (0.0.1): + - Flutter + - FlutterMacOS - sqflite (0.0.3): - Flutter - FlutterMacOS @@ -142,6 +145,7 @@ DEPENDENCIES: - screen_brightness_macos (from `Flutter/ephemeral/.symlinks/plugins/screen_brightness_macos/macos`) - sentry_flutter (from `Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos`) - share_plus (from `Flutter/ephemeral/.symlinks/plugins/share_plus/macos`) + - shared_preferences_foundation (from `Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin`) - sqflite (from `Flutter/ephemeral/.symlinks/plugins/sqflite/darwin`) - url_launcher_macos (from `Flutter/ephemeral/.symlinks/plugins/url_launcher_macos/macos`) - wakelock_plus (from `Flutter/ephemeral/.symlinks/plugins/wakelock_plus/macos`) @@ -203,6 +207,8 @@ EXTERNAL SOURCES: :path: Flutter/ephemeral/.symlinks/plugins/sentry_flutter/macos share_plus: :path: Flutter/ephemeral/.symlinks/plugins/share_plus/macos + shared_preferences_foundation: + :path: Flutter/ephemeral/.symlinks/plugins/shared_preferences_foundation/darwin sqflite: :path: Flutter/ephemeral/.symlinks/plugins/sqflite/darwin url_launcher_macos: @@ -215,13 +221,13 @@ SPEC CHECKSUMS: desktop_drop: 69eeff437544aa619c8db7f4481b3a65f7696898 device_info_plus: ce1b7762849d3ec103d0e0517299f2db7ad60720 file_selector_macos: 54fdab7caa3ac3fc43c9fac4d7d8d231277f8cf2 - Firebase: 49e62242b3ae422a002ab647a7e62a332a8c3ec1 - firebase_core: d8af40a9c8a9ce3112a94692aac83675627c0486 - firebase_messaging: 7871cfa8af1e863324e46ae9e90343c452626c02 - FirebaseCore: dfc33f0dffba05f76181da9cc0151171ebb3bd10 + Firebase: cec914dab6fd7b1bd8ab56ea07ce4e03dd251c2d + firebase_core: 73185b844efc8a534e5744d68152e75e740922d2 + firebase_messaging: 167fdd90971720e0b62ccd6fa8d430b8af4ca6e9 + FirebaseCore: 30e9c1cbe3d38f5f5e75f48bfcea87d7c358ec16 FirebaseCoreInternal: df84dd300b561c27d5571684f389bf60b0a5c934 FirebaseInstallations: 913cf60d0400ebd5d6b63a28b290372ab44590dd - FirebaseMessaging: 087a7c7cadef7b9239f005bc4db823894844f323 + FirebaseMessaging: 7b5d8033e183ab59eb5b852a53201559e976d366 flutter_secure_storage_macos: 59459653abe1adb92abbc8ea747d79f8d19866c9 flutter_webrtc: 2b4e4a2de70a1485836e40fd71a7a94c77d49bd9 FlutterMacOS: 8f6f14fa908a6fb3fba0cd85dbd81ec4b251fb24 @@ -242,6 +248,7 @@ SPEC CHECKSUMS: Sentry: 96ae1dcdf01a644bc3a3b1dc279cecaf48a833fb sentry_flutter: f1d86adcb93a959bc47a40d8d55059bdf7569bc5 share_plus: 36537c04ce0c3e3f5bd297ce4318b6d5ee5fd6cf + shared_preferences_foundation: fcdcbc04712aee1108ac7fda236f363274528f78 sqflite: 673a0e54cc04b7d6dba8d24fb8095b31c3a99eec url_launcher_macos: 5f437abeda8c85500ceb03f5c1938a8c5a705399 wakelock_plus: 4783562c9a43d209c458cb9b30692134af456269 diff --git a/pubspec.lock b/pubspec.lock index 5ada671..b52711b 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -13,10 +13,10 @@ packages: dependency: transitive description: name: _flutterfire_internals - sha256: b46f62516902afb04befa4b30eb6a12ac1f58ca8cb25fb9d632407259555dd3d + sha256: b1595874fbc8f7a50da90f5d8f327bb0bfd6a95dc906c390efe991540c3b54aa url: "https://pub.dev" source: hosted - version: "1.3.39" + version: "1.3.40" analyzer: dependency: transitive description: @@ -413,50 +413,50 @@ packages: dependency: "direct main" description: name: firebase_core - sha256: "5159984ce9b70727473eb388394650677c02c925aaa6c9439905e1f30966a4d5" + sha256: "3187f4f8e49968573fd7403011dca67ba95aae419bc0d8131500fae160d94f92" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.3.0" firebase_core_platform_interface: dependency: transitive description: name: firebase_core_platform_interface - sha256: "1003a5a03a61fc9a22ef49f37cbcb9e46c86313a7b2e7029b9390cf8c6fc32cb" + sha256: "3c3a1e92d6f4916c32deea79c4a7587aa0e9dbbe5889c7a16afcf005a485ee02" url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "5.2.0" firebase_core_web: dependency: transitive description: name: firebase_core_web - sha256: "23509cb3cddfb3c910c143279ac3f07f06d3120f7d835e4a5d4b42558e978712" + sha256: e8d1e22de72cb21cdcfc5eed7acddab3e99cd83f3b317f54f7a96c32f25fd11e url: "https://pub.dev" source: hosted - version: "2.17.3" + version: "2.17.4" firebase_messaging: dependency: "direct main" description: name: firebase_messaging - sha256: "156c4292aa63a6a7d508c68ded984cb38730d2823c3265e573cb1e94983e2025" + sha256: "1b0a4f9ecbaf9007771bac152afad738ddfacc4b8431a7591c00829480d99553" url: "https://pub.dev" source: hosted - version: "15.0.3" + version: "15.0.4" firebase_messaging_platform_interface: dependency: transitive description: name: firebase_messaging_platform_interface - sha256: "10408c5ca242b7fc632dd5eab4caf8fdf18ebe88db6052980fa71a18d88bd200" + sha256: c5a6443e66ae064fe186901d740ee7ce648ca2a6fd0484b8c5e963849ac0fc28 url: "https://pub.dev" source: hosted - version: "4.5.41" + version: "4.5.42" firebase_messaging_web: dependency: transitive description: name: firebase_messaging_web - sha256: c7a756e3750679407948de665735e69a368cb902940466e5d68a00ea7aba1aaa + sha256: "232ef63b986467ae5b5577a09c2502b26e2e2aebab5b85e6c966a5ca9b038b89" url: "https://pub.dev" source: hosted - version: "3.8.11" + version: "3.8.12" fixnum: dependency: transitive description: @@ -1076,10 +1076,10 @@ packages: dependency: transitive description: name: path_provider - sha256: c9e7d3a4cd1410877472158bee69963a4579f78b68c65a2b7d40d1a7a88bb161 + sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.1.4" path_provider_android: dependency: transitive description: @@ -1396,58 +1396,58 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 + sha256: c3f888ba2d659f3e75f4686112cc1e71f46177f74452d40d8307edc332296ead url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.0" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "3d4571b3c5eb58ce52a419d86e655493d0bc3020672da79f72fa0c16ca3a8ec1" + sha256: "041be4d9d2dc6079cf342bc8b761b03787e3b71192d658220a56cac9c04a0294" url: "https://pub.dev" source: hosted - version: "2.2.4" + version: "2.3.0" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "0a8a893bf4fd1152f93fec03a415d11c27c74454d96e2318a7ac38dd18683ab7" + sha256: "671e7a931f55a08aa45be2a13fe7247f2a41237897df434b30d2012388191833" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.5.0" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - sha256: "9f2cbcf46d4270ea8be39fa156d86379077c8a5228d9dfdb1164ae0bb93f1faa" + sha256: "2ba0510d3017f91655b7543e9ee46d48619de2a2af38e5c790423f7007c7ccc1" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.0" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - sha256: "034650b71e73629ca08a0bd789fd1d83cc63c2d1e405946f7cef7bc37432f93a" + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" url: "https://pub.dev" source: hosted - version: "2.4.0" + version: "2.4.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - sha256: "9aee1089b36bd2aafe06582b7d7817fd317ef05fc30e6ba14bff247d0933042a" + sha256: "3a293170d4d9403c3254ee05b84e62e8a9b3c5808ebd17de6a33fe9ea6457936" url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.0" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - sha256: "841ad54f3c8381c480d0c9b508b89a34036f512482c407e6df7a9c4aa2ef8f59" + sha256: "398084b47b7f92110683cac45c6dc4aae853db47e470e5ddcd52cab7f7196ab2" url: "https://pub.dev" source: hosted - version: "2.3.2" + version: "2.4.0" shelf: dependency: transitive description: @@ -1681,10 +1681,10 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "678979703e10d7862c551c736fe6b9f185261bddf141b46672063b99790bc700" + sha256: "94d8ad05f44c6d4e2ffe5567ab4d741b82d62e3c8e288cc1fcea45965edf47c9" url: "https://pub.dev" source: hosted - version: "6.3.7" + version: "6.3.8" url_launcher_ios: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index a22fcb6..bb31bb2 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: solian description: "The Solar Network App" publish_to: "none" -version: 1.2.0+1 +version: 1.2.0+3 environment: sdk: ">=3.3.4 <4.0.0" @@ -80,6 +80,17 @@ flutter: assets: - assets/logo.png + fonts: + - family: NotoSansSC + fonts: + - asset: assets/fonts/NotoSansSC-VariableFont_wght.ttf + - family: NotoSansHK + fonts: + - asset: assets/fonts/NotoSansHK-VariableFont_wght.ttf + - family: Quicksand + fonts: + - asset: assets/fonts/Quicksand-VariableFont_wght.ttf + flutter_launcher_icons: android: generate: "launcher_icon"