diff --git a/lib/models/my_wallets.dart b/lib/models/my_wallets.dart index 3edd56b710d3818d30ac8f87ecc78912fe50ef08..cf953499ce19b8c100f0f3f380a0f76df0e33286 100644 --- a/lib/models/my_wallets.dart +++ b/lib/models/my_wallets.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'dart:async'; import 'package:gecko/globals.dart'; import 'package:gecko/models/wallet_data.dart'; +import 'package:gecko/screens/home.dart'; class MyWalletsProvider with ChangeNotifier { List<WalletData> listWallets = []; @@ -71,9 +72,13 @@ class MyWalletsProvider with ChangeNotifier { await walletBox.clear(); await chestBox.clear(); await configBox.delete('defaultWallet'); - rebuildWidget(); + // await Future.delayed(const Duration(milliseconds: 50)); + // notifyListeners(); - Navigator.pop(context); + await Navigator.of(context).pushNamedAndRemoveUntil( + '/', + ModalRoute.withName('/'), + ); } return 0; } catch (e) { diff --git a/lib/screens/myWallets/change_pin.dart b/lib/screens/myWallets/change_pin.dart index 49a9b7466b0e302b8ce4e10a4b02710c7610c8d2..5abfca404b5191672f1476001c965089b2273d86 100644 --- a/lib/screens/myWallets/change_pin.dart +++ b/lib/screens/myWallets/change_pin.dart @@ -49,6 +49,13 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier { body: Center( child: SafeArea( child: Column(children: <Widget>[ + StatefulWrapper( + onInit: () async { + _newWalletFile = + await _changePin.changePin(walletProvider.pinCode); + }, + child: Container(), + ), const SizedBox(height: 80), Text( 'Choisissez un code secret autogénéré :', @@ -112,3 +119,27 @@ class ChangePinScreen extends StatelessWidget with ChangeNotifier { ); } } + +class StatefulWrapper extends StatefulWidget { + final Function onInit; + final Widget child; + const StatefulWrapper({Key key, @required this.onInit, @required this.child}) + : super(key: key); + @override + _StatefulWrapperState createState() => _StatefulWrapperState(); +} + +class _StatefulWrapperState extends State<StatefulWrapper> { + @override + void initState() { + if (widget.onInit != null) { + widget.onInit(); + } + super.initState(); + } + + @override + Widget build(BuildContext context) { + return widget.child; + } +} diff --git a/lib/screens/myWallets/chest_options.dart b/lib/screens/myWallets/chest_options.dart index dfae9b70d293fcebc416c1054fe858be3fe5e562..e0c1d1c37b4619864b9ab48ab4964c265ce4e9fe 100644 --- a/lib/screens/myWallets/chest_options.dart +++ b/lib/screens/myWallets/chest_options.dart @@ -46,7 +46,7 @@ class ChestOptions extends StatelessWidget { key: const Key('changePin'), onTap: () async { // await _chestProvider.changePin(context, cesiumWallet); - walletProvider.pinCode = await Navigator.push( + String pinResult = await Navigator.push( context, MaterialPageRoute( builder: (context) { @@ -57,6 +57,10 @@ class ChestOptions extends StatelessWidget { }, ), ); + + if (pinResult != null) { + walletProvider.pinCode = pinResult; + } }, child: SizedBox( height: 50, diff --git a/lib/screens/myWallets/confirm_wallet_storage.dart b/lib/screens/myWallets/confirm_wallet_storage.dart index 6861561239e206277e01bc87a4851a90d39d58f6..ef743245caef14af3c61563f2d3747d8741be5a0 100644 --- a/lib/screens/myWallets/confirm_wallet_storage.dart +++ b/lib/screens/myWallets/confirm_wallet_storage.dart @@ -137,7 +137,7 @@ class ConfirmStoreWallet extends StatelessWidget with ChangeNotifier { onPressed: (_generateWalletProvider .isAskedWordValid && walletName.text != '') - ? () { + ? () async { _generateWalletProvider.storeHDWChest( generatedWallet, walletName.text, @@ -149,16 +149,16 @@ class ConfirmStoreWallet extends StatelessWidget with ChangeNotifier { _myWalletProvider.listWallets = _myWalletProvider .readAllWallets(_currentChest); - scheduleMicrotask(() { - _walletOptions.reloadBuild(); - _myWalletProvider.rebuildWidget(); - }); + await Future.delayed( + const Duration(milliseconds: 50)); + _myWalletProvider.rebuildWidget(); Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) { return UnlockingWallet( wallet: _myWalletProvider.getDefaultWallet( - configBox.get('currentChest')), + configBox.get('currentChest'), + ), action: "mywallets", ); }), ModalRoute.withName('/')); diff --git a/lib/screens/settings.dart b/lib/screens/settings.dart index c2b9bf89c1e7be35546cf880747265c81b4e2544..4934d67548b6ee3b7e93d0321eac5508d1d35668 100644 --- a/lib/screens/settings.dart +++ b/lib/screens/settings.dart @@ -94,9 +94,7 @@ class SettingsScreen extends StatelessWidget { ), onPressed: () async => { log.i('Suppression de tous les wallets'), - await _myWallets - .deleteAllWallet(context) - .then((v) => _homeProvider.rebuildWidget()) + await _myWallets.deleteAllWallet(context) }, child: const Text("EFFACER TOUS MES PORTEFEUILLES", style: TextStyle(fontSize: 20)))))),