diff --git a/lib/habits/habit.dart b/lib/habits/habit.dart index cb3d2ff..d6c3dea 100644 --- a/lib/habits/habit.dart +++ b/lib/habits/habit.dart @@ -148,7 +148,7 @@ class HabitState extends State { textAlign: TextAlign.center, style: const TextStyle(color: Colors.white), ), - backgroundColor: Theme.of(context).toggleableActiveColor, + backgroundColor: Theme.of(context).colorScheme.primary, behavior: SnackBarBehavior.floating, ), ); diff --git a/lib/habits/habits_manager.dart b/lib/habits/habits_manager.dart index eafa2e5..0a7ce90 100644 --- a/lib/habits/habits_manager.dart +++ b/lib/habits/habits_manager.dart @@ -17,16 +17,14 @@ class HabitsManager extends ChangeNotifier { GlobalKey(); late List allHabits = []; - bool dataLoaded = false; + bool _isInitialized = false; Habit? deletedHabit; Queue toDelete = Queue(); - HabitsManager() { - initModel(); - } - void initialize() async { + await initModel(); + await Future.delayed(const Duration(seconds: 5)); notifyListeners(); } @@ -37,7 +35,7 @@ class HabitsManager extends ChangeNotifier { initModel() async { await _haboModel.initDatabase(); allHabits = await _haboModel.getAllHabits(); - dataLoaded = true; + _isInitialized = true; notifyListeners(); } @@ -118,6 +116,10 @@ class HabitsManager extends ChangeNotifier { return allHabits; } + bool get isInitialized { + return _isInitialized; + } + reorderList(oldIndex, newIndex) { if (newIndex > oldIndex) { newIndex -= 1; @@ -199,8 +201,7 @@ class HabitsManager extends ChangeNotifier { notifyListeners(); } - String getNameOfHabit(int id) - { + String getNameOfHabit(int id) { Habit? hab = findHabitById(id); return (hab != null) ? hab.habitData.title : ""; } diff --git a/lib/main.dart b/lib/main.dart index c0647d4..5fed268 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -38,6 +38,7 @@ class _HaboState extends State { _appRouter = AppRouter( appStateManager: _appStateManager, settingsManager: _settingsManager, + habitsManager: _habitManager, ); super.initState(); } diff --git a/lib/model/settings_data.dart b/lib/model/settings_data.dart index 8a2faa6..3bffaa5 100644 --- a/lib/model/settings_data.dart +++ b/lib/model/settings_data.dart @@ -52,8 +52,8 @@ class SettingsData { 'soundEffects': soundEffects, 'showMonthName': showMonthName, 'seenOnboarding': seenOnboarding, - 'checkColor': checkColor.hashCode, - 'failColor': failColor.hashCode, - 'skipColor': skipColor.hashCode, + 'checkColor': checkColor.value, + 'failColor': failColor.value, + 'skipColor': skipColor.value, }; } diff --git a/lib/navigation/app_router.dart b/lib/navigation/app_router.dart index 9a4362e..9d7da65 100644 --- a/lib/navigation/app_router.dart +++ b/lib/navigation/app_router.dart @@ -1,12 +1,13 @@ import 'package:flutter/material.dart'; import 'package:habo/habits/edit_habit_screen.dart'; +import 'package:habo/habits/habits_manager.dart'; +import 'package:habo/habits/habits_screen.dart'; import 'package:habo/navigation/app_state_manager.dart'; import 'package:habo/navigation/routes.dart'; import 'package:habo/onboarding/onboarding_screen.dart'; import 'package:habo/settings/settings_manager.dart'; import 'package:habo/settings/settings_screen.dart'; import 'package:habo/splash_screen.dart'; -import 'package:habo/habits/habits_screen.dart'; import 'package:habo/statistics/statistics_screen.dart'; class AppRouter extends RouterDelegate @@ -16,11 +17,16 @@ class AppRouter extends RouterDelegate final AppStateManager appStateManager; final SettingsManager settingsManager; + final HabitsManager habitsManager; - AppRouter({required this.appStateManager, required this.settingsManager}) + AppRouter( + {required this.appStateManager, + required this.settingsManager, + required this.habitsManager}) : navigatorKey = GlobalKey() { appStateManager.addListener(notifyListeners); settingsManager.addListener(notifyListeners); + habitsManager.addListener(notifyListeners); settingsManager.getSeenOnboarding; } @@ -28,6 +34,7 @@ class AppRouter extends RouterDelegate void dispose() { appStateManager.removeListener(notifyListeners); settingsManager.removeListener(notifyListeners); + habitsManager.removeListener(notifyListeners); super.dispose(); } @@ -37,19 +44,23 @@ class AppRouter extends RouterDelegate key: navigatorKey, onPopPage: _handlePopPage, pages: [ - if (!appStateManager.isInitialized) SplashScreen.page(), - if (appStateManager.isInitialized) HabitsScreen.page(), + if (allInitialized()) HabitsScreen.page(), if (appStateManager.getStatistics) StatisticsScreen.page(), if (appStateManager.getSettings) SettingsScreen.page(), if (appStateManager.getOnboarding || !settingsManager.getSeenOnboarding) OnboardingScreen.page(), - if (appStateManager.getCreateHabit) EditHabitScreen.page(null), + if (appStateManager.getCreateHabit) EditHabitScreen.page(null), if (appStateManager.getEditHabit != null) EditHabitScreen.page(appStateManager.getEditHabit!), + if (!allInitialized()) SplashScreen.page(), ], ); } + bool allInitialized() { + return settingsManager.isInitialized && habitsManager.isInitialized; + } + bool _handlePopPage(Route route, result) { if (!route.didPop(result)) { return false; diff --git a/lib/navigation/app_state_manager.dart b/lib/navigation/app_state_manager.dart index 5726a68..38cc80f 100644 --- a/lib/navigation/app_state_manager.dart +++ b/lib/navigation/app_state_manager.dart @@ -1,33 +1,19 @@ -import 'dart:async'; - import 'package:flutter/material.dart'; import 'package:habo/model/habit_data.dart'; class AppStateManager extends ChangeNotifier { - bool _initialized = false; bool _statistics = false; bool _settings = false; bool _onboarding = false; bool _createHabit = false; HabitData? _editHabit; - bool get isInitialized => _initialized; bool get getStatistics => _statistics; bool get getSettings => _settings; bool get getOnboarding => _onboarding; bool get getCreateHabit => _createHabit; HabitData? get getEditHabit => _editHabit; - void initializeApp() { - Timer( - const Duration(milliseconds: 2000), - () { - _initialized = true; - notifyListeners(); - }, - ); - } - void goStatistics(bool state) { _statistics = state; notifyListeners(); diff --git a/lib/settings/color_icon.dart b/lib/settings/color_icon.dart index 8935754..b433766 100644 --- a/lib/settings/color_icon.dart +++ b/lib/settings/color_icon.dart @@ -60,7 +60,7 @@ class _ColorIconState extends State { onColorChanged: (Color color) { setState( () { - tempColor = color; + tempColor = color.withOpacity(1.0); }, ); }, diff --git a/lib/settings/settings_manager.dart b/lib/settings/settings_manager.dart index 8e4c95e..b9c258a 100644 --- a/lib/settings/settings_manager.dart +++ b/lib/settings/settings_manager.dart @@ -12,13 +12,14 @@ import 'package:shared_preferences/shared_preferences.dart'; class SettingsManager extends ChangeNotifier { final Future _prefs = SharedPreferences.getInstance(); SettingsData _settingsData = SettingsData(); + bool _isInitialized = false; final _checkPlayer = AudioPlayer(); final _clickPlayer = AudioPlayer(); void initialize() async { - loadData(); - + await loadData(); + _isInitialized = true; notifyListeners(); _checkPlayer.setAsset('assets/sounds/check.wav'); _clickPlayer.setAsset('assets/sounds/click.wav'); @@ -58,7 +59,7 @@ class SettingsManager extends ChangeNotifier { prefs.setString('habo_settings', jsonEncode(_settingsData)); } - void loadData() async { + Future loadData() async { final SharedPreferences prefs = await _prefs; String? json = prefs.getString('habo_settings'); if (json != null) { @@ -134,6 +135,10 @@ class SettingsManager extends ChangeNotifier { return _settingsData.skipColor; } + bool get isInitialized { + return _isInitialized; + } + set setTheme(String value) { _settingsData.theme = Themes.values[_settingsData.themeList.indexOf(value)]; saveData(); diff --git a/lib/settings/settings_screen.dart b/lib/settings/settings_screen.dart index a2e3b2c..fe94da7 100644 --- a/lib/settings/settings_screen.dart +++ b/lib/settings/settings_screen.dart @@ -79,9 +79,7 @@ class _SettingsScreenState extends State { btnOkColor: HaboColors.primary, btnCancelOnPress: () {}, btnOkOnPress: () async { - context.loaderOverlay.show(); await Provider.of(context, listen: false).loadBackup(); - context.loaderOverlay.hide(); }, ).show(); } @@ -109,282 +107,289 @@ class _SettingsScreenState extends State { backgroundColor: Colors.transparent, iconTheme: Theme.of(context).iconTheme, ), - body: Center( - child: Column( - children: [ - ListTile( - title: const Text("Theme"), - trailing: DropdownButton( - items: Provider.of(context) - .getThemeList - .map((String value) { - return DropdownMenuItem( - value: value, - child: Text( - value, - textAlign: TextAlign.center, - ), - ); - }).toList(), - value: Provider.of(context).getTheme, - onChanged: (value) { - Provider.of(context, listen: false) - .setTheme = value!; - }, + body: SingleChildScrollView( + child: Center( + child: Column( + children: [ + ListTile( + title: const Text("Theme"), + trailing: DropdownButton( + items: Provider.of(context) + .getThemeList + .map((String value) { + return DropdownMenuItem( + value: value, + child: Text( + value, + textAlign: TextAlign.center, + ), + ); + }).toList(), + value: Provider.of(context).getTheme, + onChanged: (value) { + Provider.of(context, listen: false) + .setTheme = value!; + }, + ), ), - ), - ListTile( - title: Row( - mainAxisSize: MainAxisSize.min, - children: const [ - Text("First day of the week"), - SizedBox(width: 5), - ], + ListTile( + title: Row( + mainAxisSize: MainAxisSize.min, + children: const [ + Text("First day of the week"), + SizedBox(width: 5), + ], + ), + trailing: DropdownButton( + alignment: Alignment.center, + items: Provider.of(context) + .getWeekStartList + .map((String value) { + return DropdownMenuItem( + alignment: Alignment.center, + value: value, + child: Text( + value, + textAlign: TextAlign.center, + ), + ); + }).toList(), + value: + Provider.of(context).getWeekStart, + onChanged: (value) { + Provider.of(context, listen: false) + .setWeekStart = value!; + }, + ), ), - trailing: DropdownButton( - alignment: Alignment.center, - items: Provider.of(context) - .getWeekStartList - .map((String value) { - return DropdownMenuItem( - alignment: Alignment.center, - value: value, - child: Text( - value, - textAlign: TextAlign.center, - ), - ); - }).toList(), - value: Provider.of(context).getWeekStart, - onChanged: (value) { - Provider.of(context, listen: false) - .setWeekStart = value!; - }, + ListTile( + title: const Text("Notifications"), + trailing: Switch( + value: Provider.of(context) + .getShowDailyNot, + onChanged: (value) async { + Provider.of(context, listen: false) + .setShowDailyNot = value; + }, + ), ), - ), - ListTile( - title: const Text("Notifications"), - trailing: Switch( - value: + ListTile( + enabled: Provider.of(context).getShowDailyNot, - onChanged: (value) async { - Provider.of(context, listen: false) - .setShowDailyNot = value; - }, - ), - ), - ListTile( - enabled: - Provider.of(context).getShowDailyNot, - title: const Text("Notification time"), - trailing: InkWell( - onTap: () { - if (Provider.of(context, listen: false) - .getShowDailyNot) { - testTime(context); - } - }, - child: Text( - "${Provider.of(context).getDailyNot.hour.toString().padLeft(2, '0')}" - ":" - "${Provider.of(context).getDailyNot.minute.toString().padLeft(2, '0')}", - style: TextStyle( - color: (Provider.of(context) - .getShowDailyNot) - ? null - : Theme.of(context).disabledColor), + title: const Text("Notification time"), + trailing: InkWell( + onTap: () { + if (Provider.of(context, + listen: false) + .getShowDailyNot) { + testTime(context); + } + }, + child: Text( + "${Provider.of(context).getDailyNot.hour.toString().padLeft(2, '0')}" + ":" + "${Provider.of(context).getDailyNot.minute.toString().padLeft(2, '0')}", + style: TextStyle( + color: (Provider.of(context) + .getShowDailyNot) + ? null + : Theme.of(context).disabledColor), + ), ), ), - ), - ListTile( - title: const Text("Sound effects"), - trailing: Switch( - value: - Provider.of(context).getSoundEffects, - onChanged: (value) { - Provider.of(context, listen: false) - .setSoundEffects = value; - }, - ), - ), - ListTile( - title: const Text("Show month name"), - trailing: Switch( - value: Provider.of(context) - .getShowMonthName, - onChanged: (value) { - Provider.of(context, listen: false) - .setShowMonthName = value; - }, + ListTile( + title: const Text("Sound effects"), + trailing: Switch( + value: Provider.of(context) + .getSoundEffects, + onChanged: (value) { + Provider.of(context, listen: false) + .setSoundEffects = value; + }, + ), ), - ), - ListTile( - title: const Text("Set colors"), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - ColorIcon( - color: Provider.of(context, - listen: false) - .checkColor, - icon: Icons.check, - defaultColor: HaboColors.primary, - onPicked: (value) { - Provider.of(context, listen: false) - .checkColor = value; - }, - ), - ColorIcon( - color: Provider.of(context, - listen: false) - .failColor, - icon: Icons.close, - defaultColor: HaboColors.red, - onPicked: (value) { - Provider.of(context, listen: false) - .failColor = value; - }, - ), - ColorIcon( - color: Provider.of(context, - listen: false) - .skipColor, - icon: Icons.last_page, - defaultColor: HaboColors.skip, - onPicked: (value) { - Provider.of(context, listen: false) - .skipColor = value; - }, - ) - ], + ListTile( + title: const Text("Show month name"), + trailing: Switch( + value: Provider.of(context) + .getShowMonthName, + onChanged: (value) { + Provider.of(context, listen: false) + .setShowMonthName = value; + }, + ), ), - ), - ListTile( - title: const Text("Backup"), - trailing: Row( - mainAxisSize: MainAxisSize.min, - children: [ - MaterialButton( - onPressed: () async { - Provider.of(context, listen: false) - .createBackup(); - }, - child: const Text( - 'Create', - style: - TextStyle(decoration: TextDecoration.underline), + ListTile( + title: const Text("Set colors"), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + ColorIcon( + color: Provider.of(context, + listen: false) + .checkColor, + icon: Icons.check, + defaultColor: HaboColors.primary, + onPicked: (value) { + Provider.of(context, + listen: false) + .checkColor = value; + }, ), - ), - const VerticalDivider( - thickness: 1, - indent: 20, - endIndent: 20, - color: Colors.grey, - ), - MaterialButton( - onPressed: () async { - showRestoreDialog(context); - }, - child: const Text( - 'Restore', - style: - TextStyle(decoration: TextDecoration.underline), + ColorIcon( + color: Provider.of(context, + listen: false) + .failColor, + icon: Icons.close, + defaultColor: HaboColors.red, + onPicked: (value) { + Provider.of(context, + listen: false) + .failColor = value; + }, ), - ), - ], + ColorIcon( + color: Provider.of(context, + listen: false) + .skipColor, + icon: Icons.last_page, + defaultColor: HaboColors.skip, + onPicked: (value) { + Provider.of(context, + listen: false) + .skipColor = value; + }, + ) + ], + ), ), - ), - ListTile( - title: const Text("Onboarding"), - onTap: () { - // navigateToOnboarding(context); - Provider.of(context, listen: false) - .goOnboarding(true); - }, - ), - ListTile( - title: const Text("About"), - onTap: () { - showAboutDialog( - context: context, - applicationIcon: Image.asset( - "assets/images/icon.png", - width: 55, - height: 55, - ), - applicationName: 'Habo', - applicationVersion: _packageInfo.version, - applicationLegalese: '©2022 Habo', - children: [ - Padding( - padding: const EdgeInsets.only(top: 15), - child: RichText( - text: TextSpan( - style: Theme.of(context).textTheme.bodyText2, - children: [ - TextSpan( - style: const TextStyle( - color: Colors.blue, - decoration: TextDecoration.underline), - text: "Terms and Conditions\n", - recognizer: TapGestureRecognizer() - ..onTap = () async { - final Uri url = Uri.parse( - 'https://habo.space/terms.html#terms'); - if (await canLaunchUrl(url)) { - await launchUrl( - url, - mode: - LaunchMode.externalApplication, - ); - } - }, - ), - TextSpan( - style: const TextStyle( - color: Colors.blue, - decoration: TextDecoration.underline), - text: "Privacy Policy\n", - recognizer: TapGestureRecognizer() - ..onTap = () async { - final Uri url = Uri.parse( - 'https://habo.space/terms.html#privacy'); - if (await canLaunchUrl(url)) { - await launchUrl( - url, - mode: - LaunchMode.externalApplication, - ); - } - }, - ), - TextSpan( - style: const TextStyle( - color: Colors.blue, - decoration: TextDecoration.underline), - text: "Disclaimer\n", - recognizer: TapGestureRecognizer() - ..onTap = () async { - final Uri url = Uri.parse( - 'https://habo.space/terms.html#disclaimer'); - if (await canLaunchUrl(url)) { - await launchUrl( - url, - mode: - LaunchMode.externalApplication, - ); - } - }, - ), - ], - ), + ListTile( + title: const Text("Backup"), + trailing: Row( + mainAxisSize: MainAxisSize.min, + children: [ + MaterialButton( + onPressed: () async { + Provider.of(context, listen: false) + .createBackup(); + }, + child: const Text( + 'Create', + style: TextStyle( + decoration: TextDecoration.underline), ), - ) + ), + const VerticalDivider( + thickness: 1, + indent: 20, + endIndent: 20, + color: Colors.grey, + ), + MaterialButton( + onPressed: () async { + showRestoreDialog(context); + }, + child: const Text( + 'Restore', + style: TextStyle( + decoration: TextDecoration.underline), + ), + ), ], - ); - }, - ), - ], + ), + ), + ListTile( + title: const Text("Onboarding"), + onTap: () { + // navigateToOnboarding(context); + Provider.of(context, listen: false) + .goOnboarding(true); + }, + ), + ListTile( + title: const Text("About"), + onTap: () { + showAboutDialog( + context: context, + applicationIcon: Image.asset( + "assets/images/icon.png", + width: 55, + height: 55, + ), + applicationName: 'Habo', + applicationVersion: _packageInfo.version, + applicationLegalese: '©2022 Habo', + children: [ + Padding( + padding: const EdgeInsets.only(top: 15), + child: RichText( + text: TextSpan( + style: Theme.of(context).textTheme.bodyMedium, + children: [ + TextSpan( + style: const TextStyle( + color: Colors.blue, + decoration: TextDecoration.underline), + text: "Terms and Conditions\n", + recognizer: TapGestureRecognizer() + ..onTap = () async { + final Uri url = Uri.parse( + 'https://habo.space/terms.html#terms'); + if (await canLaunchUrl(url)) { + await launchUrl( + url, + mode: LaunchMode + .externalApplication, + ); + } + }, + ), + TextSpan( + style: const TextStyle( + color: Colors.blue, + decoration: TextDecoration.underline), + text: "Privacy Policy\n", + recognizer: TapGestureRecognizer() + ..onTap = () async { + final Uri url = Uri.parse( + 'https://habo.space/terms.html#privacy'); + if (await canLaunchUrl(url)) { + await launchUrl( + url, + mode: LaunchMode + .externalApplication, + ); + } + }, + ), + TextSpan( + style: const TextStyle( + color: Colors.blue, + decoration: TextDecoration.underline), + text: "Disclaimer\n", + recognizer: TapGestureRecognizer() + ..onTap = () async { + final Uri url = Uri.parse( + 'https://habo.space/terms.html#disclaimer'); + if (await canLaunchUrl(url)) { + await launchUrl( + url, + mode: LaunchMode + .externalApplication, + ); + } + }, + ), + ], + ), + ), + ) + ], + ); + }, + ), + ], + ), ), ), ), diff --git a/lib/splash_screen.dart b/lib/splash_screen.dart index a3dd273..91f19bb 100644 --- a/lib/splash_screen.dart +++ b/lib/splash_screen.dart @@ -1,7 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:habo/navigation/app_state_manager.dart'; import 'package:habo/navigation/routes.dart'; -import 'package:provider/provider.dart'; class SplashScreen extends StatefulWidget { static MaterialPage page() { @@ -19,12 +17,6 @@ class SplashScreen extends StatefulWidget { } class _SplashScreenState extends State { - @override - void didChangeDependencies() { - super.didChangeDependencies(); - Provider.of(context, listen: false).initializeApp(); - } - @override Widget build(BuildContext context) { return Scaffold( @@ -38,7 +30,7 @@ class _SplashScreenState extends State { ), Text( "Habo", - style: Theme.of(context).textTheme.headline5, + style: Theme.of(context).textTheme.headlineSmall, ), ], ), diff --git a/lib/themes.dart b/lib/themes.dart index 8b8c6b1..f97324f 100644 --- a/lib/themes.dart +++ b/lib/themes.dart @@ -6,37 +6,70 @@ class HaboTheme { static ThemeData get lightTheme { return ThemeData( useMaterial3: true, + scaffoldBackgroundColor: const Color(0xFFFAFAFA), + dialogTheme: const DialogTheme(surfaceTintColor: Colors.white), brightness: Brightness.light, primaryColor: const Color(0xFF09BF30), colorScheme: ColorScheme.light( primaryContainer: Colors.white, secondaryContainer: Colors.grey[100], primary: HaboColors.primary, + outline: const Color(0xFF505050), ), fontFamily: GoogleFonts.nunito().fontFamily, floatingActionButtonTheme: const FloatingActionButtonThemeData( backgroundColor: Color(0xFF09BF30), ), - toggleableActiveColor: HaboColors.primary, ); } static ThemeData get darkTheme { return ThemeData( useMaterial3: true, + scaffoldBackgroundColor: const Color(0xFF303030), + dialogTheme: const DialogTheme(surfaceTintColor: Colors.white), primaryColor: Colors.grey, appBarTheme: const AppBarTheme(elevation: 0), fontFamily: GoogleFonts.nunito().fontFamily, - textTheme: ThemeData.dark().textTheme, + switchTheme: SwitchThemeData( + thumbColor: MaterialStateProperty.resolveWith(getSwitchColorThumb), + trackColor: MaterialStateProperty.resolveWith(getSwitchTrackColor), + ), colorScheme: const ColorScheme.dark( primaryContainer: Color(0xFF505050), secondaryContainer: Color(0xFF353535), primary: HaboColors.primary, + outline: Colors.grey, ), floatingActionButtonTheme: const FloatingActionButtonThemeData( backgroundColor: Color(0xFF09BF30), ), - toggleableActiveColor: HaboColors.primary, ); } } + +Color getSwitchColorThumb(Set states) { + if (states.contains(MaterialState.selected)) { + return const Color(0xFF303030); + } + + return Colors.grey; +} + +Color getSwitchTrackColor(Set states) { + const Set interactiveStates = { + MaterialState.pressed, + MaterialState.hovered, + MaterialState.focused, + }; + + if (states.any(interactiveStates.contains)) { + return const Color(0xFF505050); + } + + if (states.contains(MaterialState.selected)) { + return HaboColors.primary; + } + + return const Color(0xFF353535); +} diff --git a/pubspec.lock b/pubspec.lock index 93e43cd..270bf46 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,140 +5,168 @@ packages: dependency: transitive description: name: archive - url: "https://pub.dartlang.org" + sha256: ed7cc591a948744994714375caf9a2ce89e1d82e8243997c8a2994d57181c212 + url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.3.5" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: "139d809800a412ebb26a3892da228b2d0ba36f0ef5d9a82166e5e52ec8d61611" + url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.2" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: bfe67ef28df125b7dddcea62755991f807aa39a2492a23e1550161692950bbe0 + url: "https://pub.dev" source: hosted - version: "2.9.0" + version: "2.10.0" audio_session: dependency: transitive description: name: audio_session - url: "https://pub.dartlang.org" + sha256: e4acc4e9eaa32436dfc5d7aed7f0a370f2d7bb27ee27de30d6c4f220c2a05c73 + url: "https://pub.dev" source: hosted - version: "0.1.11" + version: "0.1.13" awesome_dialog: dependency: "direct main" description: name: awesome_dialog - url: "https://pub.dartlang.org" + sha256: ac08268b991f228fc6b8880b68ec030d2941bcc8df8b6a6551fb79f2bd36b7da + url: "https://pub.dev" source: hosted version: "3.0.2" awesome_notifications: dependency: "direct main" description: name: awesome_notifications - url: "https://pub.dartlang.org" + sha256: "2b430c75cc879d6cfd52bb6eb2b5c1591ed425347816408cdcbd3f6916bba14c" + url: "https://pub.dev" source: hosted version: "0.7.4+1" back_button_interceptor: dependency: transitive description: name: back_button_interceptor - url: "https://pub.dartlang.org" + sha256: e47660f2178a4392eb72001f9594d3fdcb5efde93e59d2819d61fda499e781c8 + url: "https://pub.dev" source: hosted - version: "6.0.1" + version: "6.0.2" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: e6a326c8af69605aec75ed6c187d06b349707a27fbff8222ca9cc2cff167975c + url: "https://pub.dev" source: hosted version: "1.2.1" checked_yaml: dependency: transitive description: name: checked_yaml - url: "https://pub.dartlang.org" + sha256: "3d1505d91afa809d177efd4eed5bb0eb65805097a1463abdd2add076effae311" + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "2.0.2" cli_util: dependency: transitive description: name: cli_util - url: "https://pub.dartlang.org" + sha256: "66f86e916d285c1a93d3b79587d94bd71984a66aac4ff74e524cfa7877f1395c" + url: "https://pub.dev" source: hosted version: "0.3.5" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted version: "1.1.1" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: cfc915e6923fe5ce6e153b0723c753045de46de1b4d63771530504004a45fae0 + url: "https://pub.dev" + source: hosted + version: "1.17.0" + convert: + dependency: transitive + description: + name: convert + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" source: hosted - version: "1.16.0" + version: "3.1.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: aa274aa7774f8964e4f4f38cc994db7b6158dd36e9187aaceaddc994b35c6c67 + url: "https://pub.dev" source: hosted version: "3.0.2" dots_indicator: dependency: transitive description: name: dots_indicator - url: "https://pub.dartlang.org" + sha256: e59dfc90030ee5a4fd4c53144a8ce97cc7a823c2067b8fb9814960cd1ae63f89 + url: "https://pub.dev" source: hosted version: "2.1.0" equatable: dependency: transitive description: name: equatable - url: "https://pub.dartlang.org" + sha256: c2b87cb7756efdf69892005af546c56c0b5037f54d2a88269b4f347a505e3ca2 + url: "https://pub.dev" source: hosted version: "2.0.5" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted version: "1.3.1" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: a38574032c5f1dd06c4aee541789906c12ccaab8ba01446e800d9c5b79c4a978 + url: "https://pub.dev" source: hosted version: "2.0.1" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" + url: "https://pub.dev" source: hosted version: "6.1.4" fl_chart: dependency: "direct main" description: name: fl_chart - url: "https://pub.dartlang.org" + sha256: "749b3342ea3e95cbf61a0fec31a62606e837377b8b6d0caa7367a7ef80f38b7d" + url: "https://pub.dev" source: hosted version: "0.55.2" flutter: @@ -150,37 +178,42 @@ packages: dependency: "direct main" description: name: flutter_colorpicker - url: "https://pub.dartlang.org" + sha256: "458a6ed8ea480eb16ff892aedb4b7092b2804affd7e046591fb03127e8d8ef8b" + url: "https://pub.dev" source: hosted version: "1.0.3" flutter_file_dialog: dependency: "direct main" description: name: flutter_file_dialog - url: "https://pub.dartlang.org" + sha256: fb19d8b7c811a70947344695001e82777921fdc0ed5c80289440f096ae22b10f + url: "https://pub.dev" source: hosted version: "2.3.2" flutter_launcher_icons: dependency: "direct dev" description: name: flutter_launcher_icons - url: "https://pub.dartlang.org" + sha256: a9de6706cd844668beac27c0aed5910fa0534832b3c2cad61a5fd977fce82a5d + url: "https://pub.dev" source: hosted version: "0.10.0" flutter_lints: dependency: "direct dev" description: name: flutter_lints - url: "https://pub.dartlang.org" + sha256: aeb0b80a8b3709709c9cc496cdc027c5b3216796bc0af0ce1007eaf24464fd4c + url: "https://pub.dev" source: hosted version: "2.0.1" flutter_svg: dependency: "direct main" description: name: flutter_svg - url: "https://pub.dartlang.org" + sha256: "6ff9fa12892ae074092de2fa6a9938fb21dbabfdaa2ff57dc697ff912fc8d4b2" + url: "https://pub.dev" source: hosted - version: "1.1.5" + version: "1.1.6" flutter_test: dependency: "direct dev" description: flutter @@ -195,350 +228,392 @@ packages: dependency: "direct main" description: name: google_fonts - url: "https://pub.dartlang.org" + sha256: "8f099045e2f2a30e4d4d0a35f40c6bc941a8f2ca0e10ad9d214ee9edd3f37483" + url: "https://pub.dev" source: hosted version: "3.0.1" graphs: dependency: transitive description: name: graphs - url: "https://pub.dartlang.org" + sha256: f9e130f3259f52d26f0cfc0e964513796dafed572fa52e45d2f8d6ca14db39b2 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.2.0" http: dependency: transitive description: name: http - url: "https://pub.dartlang.org" + sha256: "6aa2946395183537c8b880962d935877325d6a09a2867c3970c05c0fed6ac482" + url: "https://pub.dev" source: hosted version: "0.13.5" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" image: dependency: transitive description: name: image - url: "https://pub.dartlang.org" + sha256: "8e9d133755c3e84c73288363e6343157c383a0c6c56fc51afcc5d4d7180306d6" + url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.3.0" intl: dependency: transitive description: name: intl - url: "https://pub.dartlang.org" + sha256: "910f85bce16fb5c6f614e117efa303e85a1731bb0081edf3604a2ae6e9a3cc91" + url: "https://pub.dev" source: hosted version: "0.17.0" introduction_screen: dependency: "direct main" description: name: introduction_screen - url: "https://pub.dartlang.org" + sha256: "73965475d6b271846f81c5fce5b459546a4ea36c285408691522437fd6bbeb69" + url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.1.4" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: "5528c2f391ededb7775ec1daa69e65a2d61276f7552de2b5f7b8d34ee9fd4ab7" + url: "https://pub.dev" source: hosted - version: "0.6.4" + version: "0.6.5" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.dartlang.org" + sha256: c33da08e136c3df0190bd5bbe51ae1df4a7d96e7954d1d7249fea2968a72d317 + url: "https://pub.dev" source: hosted - version: "4.7.0" + version: "4.8.0" just_audio: dependency: "direct main" description: name: just_audio - url: "https://pub.dartlang.org" + sha256: "7a5057a4d05c8f88ee968cec6fdfe1015577d5184e591d5ac15ab16d8f5ecb17" + url: "https://pub.dev" source: hosted - version: "0.9.30" + version: "0.9.31" just_audio_platform_interface: dependency: transitive description: name: just_audio_platform_interface - url: "https://pub.dartlang.org" + sha256: eff112d5138bea3ba544b6338b1e0537a32b5e1425e4d0dc38f732771cda7c84 + url: "https://pub.dev" source: hosted version: "4.2.0" just_audio_web: dependency: transitive description: name: just_audio_web - url: "https://pub.dartlang.org" + sha256: "89d8db6f19f3821bb6bf908c4bfb846079afb2ab575b783d781a6bf119e3abaf" + url: "https://pub.dev" source: hosted version: "0.4.7" lints: dependency: transitive description: name: lints - url: "https://pub.dartlang.org" + sha256: "5e4a9cd06d447758280a8ac2405101e0e2094d2a1dbdd3756aec3fe7775ba593" + url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.0.1" loader_overlay: dependency: "direct main" description: name: loader_overlay - url: "https://pub.dartlang.org" + sha256: fba43a51a89b5578e3c05e39c9826a6853a1ab181b02e79cd41d96c58286716c + url: "https://pub.dev" source: hosted version: "2.1.0" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "16db949ceee371e9b99d22f88fa3a73c4e59fd0afed0bd25fc336eb76c198b72" + url: "https://pub.dev" source: hosted - version: "0.12.12" + version: "0.12.13" material_color_utilities: dependency: transitive description: name: material_color_utilities - url: "https://pub.dartlang.org" + sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + url: "https://pub.dev" source: hosted - version: "0.1.5" + version: "0.2.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: "6c268b42ed578a53088d834796959e4a1814b5e9e164f147f580a386e5decf42" + url: "https://pub.dev" source: hosted version: "1.8.0" nested: dependency: transitive description: name: nested - url: "https://pub.dartlang.org" + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" source: hosted version: "1.0.0" package_info_plus: dependency: "direct main" description: name: package_info_plus - url: "https://pub.dartlang.org" + sha256: f62d7253edc197fe3c88d7c2ddab82d68f555e778d55390ccc3537eca8e8d637 + url: "https://pub.dev" source: hosted version: "1.4.3+1" package_info_plus_linux: dependency: transitive description: name: package_info_plus_linux - url: "https://pub.dartlang.org" + sha256: "04b575f44233d30edbb80a94e57cad9107aada334fc02aabb42b6becd13c43fc" + url: "https://pub.dev" source: hosted version: "1.0.5" package_info_plus_macos: dependency: transitive description: name: package_info_plus_macos - url: "https://pub.dartlang.org" + sha256: a2ad8b4acf4cd479d4a0afa5a74ea3f5b1c7563b77e52cc32b3ee6956d5482a6 + url: "https://pub.dev" source: hosted version: "1.3.0" package_info_plus_platform_interface: dependency: transitive description: name: package_info_plus_platform_interface - url: "https://pub.dartlang.org" + sha256: f7a0c8f1e7e981bc65f8b64137a53fd3c195b18d429fba960babc59a5a1c7ae8 + url: "https://pub.dev" source: hosted version: "1.0.2" package_info_plus_web: dependency: transitive description: name: package_info_plus_web - url: "https://pub.dartlang.org" + sha256: f0829327eb534789e0a16ccac8936a80beed4e2401c4d3a74f3f39094a822d3b + url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.6" package_info_plus_windows: dependency: transitive description: name: package_info_plus_windows - url: "https://pub.dartlang.org" + sha256: "79524f11c42dd9078b96d797b3cf79c0a2883a50c4920dc43da8562c115089bc" + url: "https://pub.dev" source: hosted version: "2.1.0" path: dependency: "direct main" description: name: path - url: "https://pub.dartlang.org" + sha256: db9d4f58c908a4ba5953fcee2ae317c94889433e5024c27ce74a37f94267945b + url: "https://pub.dev" source: hosted version: "1.8.2" path_drawing: dependency: transitive description: name: path_drawing - url: "https://pub.dartlang.org" + sha256: bbb1934c0cbb03091af082a6389ca2080345291ef07a5fa6d6e078ba8682f977 + url: "https://pub.dev" source: hosted version: "1.0.1" path_parsing: dependency: transitive description: name: path_parsing - url: "https://pub.dartlang.org" + sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + url: "https://pub.dev" source: hosted version: "1.0.1" path_provider: dependency: "direct main" description: name: path_provider - url: "https://pub.dartlang.org" + sha256: dcea5feb97d8abf90cab9e9030b497fb7c3cbf26b7a1fe9e3ef7dcb0a1ddec95 + url: "https://pub.dev" source: hosted - version: "2.0.11" + version: "2.0.12" path_provider_android: dependency: transitive description: name: path_provider_android - url: "https://pub.dartlang.org" + sha256: a776c088d671b27f6e3aa8881d64b87b3e80201c64e8869b811325de7a76c15e + url: "https://pub.dev" source: hosted - version: "2.0.20" - path_provider_ios: + version: "2.0.22" + path_provider_foundation: dependency: transitive description: - name: path_provider_ios - url: "https://pub.dartlang.org" + name: path_provider_foundation + sha256: "62a68e7e1c6c459f9289859e2fae58290c981ce21d1697faf54910fe1faa4c74" + url: "https://pub.dev" source: hosted - version: "2.0.11" + version: "2.1.1" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.dartlang.org" + sha256: ab0987bf95bc591da42dffb38c77398fc43309f0b9b894dcc5d6f40c4b26c379 + url: "https://pub.dev" source: hosted version: "2.1.7" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.6" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: f0abc8ebd7253741f05488b4813d936b4d07c6bae3e86148a09e342ee4b08e76 + url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.0.5" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: bcabbe399d4042b8ee687e17548d5d3f527255253b4a639f5f8d2094a9c2b45c + url: "https://pub.dev" source: hosted version: "2.1.3" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: "49392a45ced973e8d94a85fdb21293fbb40ba805fc49f2965101ae748a3683b4" + url: "https://pub.dev" source: hosted - version: "5.0.0" + version: "5.1.0" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" + url: "https://pub.dev" source: hosted version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: dbf0f707c78beedc9200146ad3cb0ab4d5da13c246336987be6940f026500d3a + url: "https://pub.dev" source: hosted version: "2.1.3" + pointycastle: + dependency: transitive + description: + name: pointycastle + sha256: db7306cf0249f838d1a24af52b5a5887c5bf7f31d8bb4e827d071dc0939ad346 + url: "https://pub.dev" + source: hosted + version: "3.6.2" process: dependency: transitive description: name: process - url: "https://pub.dartlang.org" + sha256: "53fd8db9cec1d37b0574e12f07520d582019cb6c44abf5479a01505099a34a09" + url: "https://pub.dev" source: hosted version: "4.2.4" provider: dependency: "direct main" description: name: provider - url: "https://pub.dartlang.org" + sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f + url: "https://pub.dev" source: hosted - version: "6.0.3" + version: "6.0.5" rive: dependency: transitive description: name: rive - url: "https://pub.dartlang.org" + sha256: "22e3755b75f4ea4492d2fecf4fc2acf1c8d0073df39781d290a20cbfe74c3760" + url: "https://pub.dev" source: hosted version: "0.9.1" rxdart: dependency: transitive description: name: rxdart - url: "https://pub.dartlang.org" + sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" + url: "https://pub.dev" source: hosted version: "0.27.7" shared_preferences: dependency: "direct main" description: name: shared_preferences - url: "https://pub.dartlang.org" + sha256: "5949029e70abe87f75cfe59d17bf5c397619c4b74a099b10116baeb34786fad9" + url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.0.17" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - url: "https://pub.dartlang.org" + sha256: "955e9736a12ba776bdd261cf030232b30eadfcd9c79b32a3250dd4a494e8c8f7" + url: "https://pub.dev" source: hosted - version: "2.0.13" - shared_preferences_ios: + version: "2.0.15" + shared_preferences_foundation: dependency: transitive description: - name: shared_preferences_ios - url: "https://pub.dartlang.org" + name: shared_preferences_foundation + sha256: "1ffa239043ab8baf881ec3094a3c767af9d10399b2839020b9e4d44c0bb23951" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.dartlang.org" - source: hosted - version: "2.1.1" - shared_preferences_macos: - dependency: transitive - description: - name: shared_preferences_macos - url: "https://pub.dartlang.org" + sha256: f8ea038aa6da37090093974ebdcf4397010605fd2ff65c37a66f9d28394cb874 + url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.1.3" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.dartlang.org" + sha256: da9431745ede5ece47bc26d5d73a9d3c6936ef6945c101a5aca46f62e52c1cf3 + url: "https://pub.dev" source: hosted version: "2.1.0" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.dartlang.org" + sha256: a4b5bc37fe1b368bbc81f953197d55e12f49d0296e7e412dfe2d2d77d6929958 + url: "https://pub.dev" source: hosted version: "2.0.4" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.dartlang.org" + sha256: "5eaf05ae77658d3521d0e993ede1af962d4b326cd2153d312df716dc250f00c9" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.3" simple_gesture_detector: dependency: transitive description: name: simple_gesture_detector - url: "https://pub.dartlang.org" + sha256: "86d08f85f1f58583b7b4b941d989f48ea6ce08c1724a1d10954a277c2ec36592" + url: "https://pub.dev" source: hosted version: "0.2.0" sky_engine: @@ -550,184 +625,210 @@ packages: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + url: "https://pub.dev" source: hosted - version: "1.9.0" + version: "1.9.1" sqflite: dependency: "direct main" description: name: sqflite - url: "https://pub.dartlang.org" + sha256: "78324387dc81df14f78df06019175a86a2ee0437624166c382e145d0a7fd9a4f" + url: "https://pub.dev" source: hosted - version: "2.1.0+1" + version: "2.2.4+1" sqflite_common: dependency: transitive description: name: sqflite_common - url: "https://pub.dartlang.org" + sha256: bfd6973aaeeb93475bc0d875ac9aefddf7965ef22ce09790eb963992ffc5183f + url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.2+2" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.0" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.1" + version: "1.2.0" synchronized: dependency: transitive description: name: synchronized - url: "https://pub.dartlang.org" + sha256: "33b31b6beb98100bf9add464a36a8dd03eb10c7a8cf15aeec535e9b054aaf04b" + url: "https://pub.dev" source: hosted - version: "3.0.0+3" + version: "3.0.1" table_calendar: dependency: "direct main" description: name: table_calendar - url: "https://pub.dartlang.org" + sha256: "7f1270313c0cdb245b583ed8518982c01d4a7e95869b3c30abcbae3b642c45d0" + url: "https://pub.dev" source: hosted - version: "3.0.7" + version: "3.0.8" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: ad540f65f92caa91bf21dfc8ffb8c589d6e4dc0c2267818b4cc2792857706206 + url: "https://pub.dev" source: hosted - version: "0.4.12" + version: "0.4.16" timezone: dependency: "direct main" description: name: timezone - url: "https://pub.dartlang.org" + sha256: "24c8fcdd49a805d95777a39064862133ff816ebfffe0ceff110fb5960e557964" + url: "https://pub.dev" source: hosted - version: "0.9.0" + version: "0.9.1" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: "26f87ade979c47a150c9eaab93ccd2bebe70a27dc0b4b29517f2904f04eb11a5" + url: "https://pub.dev" source: hosted version: "1.3.1" url_launcher: dependency: "direct main" description: name: url_launcher - url: "https://pub.dartlang.org" + sha256: "698fa0b4392effdc73e9e184403b627362eb5fbf904483ac9defbb1c2191d809" + url: "https://pub.dev" source: hosted - version: "6.1.6" + version: "6.1.8" url_launcher_android: dependency: transitive description: name: url_launcher_android - url: "https://pub.dartlang.org" + sha256: "3e2f6dfd2c7d9cd123296cab8ef66cfc2c1a13f5845f42c7a0f365690a8a7dd1" + url: "https://pub.dev" source: hosted - version: "6.0.19" + version: "6.0.23" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - url: "https://pub.dartlang.org" + sha256: bb328b24d3bccc20bdf1024a0990ac4f869d57663660de9c936fb8c043edefe3 + url: "https://pub.dev" source: hosted - version: "6.0.17" + version: "6.0.18" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - url: "https://pub.dartlang.org" + sha256: "318c42cba924e18180c029be69caf0a1a710191b9ec49bb42b5998fdcccee3cc" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - url: "https://pub.dartlang.org" + sha256: "41988b55570df53b3dd2a7fc90c76756a963de6a8c5f8e113330cb35992e2094" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.2" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - url: "https://pub.dartlang.org" + sha256: "4eae912628763eb48fc214522e58e942fd16ce195407dbf45638239523c759a6" + url: "https://pub.dev" source: hosted version: "2.1.1" url_launcher_web: dependency: transitive description: name: url_launcher_web - url: "https://pub.dartlang.org" + sha256: "44d79408ce9f07052095ef1f9a693c258d6373dc3944249374e30eff7219ccb0" + url: "https://pub.dev" source: hosted - version: "2.0.13" + version: "2.0.14" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - url: "https://pub.dartlang.org" + sha256: b6217370f8eb1fd85c8890c539f5a639a01ab209a36db82c921ebeacefc7a615 + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.0.3" uuid: dependency: transitive description: name: uuid - url: "https://pub.dartlang.org" + sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" + url: "https://pub.dev" source: hosted version: "3.0.7" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.4" win32: dependency: transitive description: name: win32 - url: "https://pub.dartlang.org" + sha256: c9ebe7ee4ab0c2194e65d3a07d8c54c5d00bb001b76081c4a04cdb8448b59e46 + url: "https://pub.dev" source: hosted - version: "3.0.0" + version: "3.1.3" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: bd512f03919aac5f1313eb8249f223bacf4927031bf60b02601f81f687689e86 + url: "https://pub.dev" source: hosted - version: "0.2.0+2" + version: "0.2.0+3" xml: dependency: transitive description: name: xml - url: "https://pub.dartlang.org" + sha256: "979ee37d622dec6365e2efa4d906c37470995871fe9ae080d967e192d88286b5" + url: "https://pub.dev" source: hosted - version: "6.1.0" + version: "6.2.2" yaml: dependency: transitive description: name: yaml - url: "https://pub.dartlang.org" + sha256: "23812a9b125b48d4007117254bca50abb6c712352927eece9e155207b1db2370" + url: "https://pub.dev" source: hosted version: "3.1.1" sdks: - dart: ">=2.18.1 <3.0.0" - flutter: ">=3.3.0-0" + dart: ">=2.18.1 <4.0.0" + flutter: ">=3.3.0"