diff --git a/lib/bloc/theme/theme_bloc.dart b/lib/bloc/theme/theme_bloc.dart index 9db66ac..b34b5a7 100644 --- a/lib/bloc/theme/theme_bloc.dart +++ b/lib/bloc/theme/theme_bloc.dart @@ -1,7 +1,6 @@ -import 'dart:async'; - import 'package:flutter/material.dart'; import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:get_it/get_it.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../models/themes/theme.dart'; @@ -13,24 +12,20 @@ part 'theme_event.dart'; part 'theme_state.dart'; class ThemeBloc extends Bloc { - bool prefsAreLoaded = false; - ThemeBloc() : super(const LightThemeState()) { - SharedPreferences.getInstance().then((prefs) { - prefsAreLoaded = true; - add( - SetTheme( - themeIsDark: prefs.getBool('darkThemeEnabled') ?? false, - ), - ); - }); - } + on( + (event, emit) => emit( + event.themeIsDark ? const DarkThemeState() : const LightThemeState(), + ), + ); - @override - Stream mapEventToState(ThemeEvent event) async* { - if (event is SetTheme) - yield event.themeIsDark - ? DarkThemeState(prefsAreLoaded: prefsAreLoaded) - : LightThemeState(prefsAreLoaded: prefsAreLoaded); + add( + SetTheme( + themeIsDark: GetIt.instance + .get() + .getBool('darkThemeEnabled') ?? + false, + ), + ); } } diff --git a/lib/bloc/theme/theme_state.dart b/lib/bloc/theme/theme_state.dart index 7b45fbb..134e0c6 100644 --- a/lib/bloc/theme/theme_state.dart +++ b/lib/bloc/theme/theme_state.dart @@ -2,24 +2,20 @@ part of 'theme_bloc.dart'; @immutable abstract class ThemeState { - final bool prefsAreLoaded; - - const ThemeState({required this.prefsAreLoaded}); + const ThemeState(); AppTheme get theme; } class LightThemeState extends ThemeState { - const LightThemeState({bool prefsAreLoaded = false}) - : super(prefsAreLoaded: prefsAreLoaded); + const LightThemeState(); @override AppTheme get theme => LightTheme(); } class DarkThemeState extends ThemeState { - const DarkThemeState({bool prefsAreLoaded = false}) - : super(prefsAreLoaded: prefsAreLoaded); + const DarkThemeState(); @override AppTheme get theme => DarkTheme(); diff --git a/lib/main.dart b/lib/main.dart index 0044107..31529b0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -2,40 +2,41 @@ import 'dart:io'; import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; -import 'package:mdi/mdi.dart'; import 'package:path/path.dart'; import 'package:path_provider/path_provider.dart'; import 'package:sembast/sembast.dart'; import 'package:sembast/sembast_io.dart'; +import 'package:shared_preferences/shared_preferences.dart'; import 'bloc/theme/theme_bloc.dart'; -import 'models/themes/theme.dart'; import 'router.dart'; -import 'view/components/common/splash.dart'; -import 'view/screens/history.dart'; -import 'view/screens/search/kanji_view.dart'; -import 'view/screens/search/search_view.dart'; -import 'view/screens/settings.dart'; + +Future setupDatabase() async { + final Directory appDocDir = await getApplicationDocumentsDirectory(); + if (!appDocDir.existsSync()) appDocDir.createSync(recursive: true); + final Database database = + await databaseFactoryIo.openDatabase(join(appDocDir.path, 'sembast.db')); + GetIt.instance.registerSingleton(database); +} + +Future setupSharedPreferences() async { + final SharedPreferences prefs = await SharedPreferences.getInstance(); + GetIt.instance.registerSingleton(prefs); +} Future main() async { WidgetsFlutterBinding.ensureInitialized(); - final Directory appDocDir = await getApplicationDocumentsDirectory(); - if (!appDocDir.existsSync()) - appDocDir.createSync(recursive: true); - - final Database db = await databaseFactoryIo.openDatabase(join(appDocDir.path, 'sembast.db')); - - GetIt.instance.registerSingleton(db); + await Future.wait([ + setupDatabase(), + setupSharedPreferences(), + ]); runApp(const MyApp()); } class MyApp extends StatelessWidget { - - const MyApp({ - Key? key, - }) : super(key: key); + const MyApp({Key? key}) : super(key: key); @override Widget build(BuildContext context) { @@ -44,123 +45,13 @@ class MyApp extends StatelessWidget { BlocProvider(create: (context) => ThemeBloc()), ], child: BlocBuilder( - builder: (context, themeState) { - if (!themeState.prefsAreLoaded) return const SplashScreen(); - - return MaterialApp( - title: 'Jisho Study Tool', - theme: themeState.theme.getMaterialTheme(), - initialRoute: '/', - onGenerateRoute: generateRoute, - ); - }, + builder: (context, themeState) => MaterialApp( + title: 'Jisho Study Tool', + theme: themeState.theme.getMaterialTheme(), + initialRoute: '/', + onGenerateRoute: generateRoute, + ), ), ); } } - -class _Page { - final Widget content; - final Widget titleBar; - final BottomNavigationBarItem item; - - const _Page({ - required this.content, - required this.titleBar, - required this.item, - }); -} - -class Home extends StatefulWidget { - const Home({Key? key}) : super(key: key); - - @override - State createState() => _HomeState(); -} - -class _HomeState extends State { - int pageNum = 0; - - @override - Widget build(BuildContext context) { - return BlocBuilder( - builder: (context, themeState) { - return Scaffold( - appBar: AppBar( - title: pages[pageNum].titleBar, - centerTitle: true, - backgroundColor: AppTheme.jishoGreen.background, - foregroundColor: AppTheme.jishoGreen.foreground, - ), - body: Stack( - children: [ - Positioned( - right: 30, - left: 100, - bottom: 30, - child: Image.asset( - 'assets/images/denshi_jisho_background_overlay.png', - ), - ), - pages[pageNum].content, - ], - ), - bottomNavigationBar: BottomNavigationBar( - fixedColor: AppTheme.jishoGreen.background, - currentIndex: pageNum, - onTap: (index) => setState(() { - pageNum = index; - }), - items: pages.map((p) => p.item).toList(), - showSelectedLabels: false, - showUnselectedLabels: false, - unselectedItemColor: themeState.theme.menuGreyDark.background, - ), - ); - }, - ); - } - - List<_Page> get pages => [ - const _Page( - content: SearchView(), - titleBar: Text('Search'), - item: BottomNavigationBarItem( - label: 'Search', - icon: Icon(Icons.search), - ), - ), - const _Page( - content: KanjiView(), - titleBar: Text('Kanji'), - item: BottomNavigationBarItem( - label: 'Kanji', - icon: Icon(Mdi.ideogramCjk, size: 30), - ), - ), - const _Page( - content: HistoryView(), - titleBar: Text('History'), - item: BottomNavigationBarItem( - label: 'History', - icon: Icon(Icons.history), - ), - ), - _Page( - content: Container(), - titleBar: const Text('Saved'), - item: const BottomNavigationBarItem( - label: 'Saved', - icon: Icon(Icons.bookmark), - ), - ), - const _Page( - content: SettingsView(), - titleBar: Text('Settings'), - item: BottomNavigationBarItem( - label: 'Settings', - icon: Icon(Icons.settings), - ), - ), - ]; -} diff --git a/lib/router.dart b/lib/router.dart index ccf126a..5b9b5ce 100644 --- a/lib/router.dart +++ b/lib/router.dart @@ -1,10 +1,10 @@ import 'package:flutter/material.dart'; -import 'main.dart'; +import 'view/home.dart'; import 'view/screens/search/kanji_result_page.dart'; import 'view/screens/search/search_results_page.dart'; -Route generateRoute(RouteSettings settings) { +Route generateRoute(RouteSettings settings) { final args = settings.arguments; switch (settings.name) { diff --git a/lib/view/components/history/kanji_search_item.dart b/lib/view/components/history/kanji_search_item.dart index 582fee9..15ce4c5 100644 --- a/lib/view/components/history/kanji_search_item.dart +++ b/lib/view/components/history/kanji_search_item.dart @@ -13,7 +13,8 @@ class _KanjiBox extends StatelessWidget { @override Widget build(BuildContext context) { - final ColorSet _menuColors = BlocProvider.of(context).state.theme.menuGreyLight; + final ColorSet _menuColors = + BlocProvider.of(context).state.theme.menuGreyLight; return IntrinsicHeight( child: AspectRatio( @@ -54,19 +55,23 @@ class KanjiSearchItem extends StatelessWidget { @override Widget build(BuildContext context) { return Slidable( - actionPane: const SlidableScrollActionPane(), - secondaryActions: const [ - IconSlideAction( - caption: 'Favourite', - color: Colors.yellow, - icon: Icons.star, - ), - IconSlideAction( - caption: 'Delete', - color: Colors.red, - icon: Icons.delete, - ), - ], + endActionPane: ActionPane( + motion: const ScrollMotion(), + children: [ + SlidableAction( + label: 'Favourite', + backgroundColor: Colors.yellow, + icon: Icons.star, + onPressed: (_) {}, + ), + SlidableAction( + label: 'Delete', + backgroundColor: Colors.red, + icon: Icons.delete, + onPressed: (_) {}, + ), + ], + ), child: SearchItem( onTap: () { Navigator.pushNamed(context, '/kanjiSearch', arguments: result.kanji); diff --git a/lib/view/components/history/phrase_search_item.dart b/lib/view/components/history/phrase_search_item.dart index 402a5e0..d6d4377 100644 --- a/lib/view/components/history/phrase_search_item.dart +++ b/lib/view/components/history/phrase_search_item.dart @@ -17,14 +17,19 @@ class PhraseSearchItem extends StatelessWidget { @override Widget build(BuildContext context) { return Slidable( - actionPane: const SlidableScrollActionPane(), - secondaryActions: const [ - IconSlideAction( - caption: 'Delete', - color: Colors.red, + endActionPane: ActionPane( + motion: const ScrollMotion(), + children: [ + + SlidableAction( + label: 'Delete', + backgroundColor: Colors.red, icon: Icons.delete, + onPressed: (_) {}, ), - ], + ], + + ), child: SearchItem( onTap: () => Navigator.pushNamed( context, diff --git a/lib/view/components/kanji/kanji_search_body.dart b/lib/view/components/kanji/kanji_search_body.dart index 6f04919..3ba2e76 100644 --- a/lib/view/components/kanji/kanji_search_body.dart +++ b/lib/view/components/kanji/kanji_search_body.dart @@ -90,7 +90,6 @@ class _KanjiSearchBodyState extends State ), ), AnimatedSizeAndFade( - vsync: this, fadeDuration: const Duration(milliseconds: 200), sizeDuration: const Duration(milliseconds: 300), child: _controller.value == 1 diff --git a/lib/view/components/search/language_selector.dart b/lib/view/components/search/language_selector.dart index 2ee1bf1..66255e6 100644 --- a/lib/view/components/search/language_selector.dart +++ b/lib/view/components/search/language_selector.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; import 'package:shared_preferences/shared_preferences.dart'; import '../../../models/themes/theme.dart'; @@ -11,45 +12,40 @@ class LanguageSelector extends StatefulWidget { } class _LanguageSelectorState extends State { - late final SharedPreferences prefs; + final SharedPreferences prefs = GetIt.instance.get(); late List isSelected; @override void initState() { super.initState(); - isSelected = [false, false, false]; - - SharedPreferences.getInstance().then((prefs) { - this.prefs = prefs; - setState(() { - isSelected = _getSelectedStatus() ?? isSelected; - }); - }); + isSelected = _getSelectedStatus() ?? [false, false, false]; } - void _updateSelectedStatus() { - prefs.setStringList( - 'languageSelectorStatus', - isSelected.map((b) => b ? '1' : '0').toList(), + Future _updateSelectedStatus() async => prefs.setStringList( + 'languageSelectorStatus', + isSelected.map((b) => b ? '1' : '0').toList(), + ); + + List? _getSelectedStatus() => prefs + .getStringList('languageSelectorStatus') + ?.map((s) => s == '1') + .toList(); + + Widget _languageOption(String language) => + Container( + padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), + child: Center(child: Text(language)), ); - } - - List? _getSelectedStatus() { - return prefs - .getStringList('languageSelectorStatus') - ?.map((s) => s == '1') - .toList(); - } @override Widget build(BuildContext context) { return ToggleButtons( selectedColor: AppTheme.jishoGreen.background, isSelected: isSelected, - children: const [ - _LanguageOption('Auto'), - _LanguageOption('日本語'), - _LanguageOption('English') + children: [ + _languageOption('Auto'), + _languageOption('日本語'), + _languageOption('English') ], onPressed: (buttonIndex) { setState(() { @@ -62,17 +58,3 @@ class _LanguageSelectorState extends State { ); } } - -class _LanguageOption extends StatelessWidget { - final String language; - - const _LanguageOption(this.language); - - @override - Widget build(BuildContext context) { - return Container( - padding: const EdgeInsets.symmetric(vertical: 10.0, horizontal: 20.0), - child: Center(child: Text(language)), - ); - } -} diff --git a/lib/view/components/search/search_bar.dart b/lib/view/components/search/search_bar.dart index 9a70692..1a56acf 100644 --- a/lib/view/components/search/search_bar.dart +++ b/lib/view/components/search/search_bar.dart @@ -22,9 +22,7 @@ class SearchBar extends StatelessWidget { ), ), ), - const SizedBox( - height: 10.0, - ), + const SizedBox(height: 10.0), const LanguageSelector() ], ), diff --git a/lib/view/home.dart b/lib/view/home.dart new file mode 100644 index 0000000..90e42f5 --- /dev/null +++ b/lib/view/home.dart @@ -0,0 +1,114 @@ +import 'package:flutter/material.dart'; +import 'package:mdi/mdi.dart'; + +import '../bloc/theme/theme_bloc.dart'; +import 'screens/history.dart'; +import 'screens/search/kanji_view.dart'; +import 'screens/search/search_view.dart'; +import 'screens/settings.dart'; + +class Home extends StatefulWidget { + const Home({Key? key}) : super(key: key); + + @override + State createState() => _HomeState(); +} + +class _HomeState extends State { + int pageNum = 0; + + @override + Widget build(BuildContext context) { + return BlocBuilder( + builder: (context, themeState) { + return Scaffold( + appBar: AppBar( + title: pages[pageNum].titleBar, + centerTitle: true, + backgroundColor: AppTheme.jishoGreen.background, + foregroundColor: AppTheme.jishoGreen.foreground, + ), + body: Stack( + children: [ + Positioned( + right: 30, + left: 100, + bottom: 30, + child: Image.asset( + 'assets/images/denshi_jisho_background_overlay.png', + ), + ), + pages[pageNum].content, + ], + ), + bottomNavigationBar: BottomNavigationBar( + fixedColor: AppTheme.jishoGreen.background, + currentIndex: pageNum, + onTap: (index) => setState(() { + pageNum = index; + }), + items: pages.map((p) => p.item).toList(), + showSelectedLabels: false, + showUnselectedLabels: false, + unselectedItemColor: themeState.theme.menuGreyDark.background, + ), + ); + }, + ); + } + + List<_Page> get pages => [ + const _Page( + content: SearchView(), + titleBar: Text('Search'), + item: BottomNavigationBarItem( + label: 'Search', + icon: Icon(Icons.search), + ), + ), + const _Page( + content: KanjiView(), + titleBar: Text('Kanji'), + item: BottomNavigationBarItem( + label: 'Kanji', + icon: Icon(Mdi.ideogramCjk, size: 30), + ), + ), + const _Page( + content: HistoryView(), + titleBar: Text('History'), + item: BottomNavigationBarItem( + label: 'History', + icon: Icon(Icons.history), + ), + ), + _Page( + content: Container(), + titleBar: const Text('Saved'), + item: const BottomNavigationBarItem( + label: 'Saved', + icon: Icon(Icons.bookmark), + ), + ), + const _Page( + content: SettingsView(), + titleBar: Text('Settings'), + item: BottomNavigationBarItem( + label: 'Settings', + icon: Icon(Icons.settings), + ), + ), + ]; +} + +class _Page { + final Widget content; + final Widget titleBar; + final BottomNavigationBarItem item; + + const _Page({ + required this.content, + required this.titleBar, + required this.item, + }); +} diff --git a/lib/view/screens/settings.dart b/lib/view/screens/settings.dart index 47e8503..4723513 100644 --- a/lib/view/screens/settings.dart +++ b/lib/view/screens/settings.dart @@ -17,7 +17,7 @@ class SettingsView extends StatefulWidget { } class _SettingsViewState extends State { - late final SharedPreferences prefs; + final SharedPreferences prefs = GetIt.instance.get(); bool darkThemeEnabled = false; bool autoThemeEnabled = false; @@ -25,19 +25,8 @@ class _SettingsViewState extends State { @override void initState() { super.initState(); - - SharedPreferences.getInstance().then((prefs) { - this.prefs = prefs; - _getPrefs(); - }); - } - - /// Get stored preferences and set setting page state accordingly - void _getPrefs() { - setState(() { - darkThemeEnabled = prefs.getBool('darkThemeEnabled') ?? darkThemeEnabled; - autoThemeEnabled = prefs.getBool('autoThemeEnabled') ?? autoThemeEnabled; - }); + darkThemeEnabled = prefs.getBool('darkThemeEnabled') ?? darkThemeEnabled; + autoThemeEnabled = prefs.getBool('autoThemeEnabled') ?? autoThemeEnabled; } /// Update stored preferences with values from setting page state diff --git a/pubspec.lock b/pubspec.lock index 77cb926..5161dd6 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,35 +7,35 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "22.0.0" + version: "31.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "1.7.2" + version: "2.8.0" animated_size_and_fade: dependency: "direct main" description: name: animated_size_and_fade url: "https://pub.dartlang.org" source: hosted - version: "2.1.0" + version: "3.0.0" archive: dependency: transitive description: name: archive url: "https://pub.dartlang.org" source: hosted - version: "3.1.2" + version: "3.1.6" args: dependency: transitive description: name: args url: "https://pub.dartlang.org" source: hosted - version: "2.2.0" + version: "2.3.0" async: dependency: transitive description: @@ -49,7 +49,7 @@ packages: name: bloc url: "https://pub.dartlang.org" source: hosted - version: "7.0.0" + version: "8.0.1" boolean_selector: dependency: transitive description: @@ -63,7 +63,7 @@ packages: name: build url: "https://pub.dartlang.org" source: hosted - version: "2.0.3" + version: "2.1.1" build_config: dependency: transitive description: @@ -77,42 +77,42 @@ packages: name: build_daemon url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "3.0.1" build_resolvers: dependency: transitive description: name: build_resolvers url: "https://pub.dartlang.org" source: hosted - version: "2.0.4" + version: "2.0.5" build_runner: dependency: "direct dev" description: name: build_runner url: "https://pub.dartlang.org" source: hosted - version: "2.0.6" + version: "2.1.5" build_runner_core: dependency: transitive description: name: build_runner_core url: "https://pub.dartlang.org" source: hosted - version: "7.0.1" + version: "7.2.2" built_collection: dependency: transitive description: name: built_collection url: "https://pub.dartlang.org" source: hosted - version: "5.1.0" + version: "5.1.1" built_value: dependency: transitive description: name: built_value url: "https://pub.dartlang.org" source: hosted - version: "8.1.1" + version: "8.1.3" characters: dependency: transitive description: @@ -140,7 +140,7 @@ packages: name: cli_util url: "https://pub.dartlang.org" source: hosted - version: "0.3.3" + version: "0.3.5" clock: dependency: transitive description: @@ -189,14 +189,14 @@ packages: name: csslib url: "https://pub.dartlang.org" source: hosted - version: "0.17.0" + version: "0.17.1" dart_style: dependency: transitive description: name: dart_style url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.2.0" division: dependency: "direct main" description: @@ -217,14 +217,14 @@ packages: name: ffi url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.1.2" file: dependency: transitive description: name: file url: "https://pub.dartlang.org" source: hosted - version: "6.1.0" + version: "6.1.2" fixnum: dependency: transitive description: @@ -243,7 +243,7 @@ packages: name: flutter_bloc url: "https://pub.dartlang.org" source: hosted - version: "7.2.0" + version: "8.0.0" flutter_launcher_icons: dependency: "direct dev" description: @@ -257,14 +257,14 @@ packages: name: flutter_native_splash url: "https://pub.dartlang.org" source: hosted - version: "1.2.1" + version: "1.3.2" flutter_slidable: dependency: "direct main" description: name: flutter_slidable url: "https://pub.dartlang.org" source: hosted - version: "0.6.0" + version: "1.1.0" flutter_test: dependency: "direct dev" description: flutter @@ -295,14 +295,14 @@ packages: name: glob url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" graphs: dependency: transitive description: name: graphs url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" html: dependency: transitive description: @@ -323,7 +323,7 @@ packages: name: http url: "https://pub.dartlang.org" source: hosted - version: "0.13.3" + version: "0.13.4" http_multi_server: dependency: transitive description: @@ -344,7 +344,7 @@ packages: name: image url: "https://pub.dartlang.org" source: hosted - version: "3.0.2" + version: "3.1.0" io: dependency: transitive description: @@ -365,14 +365,14 @@ packages: name: json_annotation url: "https://pub.dartlang.org" source: hosted - version: "4.1.0" + version: "4.4.0" logging: dependency: transitive description: name: logging url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "1.0.2" matcher: dependency: transitive description: @@ -400,7 +400,7 @@ packages: name: mime url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" nested: dependency: transitive description: @@ -414,7 +414,7 @@ packages: name: package_config url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" path: dependency: "direct main" description: @@ -428,63 +428,70 @@ packages: name: path_provider url: "https://pub.dartlang.org" source: hosted - version: "2.0.2" + version: "2.0.7" + path_provider_android: + dependency: transitive + description: + name: path_provider_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.9" + path_provider_ios: + dependency: transitive + description: + name: path_provider_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.7" path_provider_linux: dependency: transitive description: name: path_provider_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.2" path_provider_macos: dependency: transitive description: name: path_provider_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.4" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.1" path_provider_windows: dependency: transitive description: name: path_provider_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" - pedantic: - dependency: transitive - description: - name: pedantic - url: "https://pub.dartlang.org" - source: hosted - version: "1.11.0" + version: "2.0.4" petitparser: dependency: transitive description: name: petitparser url: "https://pub.dartlang.org" source: hosted - version: "4.2.0" + version: "4.4.0" platform: dependency: transitive description: name: platform url: "https://pub.dartlang.org" source: hosted - version: "3.0.0" + version: "3.1.0" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface url: "https://pub.dartlang.org" source: hosted - version: "2.0.1" + version: "2.0.2" pool: dependency: transitive description: @@ -498,28 +505,28 @@ packages: name: process url: "https://pub.dartlang.org" source: hosted - version: "4.2.1" + version: "4.2.4" provider: dependency: transitive description: name: provider url: "https://pub.dartlang.org" source: hosted - version: "6.0.0" + version: "6.0.1" pub_semver: dependency: transitive description: name: pub_semver url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.1.0" pubspec_parse: dependency: transitive description: name: pubspec_parse url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.1.0" sembast: dependency: "direct main" description: @@ -540,21 +547,35 @@ packages: name: shared_preferences url: "https://pub.dartlang.org" source: hosted - version: "2.0.7" + version: "2.0.9" + shared_preferences_android: + dependency: transitive + description: + name: shared_preferences_android + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.9" + shared_preferences_ios: + dependency: transitive + description: + name: shared_preferences_ios + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.8" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.3" shared_preferences_macos: dependency: transitive description: name: shared_preferences_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_platform_interface: dependency: transitive description: @@ -568,14 +589,14 @@ packages: name: shared_preferences_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.3" shelf: dependency: transitive description: @@ -685,21 +706,35 @@ packages: name: url_launcher url: "https://pub.dartlang.org" source: hosted - version: "6.0.10" + version: "6.0.17" + url_launcher_android: + dependency: transitive + description: + name: url_launcher_android + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.13" + url_launcher_ios: + dependency: transitive + description: + name: url_launcher_ios + url: "https://pub.dartlang.org" + source: hosted + version: "6.0.13" url_launcher_linux: dependency: transitive description: name: url_launcher_linux url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" url_launcher_macos: dependency: transitive description: name: url_launcher_macos url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" url_launcher_platform_interface: dependency: transitive description: @@ -713,14 +748,14 @@ packages: name: url_launcher_web url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.5" url_launcher_windows: dependency: transitive description: name: url_launcher_windows url: "https://pub.dartlang.org" source: hosted - version: "2.0.0" + version: "2.0.2" vector_math: dependency: transitive description: @@ -734,7 +769,7 @@ packages: name: watcher url: "https://pub.dartlang.org" source: hosted - version: "1.0.0" + version: "1.0.1" web_socket_channel: dependency: transitive description: @@ -748,7 +783,7 @@ packages: name: win32 url: "https://pub.dartlang.org" source: hosted - version: "2.0.5" + version: "2.3.1" xdg_directories: dependency: transitive description: @@ -762,7 +797,7 @@ packages: name: xml url: "https://pub.dartlang.org" source: hosted - version: "5.2.0" + version: "5.3.1" yaml: dependency: transitive description: @@ -772,4 +807,4 @@ packages: version: "3.1.0" sdks: dart: ">=2.14.0 <3.0.0" - flutter: ">=2.0.0" + flutter: ">=2.5.0" diff --git a/pubspec.yaml b/pubspec.yaml index 71311ed..023e5d0 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -6,13 +6,13 @@ environment: sdk: ">=2.12.0 <3.0.0" dependencies: - animated_size_and_fade: ^2.0.0 + animated_size_and_fade: ^3.0.0 confirm_dialog: ^1.0.0 division: ^0.9.0 flutter: sdk: flutter - flutter_bloc: ^7.0.1 - flutter_slidable: ^0.6.0 + flutter_bloc: ^8.0.0 + flutter_slidable: ^1.1.0 get_it: ^7.2.0 mdi: ^5.0.0-nullsafety.0 path: ^1.8.0