Upgrade dependencies

adapt-navigator
Oystein Kristoffer Tveit 2021-12-06 20:26:52 +01:00
parent 4e60f528cb
commit 067ae564ce
13 changed files with 313 additions and 304 deletions

View File

@ -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<ThemeEvent, ThemeState> {
bool prefsAreLoaded = false;
ThemeBloc() : super(const LightThemeState()) {
SharedPreferences.getInstance().then((prefs) {
prefsAreLoaded = true;
add(
SetTheme(
themeIsDark: prefs.getBool('darkThemeEnabled') ?? false,
),
);
});
}
on<SetTheme>(
(event, emit) => emit(
event.themeIsDark ? const DarkThemeState() : const LightThemeState(),
),
);
@override
Stream<ThemeState> mapEventToState(ThemeEvent event) async* {
if (event is SetTheme)
yield event.themeIsDark
? DarkThemeState(prefsAreLoaded: prefsAreLoaded)
: LightThemeState(prefsAreLoaded: prefsAreLoaded);
add(
SetTheme(
themeIsDark: GetIt.instance
.get<SharedPreferences>()
.getBool('darkThemeEnabled') ??
false,
),
);
}
}

View File

@ -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();

View File

@ -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<void> 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>(database);
}
Future<void> setupSharedPreferences() async {
final SharedPreferences prefs = await SharedPreferences.getInstance();
GetIt.instance.registerSingleton<SharedPreferences>(prefs);
}
Future<void> 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<Database>(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<ThemeBloc, ThemeState>(
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<StatefulWidget> createState() => _HomeState();
}
class _HomeState extends State<Home> {
int pageNum = 0;
@override
Widget build(BuildContext context) {
return BlocBuilder<ThemeBloc, ThemeState>(
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),
),
),
];
}

View File

@ -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<dynamic> generateRoute(RouteSettings settings) {
Route<Widget> generateRoute(RouteSettings settings) {
final args = settings.arguments;
switch (settings.name) {

View File

@ -13,7 +13,8 @@ class _KanjiBox extends StatelessWidget {
@override
Widget build(BuildContext context) {
final ColorSet _menuColors = BlocProvider.of<ThemeBloc>(context).state.theme.menuGreyLight;
final ColorSet _menuColors =
BlocProvider.of<ThemeBloc>(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);

View File

@ -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,

View File

@ -90,7 +90,6 @@ class _KanjiSearchBodyState extends State<KanjiSearchBody>
),
),
AnimatedSizeAndFade(
vsync: this,
fadeDuration: const Duration(milliseconds: 200),
sizeDuration: const Duration(milliseconds: 300),
child: _controller.value == 1

View File

@ -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<LanguageSelector> {
late final SharedPreferences prefs;
final SharedPreferences prefs = GetIt.instance.get<SharedPreferences>();
late List<bool> 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<void> _updateSelectedStatus() async => prefs.setStringList(
'languageSelectorStatus',
isSelected.map((b) => b ? '1' : '0').toList(),
);
List<bool>? _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<bool>? _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 <Widget>[
_LanguageOption('Auto'),
_LanguageOption('日本語'),
_LanguageOption('English')
children: <Widget>[
_languageOption('Auto'),
_languageOption('日本語'),
_languageOption('English')
],
onPressed: (buttonIndex) {
setState(() {
@ -62,17 +58,3 @@ class _LanguageSelectorState extends State<LanguageSelector> {
);
}
}
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)),
);
}
}

View File

@ -22,9 +22,7 @@ class SearchBar extends StatelessWidget {
),
),
),
const SizedBox(
height: 10.0,
),
const SizedBox(height: 10.0),
const LanguageSelector()
],
),

114
lib/view/home.dart Normal file
View File

@ -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<StatefulWidget> createState() => _HomeState();
}
class _HomeState extends State<Home> {
int pageNum = 0;
@override
Widget build(BuildContext context) {
return BlocBuilder<ThemeBloc, ThemeState>(
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,
});
}

View File

@ -17,7 +17,7 @@ class SettingsView extends StatefulWidget {
}
class _SettingsViewState extends State<SettingsView> {
late final SharedPreferences prefs;
final SharedPreferences prefs = GetIt.instance.get<SharedPreferences>();
bool darkThemeEnabled = false;
bool autoThemeEnabled = false;
@ -25,19 +25,8 @@ class _SettingsViewState extends State<SettingsView> {
@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

View File

@ -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"

View File

@ -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