import 'dart:async'; import 'package:durt/durt.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/providers/generate_wallets.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:provider/provider.dart'; // ignore: must_be_immutable class ConfirmStoreWallet extends StatelessWidget with ChangeNotifier { ConfirmStoreWallet({ Key? validationKey, required this.generatedMnemonic, required this.generatedWallet, }) : super(key: validationKey); String? generatedMnemonic; NewWallet? generatedWallet; final TextEditingController _mnemonicController = TextEditingController(); final TextEditingController _inputRestoreWord = TextEditingController(); TextEditingController walletName = TextEditingController(); final FocusNode _wordFocus = FocusNode(); @override Widget build(BuildContext context) { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); GenerateWalletsProvider _generateWalletProvider = Provider.of(context); MyWalletsProvider _myWalletProvider = Provider.of(context); final int? _currentChest = _myWalletProvider.getCurrentChest(); SubstrateSdk _sub = Provider.of(context, listen: false); _mnemonicController.text = generatedMnemonic!; return WillPopScope( onWillPop: () { _generateWalletProvider.isAskedWordValid = false; _generateWalletProvider.askedWordColor = Colors.black; return Future.value(true); }, child: Scaffold( resizeToAvoidBottomInset: false, appBar: AppBar( toolbarHeight: 60 * ratio, leading: IconButton( icon: const Icon(Icons.arrow_back, color: Colors.black), onPressed: () { Navigator.of(context).pop(); _generateWalletProvider.isAskedWordValid = false; _generateWalletProvider.askedWordColor = Colors.black; }), title: const SizedBox( height: 22, child: Text('Enregistrer ce coffre'), )), body: Center( child: Column(children: [ const SizedBox(height: 15), SizedBox( width: 360, child: Text( 'Quel est le ${_generateWalletProvider.nbrWord + 1}ème mot de votre phrase de restauration ?', textAlign: TextAlign.center, style: TextStyle( fontSize: 17.0, color: Colors.grey[600], fontWeight: FontWeight.w400), )), TextFormField( key: const Key('askedWord'), focusNode: _wordFocus, autofocus: true, enabled: !_generateWalletProvider.isAskedWordValid, controller: _inputRestoreWord, textInputAction: TextInputAction.next, onChanged: (value) { _generateWalletProvider.checkAskedWord( value, _mnemonicController.text); }, maxLines: 1, textAlign: TextAlign.center, decoration: const InputDecoration(), style: TextStyle( fontSize: 30.0, color: _generateWalletProvider.askedWordColor, fontWeight: FontWeight.w500)), const SizedBox(height: 12), SizedBox( width: 360, child: Text( 'Choisissez un nom pour votre premier portefeuille :', textAlign: TextAlign.center, style: TextStyle( fontSize: 17.0, color: Colors.grey[600], fontWeight: FontWeight.w400), )), TextFormField( key: const Key('walletName'), focusNode: _generateWalletProvider.walletNameFocus, inputFormatters: [ FilteringTextInputFormatter.allow( RegExp('[A-Za-z|0-9|\\-|_| ]')), ], controller: walletName, textInputAction: TextInputAction.next, onChanged: (v) { _generateWalletProvider.nameChanged(); }, maxLines: 1, textAlign: TextAlign.center, decoration: const InputDecoration(), style: const TextStyle( fontSize: 30.0, color: Colors.black, fontWeight: FontWeight.w500)), Expanded( child: Align( alignment: Alignment.bottomCenter, child: SizedBox( width: 200, height: 50, child: ElevatedButton( key: const Key('confirmStorage'), style: ElevatedButton.styleFrom( elevation: 12, primary: Colors .green[400], //smoothYellow, // background onPrimary: Colors.black, // foreground ), onPressed: (_generateWalletProvider .isAskedWordValid && walletName.text != '') ? () async { final address = await _sub.importAccount( fromMnemonic: true, mnemonic: _generateWalletProvider .generatedMnemonic!, password: _generateWalletProvider .pin.text .toUpperCase(), derivePath: '//2'); await _generateWalletProvider.storeHDWChest( address, 'Mon portefeuille courant', context); _generateWalletProvider.isAskedWordValid = false; _generateWalletProvider.askedWordColor = Colors.black; _myWalletProvider.listWallets = _myWalletProvider .readAllWallets(_currentChest); await Future.delayed( const Duration(milliseconds: 50)); _myWalletProvider.rebuildWidget(); _generateWalletProvider.pin.text = ''; _generateWalletProvider .mnemonicController.text = ''; Navigator.pushAndRemoveUntil(context, MaterialPageRoute(builder: (context) { return UnlockingWallet( wallet: _myWalletProvider .getDefaultWallet(), action: "mywallets", ); }), ModalRoute.withName('/')); } : null, child: const Text('Confirmer', style: TextStyle(fontSize: 28))), ))), const SizedBox(height: 70), Text('TRICHE PENDANT ALPHA: ' + _mnemonicController.text, style: const TextStyle( fontSize: 10.0, color: Colors.black, fontWeight: FontWeight.normal)), ]), ), )); } }