diff --git a/lib/main.dart b/lib/main.dart index 9fd6d13..0136d78 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,10 +1,7 @@ -import 'dart:io'; - import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:i18n_extension/i18n_widget.dart'; -import 'package:window_manager/window_manager.dart'; +import 'package:i18n_extension/i18n_extension.dart'; import 'package:zoysii/ui/basic.dart'; import 'package:zoysii/ui/screens/home/home_page.dart'; import 'package:zoysii/ui/screens/rules/rules_page.dart'; @@ -18,11 +15,6 @@ void main() async { await SystemChrome.setPreferredOrientations( [DeviceOrientation.portraitUp, DeviceOrientation.portraitDown]); await Localization.loadTranslations(); - if (Platform.isWindows || Platform.isLinux || Platform.isMacOS) { - await windowManager.ensureInitialized(); - windowManager.setMinimumSize(const Size(400, 600)); - windowManager.setMaximumSize(Size.infinite); - } runApp(Zoysii()); } diff --git a/lib/ui/screens/info/info_page.dart b/lib/ui/screens/info/info_page.dart index f6ba63c..4aed286 100644 --- a/lib/ui/screens/info/info_page.dart +++ b/lib/ui/screens/info/info_page.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:url_launcher/url_launcher.dart'; import 'package:zoysii/ui/screens/info/widgets/license_dialog.dart'; import 'package:zoysii/utils/i18n.dart'; import 'package:zoysii/utils/local_data_controller.dart'; @@ -15,7 +14,6 @@ class _InfoPageState extends State { { 'title': 'DeepDaikon Project', 'subtitle': 'App developed by %s'.i18n.fill(['DeepDaikon']), - 'url': 'https://deepdaikon.xyz', 'icon': const Icon(Icons.change_history), }, { @@ -23,42 +21,6 @@ class _InfoPageState extends State { 'subtitle': 'App version'.i18n, 'icon': const Icon(Icons.looks_two), }, - { - 'title': 'Donate'.i18n, - 'subtitle': 'Support the development'.i18n, - 'url': 'https://deepdaikon.xyz/donate', - 'icon': const Icon(Icons.euro), - }, - { - 'title': 'Translate'.i18n, - 'subtitle': 'Translate in your language'.i18n, - 'url': 'https://translate.deepdaikon.xyz/engage/zoysii/', - 'icon': const Icon(Icons.translate_rounded), - }, - { - 'title': 'Send email'.i18n, - 'subtitle': 'Ask for something or request a new feature'.i18n, - 'url': 'mailto:deepdaikon' '@' 'tuta.io?subject=Zoysii Game', - 'icon': const Icon(Icons.email), - }, - { - 'title': 'Report bugs'.i18n, - 'subtitle': 'Report bugs or request new feature'.i18n, - 'url': 'https://gitlab.com/deepdaikon/Zoysii/issues', - 'icon': const Icon(Icons.bug_report_rounded), - }, - { - 'title': 'View source code'.i18n, - 'subtitle': 'Look at the source code'.i18n, - 'url': 'https://gitlab.com/deepdaikon/Zoysii', - 'icon': const Icon(Icons.developer_mode), - }, - { - 'title': 'View License'.i18n, - 'subtitle': 'Read software license'.i18n, - 'url': 'https://gitlab.com/deepdaikon/Zoysii/blob/master/LICENSE', - 'icon': const Icon(Icons.chrome_reader_mode), - }, { 'title': 'Third Party Licenses'.i18n, 'subtitle': 'Read third party notices'.i18n, @@ -82,10 +44,7 @@ class _InfoPageState extends State { ), subtitle: Text(infoMenuList[index]['subtitle']), onTap: () { - if (infoMenuList[index].containsKey('url')) { - launchUrl(Uri.parse(infoMenuList[index]['url']), - mode: LaunchMode.externalApplication); - } else if (infoMenuList[index]['title'] == + if (infoMenuList[index]['title'] == 'Third Party Licenses'.i18n) { licenseDialog(context); } else if (++_debugClickCount == 17) { diff --git a/lib/ui/screens/info/resources/third_party_licenses.dart b/lib/ui/screens/info/resources/third_party_licenses.dart index 7dad610..8b952dd 100644 --- a/lib/ui/screens/info/resources/third_party_licenses.dart +++ b/lib/ui/screens/info/resources/third_party_licenses.dart @@ -59,64 +59,6 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -''' - }, - { - 'lib': 'url_launcher', - 'text': ''' -Copyright 2017 The Chromium Authors. All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - - * Redistributions of source code must retain the above copyright -notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above -copyright notice, this list of conditions and the following disclaimer -in the documentation and/or other materials provided with the -distribution. - * Neither the name of Google Inc. nor the names of its -contributors may be used to endorse or promote products derived from -this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -''' - }, - { - 'lib': 'window_manager', - 'text': ''' -MIT License - -Copyright (c) 2022 LiJianying - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. ''' }, { diff --git a/lib/ui/screens/levels/widgets/card_button.dart b/a/lib/ui/screens/levels/widgets/card_button.dart deleted file mode 100644 index 1d2d762..0000000 --- a/lib/ui/screens/levels/widgets/card_button.dart +++ /dev/null @@ -1,29 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:url_launcher/url_launcher.dart'; -import 'package:zoysii/ui/basic.dart'; - -class CardButton extends StatelessWidget { - CardButton(this.text, this.url); - final String text; - final String url; - - @override - Widget build(BuildContext context) { - return Container( - constraints: const BoxConstraints(maxWidth: 300), - width: MediaQuery.of(context).size.width / 1.5, - height: 50, - margin: const EdgeInsets.only(top: 20), - decoration: BoxDecoration( - border: Border.all(color: Theme.of(context).colorScheme.secondary), - borderRadius: borderRadius), - child: TextButton( - style: ButtonStyle( - shape: MaterialStateProperty.all( - const RoundedRectangleBorder(borderRadius: borderRadius))), - child: Text(text, style: const TextStyle(fontSize: 21)), - onPressed: () => - launchUrl(Uri.parse(url), mode: LaunchMode.externalApplication)), - ); - } -} diff --git a/lib/ui/screens/levels/widgets/info_card.dart b/lib/ui/screens/levels/widgets/info_card.dart index 1aa920c..dcf13c0 100644 --- a/lib/ui/screens/levels/widgets/info_card.dart +++ b/lib/ui/screens/levels/widgets/info_card.dart @@ -1,5 +1,4 @@ import 'package:flutter/material.dart'; -import 'package:zoysii/ui/screens/levels/widgets/card_button.dart'; import 'package:zoysii/utils/i18n.dart'; class InfoCard extends StatelessWidget { @@ -19,15 +18,8 @@ class InfoCard extends StatelessWidget { } else { title = 'Congratulations!'.i18n; subtitle = '\n' + - 'You have completed all the available Layers!\n\nThe next one will be released soon.\n\nIn the meantime you can support the development of Zoysii.' + 'You have completed all the available Layers!\n\nThanks for playing.' .i18n; - buttons.addAll([ - CardButton('Donate'.i18n, 'https://deepdaikon.xyz/donate'), - CardButton('Translate'.i18n, - 'https://translate.deepdaikon.xyz/engage/zoysii/'), - CardButton( - 'Report bugs'.i18n, 'https://gitlab.com/deepdaikon/Zoysii/issues'), - ]); } return Container( margin: const EdgeInsets.all(20), diff --git a/lib/ui/screens/multiplayer/multiplayer_page.dart b/lib/ui/screens/multiplayer/multiplayer_page.dart index 1170348..43a1652 100644 --- a/lib/ui/screens/multiplayer/multiplayer_page.dart +++ b/lib/ui/screens/multiplayer/multiplayer_page.dart @@ -59,7 +59,7 @@ class _MultiPlayerPageState extends State { title: Text('Speed'.i18n, style: const TextStyle(fontSize: 18)), subtitle: Text( 'Game speed'.i18n, - style: TextStyle(color: Theme.of(context).textTheme.caption!.color), + style: TextStyle(color: Theme.of(context).textTheme.bodySmall!.color), ), trailing: Text( oneHuman ? speedStrings[settings.speedMulti] : speedStrings[0], diff --git a/lib/ui/screens/ranking/widgets/result_tile.dart b/lib/ui/screens/ranking/widgets/result_tile.dart index 85db149..72c134a 100644 --- a/lib/ui/screens/ranking/widgets/result_tile.dart +++ b/lib/ui/screens/ranking/widgets/result_tile.dart @@ -109,7 +109,7 @@ class ResultTile extends StatelessWidget { subtitle: Text( subtitle, style: TextStyle( - fontSize: 16, color: Theme.of(context).textTheme.caption!.color), + fontSize: 16, color: Theme.of(context).textTheme.bodySmall!.color), ), trailing: Text(trailing, style: const TextStyle(fontSize: 20)), children: [ diff --git a/lib/ui/screens/rules/rules_page.dart b/lib/ui/screens/rules/rules_page.dart index b220bf6..9dbeec8 100644 --- a/lib/ui/screens/rules/rules_page.dart +++ b/lib/ui/screens/rules/rules_page.dart @@ -96,7 +96,7 @@ class _RulesPageState extends State TextButton( style: ButtonStyle( backgroundColor: MaterialStateProperty.all( - Theme.of(context).toggleableActiveColor), + const Color(0xFF006491)), shape: MaterialStateProperty.all( RoundedRectangleBorder( borderRadius: BorderRadius.circular(30)))), diff --git a/lib/ui/screens/settings/widgets/option_list.dart b/lib/ui/screens/settings/widgets/option_list.dart index 834160f..b9a67a7 100644 --- a/lib/ui/screens/settings/widgets/option_list.dart +++ b/lib/ui/screens/settings/widgets/option_list.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:i18n_extension/i18n_widget.dart'; +import 'package:i18n_extension/i18n_extension.dart'; import 'package:zoysii/ui/screens/settings/settings_page.dart'; import 'package:zoysii/ui/screens/settings/widgets/drop_down_tile.dart'; import 'package:zoysii/ui/screens/settings/widgets/numeral_system_dialog.dart'; @@ -160,7 +160,7 @@ class OptionList extends StatelessWidget { 'You should not change these unless you know what you are doing' .i18n, style: - TextStyle(color: Theme.of(context).textTheme.caption!.color), + TextStyle(color: Theme.of(context).textTheme.bodySmall!.color), ), initiallyExpanded: false, backgroundColor: Theme.of(context).brightness == Brightness.dark diff --git a/lib/ui/screens/settings/widgets/range_tile.dart b/lib/ui/screens/settings/widgets/range_tile.dart index c8800ef..a4bf5c2 100644 --- a/lib/ui/screens/settings/widgets/range_tile.dart +++ b/lib/ui/screens/settings/widgets/range_tile.dart @@ -24,7 +24,7 @@ class RangeTile extends StatelessWidget { title: Text(title, style: const TextStyle(fontSize: 20)), subtitle: Text( subtitle, - style: TextStyle(color: Theme.of(context).textTheme.caption!.color), + style: TextStyle(color: Theme.of(context).textTheme.bodySmall!.color), ), trailing: Text( '${settings.minBoardInt} - ${settings.maxBoardInt}', diff --git a/lib/ui/screens/settings/widgets/restore_dialog.dart b/lib/ui/screens/settings/widgets/restore_dialog.dart index 5fc1150..138c9f5 100644 --- a/lib/ui/screens/settings/widgets/restore_dialog.dart +++ b/lib/ui/screens/settings/widgets/restore_dialog.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:i18n_extension/i18n_widget.dart'; +import 'package:i18n_extension/i18n_extension.dart'; import 'package:zoysii/ui/screens/settings/settings_page.dart'; import 'package:zoysii/utils/i18n.dart'; import 'package:zoysii/utils/local_data_controller.dart'; diff --git a/lib/ui/themes.dart b/lib/ui/themes.dart index c6dca7c..361d9b9 100644 --- a/lib/ui/themes.dart +++ b/lib/ui/themes.dart @@ -1,12 +1,38 @@ import 'package:flutter/material.dart'; +const Color _toggleableColor = Color(0xFF006491); + +/// The pre-Flutter-3.16 `toggleableActiveColor`, set on each toggle widget. +final _checkboxTheme = CheckboxThemeData( + fillColor: WidgetStateProperty.resolveWith( + (states) => states.contains(WidgetState.selected) ? _toggleableColor : null), +); +final _radioTheme = RadioThemeData( + fillColor: WidgetStateProperty.resolveWith( + (states) => states.contains(WidgetState.selected) ? _toggleableColor : null), +); +final _switchTheme = SwitchThemeData( + thumbColor: WidgetStateProperty.resolveWith( + (states) => states.contains(WidgetState.selected) ? _toggleableColor : null), + trackColor: WidgetStateProperty.resolveWith((states) => + states.contains(WidgetState.selected) + ? _toggleableColor.withOpacity(0.5) + : null), +); + final ThemeData lightTheme = ThemeData( colorSchemeSeed: const Color(0xFF244A63), dividerColor: Colors.grey.shade300, appBarTheme: const AppBarTheme( titleTextStyle: TextStyle( - letterSpacing: 6, fontSize: 22, fontWeight: FontWeight.w600)), - toggleableActiveColor: const Color(0xFF006491), + letterSpacing: 6, + fontSize: 22, + fontWeight: FontWeight.w600, + color: Colors.white)), + useMaterial3: false, + checkboxTheme: _checkboxTheme, + radioTheme: _radioTheme, + switchTheme: _switchTheme, ); final ThemeData darkTheme = ThemeData( @@ -15,6 +41,12 @@ final ThemeData darkTheme = ThemeData( dividerColor: Colors.grey.shade300, appBarTheme: const AppBarTheme( titleTextStyle: TextStyle( - letterSpacing: 6, fontSize: 22, fontWeight: FontWeight.w600)), - toggleableActiveColor: const Color(0xFF006491), + letterSpacing: 6, + fontSize: 22, + fontWeight: FontWeight.w600, + color: Colors.white)), + useMaterial3: false, + checkboxTheme: _checkboxTheme, + radioTheme: _radioTheme, + switchTheme: _switchTheme, ); diff --git a/lib/utils/i18n.dart b/lib/utils/i18n.dart index a075fc5..fb1e101 100644 --- a/lib/utils/i18n.dart +++ b/lib/utils/i18n.dart @@ -1,7 +1,7 @@ import 'dart:ui'; import 'package:i18n_extension/i18n_extension.dart'; -import 'package:i18n_extension/io/import.dart'; +import 'package:i18n_extension_importer/i18n_extension_importer.dart'; const List supportedLocales = [ Locale('be'), @@ -52,7 +52,7 @@ const languageNames = { }; extension Localization on String { - static TranslationsByLocale _translations = Translations.byLocale('en'); + static Translations _translations = Translations.byLocale('en'); static Future loadTranslations() async { for (final locale in supportedLocales) { var language = locale.languageCode; diff --git a/lib/utils/settings.dart b/lib/utils/settings.dart index cdc0aa5..aee57c4 100644 --- a/lib/utils/settings.dart +++ b/lib/utils/settings.dart @@ -1,4 +1,4 @@ -import 'dart:io'; +import 'dart:ui' show PlatformDispatcher; import 'package:flutter/material.dart'; import 'package:zoysii/utils/i18n.dart'; @@ -89,7 +89,7 @@ class Settings { String? _languageCode; bool get useSystemLanguage => _languageCode == null; String get _currentLanguageCode => - useSystemLanguage ? Platform.localeName : _languageCode!; + useSystemLanguage ? PlatformDispatcher.instance.locale.toString() : _languageCode!; Locale get locale => supportedLocales .contains(Locale(_currentLanguageCode.split('_').first)) || !useSystemLanguage diff --git a/pubspec.lock b/pubspec.lock index 67c694e..d387b1a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,100 +5,122 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.dartlang.org" + sha256: "1c5591cc6f252d5f440d96ab87c03e43504be552a3fa49d7cb7563f04c51fb0a" + url: "https://pub.dev" source: hosted - version: "50.0.0" + version: "111.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.dartlang.org" + sha256: "6c39bd5486a310e56217bed7cb1691377959f31be4227e41750107db7e6dd55c" + url: "https://pub.dev" source: hosted - version: "5.2.0" + version: "14.7.0" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 + url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.7.0" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 + url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.13.1" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.4.1" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: e51d50bca3217c9a9fa2b41a30e4a38971133f5f9ec7a3d57bae095007f1d28e + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.1.3" + code_assets: + dependency: transitive + description: + name: code_assets + sha256: "1ef22a0be3af9370bd9481ac76db114db92bfe75d5ca2b2d7bc911764478a4d9" + url: "https://pub.dev" + source: hosted + version: "2.2.0" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "1.19.1" convert: dependency: transitive description: name: convert - url: "https://pub.dartlang.org" + sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 + url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: e3626ae6270383c9e3a549f34c9e4cd26c09ae6a9adaab2bf4737a00340efdc4 + url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.8" equatable: dependency: transitive description: name: equatable - url: "https://pub.dartlang.org" + sha256: ea36e500cbf0ec18361deabca755434f73e42fe53c5130021c7e2d6b5ebe1702 + url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "3.0.0" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" + url: "https://pub.dev" source: hosted - version: "1.3.1" + version: "1.3.3" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45" + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.2.0" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 + url: "https://pub.dev" source: hosted - version: "6.1.4" + version: "7.0.1" flutter: dependency: "direct main" description: flutter @@ -108,9 +130,10 @@ packages: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: a25a15ebbdfc33ab1cd26c63a6ee519df92338a9c10f122adda92938253bef04 + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.3" flutter_localizations: dependency: "direct main" description: flutter @@ -130,350 +153,407 @@ packages: dependency: transitive description: name: gettext_parser - url: "https://pub.dartlang.org" + sha256: "9565c9dd1033ec125e1fbc7ccba6c0d2d753dd356122ba1a17e6aa7dc868f34a" + url: "https://pub.dev" source: hosted version: "0.2.0" glob: dependency: transitive description: name: glob - url: "https://pub.dartlang.org" + sha256: "218aeb56050c714f62a3182775320dfa04602b55074873e24e31bbd39bda96fb" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.2.0" + hooks: + dependency: transitive + description: + name: hooks + sha256: eaac480a35ec0814146c2c48d96aaa829e0e44a7662c88ae84c9edf4bc35651f + url: "https://pub.dev" + source: hosted + version: "2.2.0" + http: + dependency: transitive + description: + name: http + sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" + url: "https://pub.dev" + source: hosted + version: "1.6.0" + http_parser: + dependency: transitive + description: + name: http_parser + sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" + url: "https://pub.dev" + source: hosted + version: "4.1.2" i18n_extension: dependency: "direct main" description: name: i18n_extension - url: "https://pub.dartlang.org" + sha256: "45205eabc1457b31fa5b4d3da529e217cefff4d8b389a2e80f33435987788af7" + url: "https://pub.dev" + source: hosted + version: "16.0.1" + i18n_extension_core: + dependency: transitive + description: + name: i18n_extension_core + sha256: "647572cd991235b6502b6cac148d70d7920da54e684e1e0d726cd1be00ce29e3" + url: "https://pub.dev" source: hosted version: "6.0.0" + i18n_extension_importer: + dependency: "direct main" + description: + name: i18n_extension_importer + sha256: "4fd651ff47ac52f604b34b5cd80ee225d38fe589d51b042f00178081b476252f" + url: "https://pub.dev" + source: hosted + version: "0.0.6" intl: dependency: transitive description: name: intl - url: "https://pub.dartlang.org" + sha256: "1ca20c894b1717686a2319b8548763d812bc0aabdac580420a44c5178c57a867" + url: "https://pub.dev" source: hosted - version: "0.17.0" - js: + version: "0.20.3" + jni: dependency: transitive description: - name: js - url: "https://pub.dartlang.org" + name: jni + sha256: "2e91e6087291affd10b31b6c872f3e3ac7dc5d93b51b5ba485d930c8f08bde6c" + url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "1.1.2" + jni_util: + dependency: transitive + description: + name: jni_util + sha256: "1ba86da04a5f2bf18fde2edb235587e70c5b0fc5bd4ba955f46b00942c3fc35f" + url: "https://pub.dev" + source: hosted + version: "1.0.0" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" + url: "https://pub.dev" + source: hosted + version: "11.0.2" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" + url: "https://pub.dev" + source: hosted + version: "3.0.10" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" + url: "https://pub.dev" + source: hosted + version: "3.0.2" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" + url: "https://pub.dev" + source: hosted + version: "2.1.1" + logging: + dependency: transitive + description: + name: logging + sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "1.3.0" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "31bd099b47c10cd1aeb55146a2d46ce0277630ecef3f7dae54ad7873f36696cd" + url: "https://pub.dev" source: hosted - version: "0.12.12" + version: "0.12.20" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" + url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.13.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "307249ce4ff29d58a18e97f6345f539382eb9c9c29ecda628900f31de0443dd9" + url: "https://pub.dev" source: hosted - version: "1.8.0" + version: "1.19.0" + objective_c: + dependency: transitive + description: + name: objective_c + sha256: "322d5f1f0680534acaf557c5d68e97b40c3800ee5e15b63dcacc3c31504674c2" + url: "https://pub.dev" + source: hosted + version: "9.6.3" package_config: dependency: transitive description: name: package_config - url: "https://pub.dartlang.org" + sha256: ffcf4cf3d6c0b74ac43708d9f56625506e8a68aa935abe9d267a7330f320eb5d + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "3.0.0" path: dependency: transitive description: name: path - url: "https://pub.dartlang.org" + sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" + url: "https://pub.dev" source: hosted - version: "1.8.2" + version: "1.9.1" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.dartlang.org" + sha256: "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16" + url: "https://pub.dev" source: hosted - version: "2.1.7" + version: "2.2.2" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda" + url: "https://pub.dev" source: hosted - version: "2.0.5" + version: "2.1.3" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "2.3.0" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: a36d119c13416516a7b5913fbe8af8531e11633d784c550b2125f76c758524ec + url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.2.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" source: hosted - version: "2.1.3" - process: - dependency: transitive - description: - name: process - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.4" + version: "2.1.8" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.dartlang.org" + sha256: "261236774e8b1d69cfc6b9eabbc96c40f25e7a2d6b171f3385d4f65d5734fb24" + url: "https://pub.dev" source: hosted - version: "2.1.3" - screen_retriever: + version: "2.2.1" + record_use: dependency: transitive description: - name: screen_retriever - url: "https://pub.dartlang.org" + name: record_use + sha256: "1cb8564af8d43b464294411db9217f5ec04891c6f22ee2c32d73ae05e88a6bd2" + url: "https://pub.dev" source: hosted - version: "0.1.4" + version: "1.1.1" shared_preferences: dependency: "direct main" description: name: shared_preferences - url: "https://pub.dartlang.org" + sha256: "1e85e0dccf5b4a016077fea7dfbb4a7cb39c759ac1596fcf60c06deadb7da91f" + url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.5.6" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - url: "https://pub.dartlang.org" + sha256: "33b38b07d9ac7d16aff0426c61418752fd3e7a8c7dc8be786c875d6ce673b002" + url: "https://pub.dev" source: hosted - version: "2.0.14" - shared_preferences_ios: + version: "2.5.4" + shared_preferences_foundation: dependency: transitive description: - name: shared_preferences_ios - url: "https://pub.dartlang.org" + name: shared_preferences_foundation + sha256: "4e396ac6f8751ab7d2d6e27f22f32c8350b07006028d534f5221503382f1fa69" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.6.1" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.dartlang.org" + sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" + url: "https://pub.dev" source: hosted - version: "2.1.2" - shared_preferences_macos: - dependency: transitive - description: - name: shared_preferences_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" + version: "2.4.1" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.dartlang.org" + sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.4.2" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.dartlang.org" + sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 + url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.4.3" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.dartlang.org" + sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.4.1" sky_engine: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" + url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.10.2" sprintf: dependency: transitive description: name: sprintf - url: "https://pub.dartlang.org" + sha256: "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23" + url: "https://pub.dev" source: hosted version: "7.0.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: "277654b3034d17ac6f9f1cb5595db011b1d5d41e8806866db28e0abaa101c490" + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.12.2" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.4" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.4.1" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" + url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "1.2.2" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "2a122cbe059f8b610d3a5415f42e255b6c17b1f21eee1d960f31080237fb4f11" + url: "https://pub.dev" source: hosted - version: "0.4.12" + version: "0.7.12" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - url_launcher: - dependency: "direct main" - description: - name: url_launcher - url: "https://pub.dartlang.org" - source: hosted - version: "6.1.7" - url_launcher_android: - dependency: transitive - description: - name: url_launcher_android - url: "https://pub.dartlang.org" - source: hosted - version: "6.0.22" - url_launcher_ios: - dependency: transitive - description: - name: url_launcher_ios - url: "https://pub.dartlang.org" + sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 + url: "https://pub.dev" source: hosted - version: "6.0.17" - url_launcher_linux: - dependency: transitive - description: - name: url_launcher_linux - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" - url_launcher_macos: - dependency: transitive - description: - name: url_launcher_macos - url: "https://pub.dartlang.org" - source: hosted - version: "3.0.1" - url_launcher_platform_interface: - dependency: transitive - description: - name: url_launcher_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" - url_launcher_web: - dependency: transitive - description: - name: url_launcher_web - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.13" - url_launcher_windows: + version: "1.4.0" + vector_math: dependency: transitive description: - name: url_launcher_windows - url: "https://pub.dartlang.org" + name: vector_math + sha256: fa49e1674cb84acb900141714e6c6e1f9ae099827c24d141430ff6819db4e1bc + url: "https://pub.dev" source: hosted - version: "3.0.1" - vector_math: + version: "2.4.4" + vm_service: dependency: transitive description: - name: vector_math - url: "https://pub.dartlang.org" + name: vm_service + sha256: "89b11d62e1040ee681af3b4f1c97a803ecbf010c6e8b9c5896ee5b08c3bf7b78" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "15.4.0" watcher: dependency: transitive description: name: watcher - url: "https://pub.dartlang.org" + sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" + url: "https://pub.dev" source: hosted - version: "1.0.2" - win32: + version: "1.2.1" + web: dependency: transitive description: - name: win32 - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.3" - window_manager: - dependency: "direct main" - description: - name: window_manager - url: "https://pub.dartlang.org" + name: web + sha256: e119e82ac4795c7925103b7cf3768191f33941b99e7ccffbd6c645201d9f606b + url: "https://pub.dev" source: hosted - version: "0.2.8" + version: "1.1.2" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" + url: "https://pub.dev" source: hosted - version: "0.2.0+2" + version: "1.1.0" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + sha256: f67cdd8e07d3c6329146aaef1ba043542b3134c12489f553ca9a7435d1068aea + url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.4" sdks: - dart: ">=2.18.6 <3.0.0" - flutter: ">=3.3.10" + dart: ">=3.13.0 <4.0.0" + flutter: ">=3.47.0" diff --git a/pubspec.yaml b/pubspec.yaml index cef3a93..3c608f9 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -3,8 +3,8 @@ description: A simple logic game. Find the best path to delete every number in a version: 2.4.3+15 environment: - sdk: ">=2.18.6 <3.0.0" - flutter: ^3.3.10 + sdk: ">=3.0.0 <4.0.0" + flutter: ">=3.10.0" dependencies: flutter: @@ -12,10 +12,9 @@ dependencies: flutter_localizations: sdk: flutter - i18n_extension: ^6.0.0 + i18n_extension: ^16.0.1 + i18n_extension_importer: ^0.0.6 shared_preferences: ^2.0.15 - url_launcher: ^6.1.7 - window_manager: ^0.2.8 dev_dependencies: flutter_test: