-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.dart
119 lines (111 loc) · 3.96 KB
/
main.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:gameshop_deals/generated/l10n.dart';
import 'package:gameshop_deals/model/cache_object_adapter.dart';
import 'package:gameshop_deals/model/cheapest_price.dart';
import 'package:gameshop_deals/model/deal.dart';
import 'package:gameshop_deals/model/filter.dart';
import 'package:gameshop_deals/model/game_lookup.dart';
import 'package:gameshop_deals/model/price_alert.dart';
import 'package:gameshop_deals/model/sort_by_enum.dart';
import 'package:gameshop_deals/model/preference.dart';
import 'package:gameshop_deals/widget/route_transitions.dart';
import 'package:gameshop_deals/utils/routes_constants.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:gameshop_deals/riverpod/theme_provider.dart';
import 'package:hive_flutter/hive_flutter.dart';
import 'package:hive/hive.dart';
import 'package:gameshop_deals/model/theme_mode_adapter_enum.dart';
import 'package:gameshop_deals/model/view_enum.dart';
import 'package:pull_to_refresh/pull_to_refresh.dart';
import 'package:gameshop_deals/utils/preferences_constants.dart' show preferenceHiveBox;
import 'package:flutter_cache_manager/src/storage/cache_object.dart';
class Logger extends ProviderObserver {
@override
void didDisposeProvider(ProviderBase provider) {
print('disposed: ${provider.name}');
}
@override
void didUpdateProvider(ProviderBase provider, Object newValue) {
print('''
{
"provider": "${provider.name ?? provider.runtimeType}",
"newValue": "$newValue"
}''');
}
@override
void mayHaveChanged(ProviderBase provider) {
print('''
{
"provider changed": "${provider.name ?? provider.runtimeType}",
}''');
super.mayHaveChanged(provider);
}
@override
void didAddProvider(ProviderBase provider, Object value) {
print('''
{
"providerAdded": "${provider.name ?? provider.runtimeType}",
"valueType": "${value.runtimeType}"
}''');
super.didAddProvider(provider, value);
}
}
Future<void> _initHive() async {
await Hive.initFlutter();
Hive
..registerAdapter<CacheObject>(CacheObjectAdapter())
..registerAdapter<ThemeMode>(ThemeModeAdapter())
..registerAdapter<View>(ViewAdapter())
..registerAdapter<GameLookup>(GameLookupAdapter())
..registerAdapter<Info>(InfoAdapter())
..registerAdapter<CheapestPrice>(CheapestPriceAdapter())
..registerAdapter<Deal>(DealAdapter())
..registerAdapter<SortBy>(SortByAdapter())
..registerAdapter<Filter>(FilterAdapter())
..registerAdapter<PriceAlert>(PriceAlertAdapter())
..registerAdapter<Preference>(PreferenceAdapter());
await Hive.openBox<dynamic>(preferenceHiveBox);
}
void main() async {
//WidgetsFlutterBinding.ensureInitialized();
await _initHive();
runApp(
ProviderScope(
//observers: [Logger()],
child: const GameShop(),
),
);
}
class GameShop extends ConsumerWidget {
const GameShop({Key key}) : super(key: key);
@override
Widget build(BuildContext context, ScopedReader watch) {
final themeMode = watch(themeProvider.state);
final themeData = watch(themeProvider);
return RefreshConfiguration(
enableLoadingWhenFailed: false,
autoLoad: true,
headerBuilder: () => WaterDropMaterialHeader(
backgroundColor: themeData.lightTheme.appBarTheme.color,
),
//enableScrollWhenRefreshCompleted: true,
child: MaterialApp(
localizationsDelegates: [
S.delegate,
RefreshLocalizations.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: S.delegate.supportedLocales,
debugShowCheckedModeBanner: false,
darkTheme: themeData.darkTheme,
theme: themeData.lightTheme,
themeMode: themeMode,
onGenerateRoute: Routes.getRoute,
initialRoute: homeRoute,
),
);
}
}