Merge redesign part 6.
M committed
Sep 14, 2020 at 15:08 UTC
d67ab4934dae902da616bfd104eaf360c0359e54
4 files changed
+143
-81
lib/main.dart
+37
-29
@@ -1,4 +1,5 @@
1
import 'package:cake_wallet/reactions/bootstrap.dart';
2
+import 'package:cake_wallet/routes.dart';
3
import 'package:cake_wallet/store/app_store.dart';
4
import 'package:cake_wallet/store/authentication_store.dart';
5
import 'package:cake_wallet/core/auth_service.dart';
@@ -55,6 +56,8 @@ import 'package:cake_wallet/src/stores/seed_language/seed_language_store.dart';
56
57
bool isThemeChangerRegistered = false;
58
59
+final navigatorKey = GlobalKey<NavigatorState>();
60
+
61
void main() async {
62
WidgetsFlutterBinding.ensureInitialized();
63
@@ -188,7 +191,9 @@ Future<void> initialSetup(
191
tradesSource: tradesSource,
192
templates: templates,
193
exchangeTemplates: exchangeTemplates);
191
- await bootstrap(fiatConvertationService: fiatConvertationService);
194
+ await bootstrap(
195
+ fiatConvertationService: fiatConvertationService,
196
+ navigatorKey: navigatorKey);
197
monero_wallet.onStartup();
198
}
199
@@ -252,34 +257,37 @@ class MaterialAppWithTheme extends StatelessWidget {
257
statusBarBrightness: statusBarBrightness,
258
statusBarIconBrightness: statusBarIconBrightness));
259
255
- return MaterialApp(
256
- debugShowCheckedModeBanner: false,
257
- theme: theme.getTheme(),
258
- localizationsDelegates: [
259
- S.delegate,
260
- GlobalCupertinoLocalizations.delegate,
261
- GlobalMaterialLocalizations.delegate,
262
- GlobalWidgetsLocalizations.delegate,
263
- ],
264
- supportedLocales: S.delegate.supportedLocales,
265
- locale: Locale(currentLanguage.getCurrentLanguage()),
266
- onGenerateRoute: (settings) => Router.generateRoute(
267
- sharedPreferences: sharedPreferences,
268
- walletListService: walletListService,
269
- walletService: walletService,
270
- userService: userService,
271
- settings: settings,
272
- priceStore: priceStore,
273
- walletStore: walletStore,
274
- syncStore: syncStore,
275
- balanceStore: balanceStore,
276
- settingsStore: settingsStore,
277
- contacts: contacts,
278
- nodes: nodes,
279
- trades: trades,
280
- transactionDescriptions: transactionDescriptions),
281
- home: Root(
282
- authenticationStore: getIt.get<AuthenticationStore>(),
260
+ return Root(
261
+ authenticationStore: getIt.get<AuthenticationStore>(),
262
+ child: MaterialApp(
263
+ navigatorKey: navigatorKey,
264
+ debugShowCheckedModeBanner: false,
265
+ theme: theme.getTheme(),
266
+ localizationsDelegates: [
267
+ S.delegate,
268
+ GlobalCupertinoLocalizations.delegate,
269
+ GlobalMaterialLocalizations.delegate,
270
+ GlobalWidgetsLocalizations.delegate,
271
+ ],
272
+ supportedLocales: S.delegate.supportedLocales,
273
+ locale: Locale(currentLanguage.getCurrentLanguage()),
274
+ onGenerateRoute: (settings) => Router.generateRoute(
275
+ sharedPreferences: sharedPreferences,
276
+ walletListService: walletListService,
277
+ walletService: walletService,
278
+ userService: userService,
279
+ settings: settings,
280
+ priceStore: priceStore,
281
+ walletStore: walletStore,
282
+ syncStore: syncStore,
283
+ balanceStore: balanceStore,
284
+ settingsStore: settingsStore,
285
+ contacts: contacts,
286
+ nodes: nodes,
287
+ trades: trades,
288
+ transactionDescriptions: transactionDescriptions),
289
+ initialRoute: Routes.login, // FIXME: get initial route!
290
+ // home: Container(color: Colors.blue),
291
));
292
}
293
}
lib/reactions/bootstrap.dart
+25
-3
@@ -1,7 +1,13 @@
1
import 'dart:async';
2
3
import 'package:cake_wallet/core/key_service.dart';
4
+import 'package:cake_wallet/router.dart';
5
+import 'package:cake_wallet/routes.dart';
6
import 'package:cake_wallet/src/domain/common/sync_status.dart';
7
+import 'package:cake_wallet/src/screens/auth/auth_page.dart';
8
+import 'package:cake_wallet/src/screens/dashboard/dashboard_page.dart';
9
+import 'package:flutter/cupertino.dart';
10
+import 'package:flutter/widgets.dart';
11
import 'package:mobx/mobx.dart';
12
import 'package:cake_wallet/di.dart';
13
import 'package:shared_preferences/shared_preferences.dart';
@@ -24,8 +30,7 @@ import 'package:cake_wallet/store/dashboard/fiat_convertation_store.dart';
30
// FIXME: move me
31
Future<void> loadCurrentWallet() async {
32
final appStore = getIt.get<AppStore>();
27
- final name = 'test';
28
- getIt.get<SharedPreferences>().getString('current_wallet_name');
33
+ final name = getIt.get<SharedPreferences>().getString('current_wallet_name');
34
final typeRaw =
35
getIt.get<SharedPreferences>().getInt('current_wallet_type') ?? 0;
36
final type = deserializeFromInt(typeRaw);
@@ -55,7 +60,8 @@ ReactionDisposer _onCurrentFiatCurrencyChangeDisposer;
60
Timer _reconnectionTimer;
61
62
Future<void> bootstrap(
58
- {FiatConvertationService fiatConvertationService}) async {
63
+ {FiatConvertationService fiatConvertationService,
64
+ GlobalKey<NavigatorState> navigatorKey}) async {
65
final authenticationStore = getIt.get<AuthenticationStore>();
66
final settingsStore = getIt.get<SettingsStore>();
67
final fiatConvertationStore = getIt.get<FiatConvertationStore>();
@@ -69,10 +75,26 @@ Future<void> bootstrap(
75
76
_initialAuthReaction ??= autorun((_) async {
77
final state = authenticationStore.state;
78
+ print(state);
79
80
if (state == AuthenticationState.installed) {
81
await loadCurrentWallet();
82
}
83
+
84
+ if (state == AuthenticationState.installed) {
85
+ await navigatorKey.currentState
86
+ .pushAndRemoveUntil(createLoginRoute(), (_) => false);
87
+ }
88
+
89
+ if (state == AuthenticationState.allowed) {
90
+ await navigatorKey.currentState
91
+ .pushAndRemoveUntil(createDashboardRoute(), (_) => false);
92
+ }
93
+
94
+ if (state == AuthenticationState.denied) {
95
+ await navigatorKey.currentState
96
+ .pushAndRemoveUntil(createWelcomeRoute(), (_) => false);
97
+ }
98
});
99
100
_onCurrentWalletChangeReaction ??=
lib/router.dart
+15
-13
@@ -95,6 +95,15 @@ import 'package:cake_wallet/src/screens/new_wallet/new_wallet_type_page.dart';
95
import 'package:cake_wallet/src/screens/send/send_template_page.dart';
96
import 'package:cake_wallet/src/screens/exchange/exchange_template_page.dart';
97
98
+CupertinoPageRoute<void> createDashboardRoute() =>
99
+ CupertinoPageRoute<void>(builder: (_) => getIt.get<DashboardPage>());
100
+
101
+CupertinoPageRoute<void> createLoginRoute() => CupertinoPageRoute<void>(
102
+ builder: (context) => getIt.get<AuthPage>(instanceName: 'login'));
103
+
104
+MaterialPageRoute<void> createWelcomeRoute() =>
105
+ MaterialPageRoute<void>(builder: (_) => createWelcomePage());
106
+
107
class Router {
108
static Route<dynamic> generateRoute(
109
{SharedPreferences sharedPreferences,
@@ -239,7 +248,7 @@ class Router {
248
: 'English'; // FIXME: Unnamed constant; English default and only one language for bitcoin.
249
250
final walletRestorationFromKeysVM =
242
- getIt.get<WalletRestorationFromKeysVM>(param1: [type, language]);
251
+ getIt.get<WalletRestorationFromKeysVM>(param1: [type, language]);
252
253
return CupertinoPageRoute<void>(
254
builder: (_) => RestoreWalletFromKeysPage(
@@ -255,7 +264,8 @@ class Router {
264
265
case Routes.sendTemplate:
266
return CupertinoPageRoute<void>(
258
- fullscreenDialog: true, builder: (_) => getIt.get<SendTemplatePage>());
267
+ fullscreenDialog: true,
268
+ builder: (_) => getIt.get<SendTemplatePage>());
269
270
case Routes.receive:
271
return CupertinoPageRoute<void>(
@@ -320,16 +330,8 @@ class Router {
330
builder: (_) => getIt.get<NodeCreateOrEditPage>());
331
332
case Routes.login:
323
- return CupertinoPageRoute<void>(builder: (context) {
324
- final authenticationStore = Provider.of<AuthenticationStore>(context);
325
-
326
- return createLoginPage(
327
- sharedPreferences: sharedPreferences,
328
- userService: userService,
329
- walletService: walletService,
330
- walletListService: walletListService,
331
- authenticationStore: authenticationStore);
332
- });
333
+ return CupertinoPageRoute<void>(
334
+ builder: (context) => getIt.get<AuthPage>(instanceName: 'login'));
335
336
case Routes.accountCreation:
337
return CupertinoPageRoute<String>(
@@ -361,7 +363,7 @@ class Router {
363
return MaterialPageRoute<void>(
364
builder: (_) => getIt.get<ExchangeConfirmPage>());
365
364
- //ExchangeConfirmPage(trade: settings.arguments as Trade));
366
+ //ExchangeConfirmPage(trade: settings.arguments as Trade));
367
368
case Routes.tradeDetails:
369
return MaterialPageRoute<void>(builder: (context) {
lib/src/screens/root/root.dart
+66
-36
@@ -25,10 +25,12 @@ import 'package:cake_wallet/src/screens/auth/auth_page.dart';
25
import 'package:cake_wallet/src/screens/welcome/create_welcome_page.dart';
26
27
class Root extends StatefulWidget {
28
- Root({Key key, this.authenticationStore, this.appStore}) : super(key: key);
28
+ Root({Key key, this.authenticationStore, this.appStore, this.child})
29
+ : super(key: key);
30
31
final AuthenticationStore authenticationStore;
32
final AppStore appStore;
33
+ final Widget child;
34
35
@override
36
RootState createState() => RootState();
@@ -37,12 +39,18 @@ class Root extends StatefulWidget {
39
class RootState extends State<Root> with WidgetsBindingObserver {
40
bool _isInactive;
41
bool _postFrameCallback;
42
+ // GlobalKey<NavigatorState> _navKey;
43
44
@override
45
void initState() {
46
_isInactive = false;
47
_postFrameCallback = false;
48
WidgetsBinding.instance.addObserver(this);
49
+
50
+ // WidgetsBinding.instance.addPostFrameCallback((_) {
51
+ // _navKey.currentState.pushNamed(Routes.login);
52
+ // });
53
+
54
super.initState();
55
}
56
@@ -69,6 +77,8 @@ class RootState extends State<Root> with WidgetsBindingObserver {
77
78
@override
79
Widget build(BuildContext context) {
80
+ return widget.child;
81
+
82
// _authenticationStore = Provider.of<AuthenticationStore>(context);
83
// final sharedPreferences = Provider.of<SharedPreferences>(context);
84
// final walletListService = Provider.of<WalletListService>(context);
@@ -82,39 +92,59 @@ class RootState extends State<Root> with WidgetsBindingObserver {
92
// final walletStore = Provider.of<WalletStore>(context);
93
// final settingsStore = Provider.of<SettingsStore>(context);
94
85
- if (_isInactive && !_postFrameCallback) {
86
- _postFrameCallback = true;
87
-
88
- WidgetsBinding.instance.addPostFrameCallback((_) {
89
- Navigator.of(context).pushNamed(Routes.unlock,
90
- arguments: (bool isAuthenticatedSuccessfully, AuthPageState auth) {
91
- if (!isAuthenticatedSuccessfully) {
92
- return;
93
- }
94
-
95
- setState(() {
96
- _postFrameCallback = false;
97
- _isInactive = false;
98
- });
99
- auth.close();
100
- });
101
- });
102
- }
103
-
104
- return Observer(builder: (_) {
105
- final state = widget.authenticationStore.state;
106
-
107
- if (state == AuthenticationState.denied) {
108
- return createWelcomePage();
109
- }
110
-
111
- if (state == AuthenticationState.installed) {
112
- return getIt.get<AuthPage>(instanceName: 'login');
113
- }
114
-
115
- if (state == AuthenticationState.allowed) {
116
- return getIt.get<DashboardPage>();
117
- }
95
+ // if (_isInactive && !_postFrameCallback) {
96
+ // _postFrameCallback = true;
97
+
98
+ // WidgetsBinding.instance.addPostFrameCallback((_) {
99
+ // Navigator.of(context).pushNamed(Routes.unlock,
100
+ // arguments: (bool isAuthenticatedSuccessfully, AuthPageState auth) {
101
+ // if (!isAuthenticatedSuccessfully) {
102
+ // return;
103
+ // }
104
+
105
+ // setState(() {
106
+ // _postFrameCallback = false;
107
+ // _isInactive = false;
108
+ // });
109
+ // auth.close();
110
+ // });
111
+ // });
112
+ // }
113
+
114
+ // return Navigator(
115
+ // key: _navKey,
116
+ // initialRoute: Routes.welcome,
117
+ // onGenerateRoute: Router.generateRoute(
118
+ // sharedPreferences: sharedPreferences,
119
+ // walletListService: walletListService,
120
+ // walletService: walletService,
121
+ // userService: userService,
122
+ // settings: settings,
123
+ // priceStore: priceStore,
124
+ // walletStore: walletStore,
125
+ // syncStore: syncStore,
126
+ // balanceStore: balanceStore,
127
+ // settingsStore: settingsStore,
128
+ // contacts: contacts,
129
+ // nodes: nodes,
130
+ // trades: trades,
131
+ // transactionDescriptions: transactionDescriptions),
132
+ // );
133
+
134
+ // return Observer(builder: (_) {
135
+ // final state = widget.authenticationStore.state;
136
+
137
+ // if (state == AuthenticationState.denied) {
138
+ // return createWelcomePage();
139
+ // }
140
+
141
+ // if (state == AuthenticationState.installed) {
142
+ // return getIt.get<AuthPage>(instanceName: 'login');
143
+ // }
144
+
145
+ // if (state == AuthenticationState.allowed) {
146
+ // return getIt.get<DashboardPage>();
147
+ // }
148
149
// if (state == AuthenticationState.denied) {
150
// return createWelcomePage();
@@ -148,7 +178,7 @@ class RootState extends State<Root> with WidgetsBindingObserver {
178
// _authenticationStore.state = AuthenticationState.authenticated);
179
// }
180
151
- return Container(color: Colors.white);
152
- });
181
+ // return Container(color: Colors.white);
182
+ // });
183
}
184
}