diff --git a/lib/screens/myWallets/walletsHome.dart b/lib/screens/myWallets/walletsHome.dart index 9f6dace..370cc13 100644 --- a/lib/screens/myWallets/walletsHome.dart +++ b/lib/screens/myWallets/walletsHome.dart @@ -57,7 +57,65 @@ class WalletsHome extends StatelessWidget { body: SafeArea( child: !isWalletsExists ? NoKeyChainScreen() - : myWalletsList(context))); + : myWalletsTiles(context))); + } + + Widget myWalletsTiles(BuildContext context) { + MyWalletsProvider _myWalletProvider = + Provider.of(context); + + final bool isWalletsExists = _myWalletProvider.checkIfWalletExist(); + + if (!isWalletsExists) { + return Text(''); + } + + if (_myWalletProvider.listWallets == '') { + return Expanded( + child: Center( + child: Text( + 'Veuillez générer votre premier portefeuille', + style: TextStyle(fontSize: 17, fontWeight: FontWeight.w500), + ))); + } + + List _listWallets = _myWalletProvider.listWallets.split('\n'); + // final int nbrOfWallets = _listWallets.length; + print(_listWallets); + + return GridView.count( + crossAxisCount: 2, + childAspectRatio: 1, + crossAxisSpacing: 0, + mainAxisSpacing: 0, + children: [ + for (String _repository in _listWallets) + Padding( + padding: EdgeInsets.all(16), + child: ClipRRect( + borderRadius: BorderRadius.all(Radius.circular(12)), + child: ListTile( + // contentPadding: const EdgeInsets.only(left: 7.0), + tileColor: Colors.green[100], + // leading: Text('IMAGE'), + + // subtitle: Text(_repository.split(':')[3], + // style: TextStyle(fontSize: 12.0, fontFamily: 'Monospace')), + title: Center( + child: Text(_repository.split(':')[1], + style: TextStyle(fontSize: 16.0))), + // dense: true, + onTap: () { + Navigator.push(context, + MaterialPageRoute(builder: (context) { + return UnlockingWallet( + walletNbr: int.parse(_repository.split(':')[0]), + walletName: _repository.split(':')[1], + derivation: int.parse(_repository.split(':')[2])); + })); + }, + ))) + ]); } Widget myWalletsList(BuildContext context) { diff --git a/lib/screens/myWallets/walletsHome_old.dart b/lib/screens/myWallets/walletsHome_old.dart new file mode 100644 index 0000000..9f6dace --- /dev/null +++ b/lib/screens/myWallets/walletsHome_old.dart @@ -0,0 +1,157 @@ +import 'package:flutter/services.dart'; +import 'package:gecko/models/myWallets.dart'; +import 'package:gecko/models/walletOptions.dart'; +import 'package:flutter/material.dart'; +import 'package:gecko/screens/myWallets/unlockingWallet.dart'; +import 'package:gecko/screens/onBoarding/0_noKeychainFound.dart'; +import 'package:provider/provider.dart'; + +// ignore: must_be_immutable +class WalletsHome extends StatelessWidget { + final _derivationKey = GlobalKey(); + int firstWalletDerivation; + + @override + Widget build(BuildContext context) { + SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); + MyWalletsProvider myWalletProvider = + Provider.of(context); + WalletOptionsProvider _walletOptions = + Provider.of(context); + _walletOptions.isWalletUnlock = false; + myWalletProvider.listWallets = myWalletProvider.getAllWalletsNames(); + final bool isWalletsExists = myWalletProvider.checkIfWalletExist(); + + if (myWalletProvider.listWallets != '') { + firstWalletDerivation = + int.parse(myWalletProvider.listWallets.split('\n')[0].split(':')[2]); + } + + return Scaffold( + appBar: AppBar( + title: Text('Mes portefeuilles', + style: TextStyle(color: Colors.grey[850])), + backgroundColor: Color(0xffFFD58D), + ), + floatingActionButton: Visibility( + visible: (isWalletsExists && firstWalletDerivation != -1), + child: Container( + height: 80.0, + width: 80.0, + child: FittedBox( + child: FloatingActionButton( + heroTag: "buttonGenerateWallet", + onPressed: () { + showDialog( + context: context, + builder: (BuildContext context) { + return addNewDerivation(context, 1); + }); + }, + child: Container( + height: 40, + width: 40, + child: Icon(Icons.person_add_alt_1_rounded, + color: Colors.grey[850])), + backgroundColor: Color(0xffEFEFBF))))), + body: SafeArea( + child: !isWalletsExists + ? NoKeyChainScreen() + : myWalletsList(context))); + } + + Widget myWalletsList(BuildContext context) { + MyWalletsProvider _myWalletProvider = + Provider.of(context); + + final bool isWalletsExists = _myWalletProvider.checkIfWalletExist(); + + if (!isWalletsExists) { + return Text(''); + } + + if (_myWalletProvider.listWallets == '') { + return Expanded( + child: Center( + child: Text( + 'Veuillez générer votre premier portefeuille', + style: TextStyle(fontSize: 17, fontWeight: FontWeight.w500), + ))); + } + + List _listWallets = _myWalletProvider.listWallets.split('\n'); + + return Expanded( + child: ListView(children: [ + SizedBox(height: 8), + for (String _repository in _listWallets) + ListTile( + contentPadding: const EdgeInsets.only(left: 7.0), + leading: Padding( + padding: const EdgeInsets.all(6.0), + child: Text("0 Ğ1", style: TextStyle(fontSize: 14.0))), + // subtitle: Text(_repository.split(':')[3], + // style: TextStyle(fontSize: 12.0, fontFamily: 'Monospace')), + title: + Text(_repository.split(':')[1], style: TextStyle(fontSize: 16.0)), + dense: true, + onTap: () { + Navigator.push(context, MaterialPageRoute(builder: (context) { + return UnlockingWallet( + walletNbr: int.parse(_repository.split(':')[0]), + walletName: _repository.split(':')[1], + derivation: int.parse(_repository.split(':')[2])); + })); + }, + ) + ])); + } + + Widget addNewDerivation(context, int _walletNbr) { + final TextEditingController _newDerivationName = TextEditingController(); + MyWalletsProvider _myWalletProvider = + Provider.of(context); + + return AlertDialog( + content: Stack( + clipBehavior: Clip.hardEdge, + children: [ + Form( + key: _derivationKey, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text('Nom du portefeuille:'), + Padding( + padding: EdgeInsets.all(8.0), + child: TextFormField( + controller: _newDerivationName, + textAlign: TextAlign.center, + autofocus: true, + ), + ), + SizedBox(height: 20), + Padding( + padding: const EdgeInsets.all(8.0), + child: ElevatedButton( + style: ElevatedButton.styleFrom( + elevation: 1, + primary: Color(0xffFFD68E), // background + onPrimary: Colors.black, // foreground + ), + onPressed: () async { + await _myWalletProvider + .generateNewDerivation( + context, _newDerivationName.text, _walletNbr) + .then((_) => _newDerivationName.text == ''); + }, + child: Text("Créer")), + ) + ], + ), + ), + ], + ), + ); + } +}