Separate screen for generating wallets; Rename wallets screens files;

This commit is contained in:
poka 2021-01-13 00:00:11 +01:00
parent 8ccddfeac2
commit a2698a244b
8 changed files with 478 additions and 441 deletions

View File

@ -28,13 +28,13 @@ Future<String> getRandomEndpoint() async {
// print(_json);
// final _list = _json[];
final _list = ['https://g1.librelois.fr/gva'];
final _endpoint = getRandomElement(_list);
final _listEndpoints = ['https://g1.librelois.fr/gva'];
final _endpoint = getRandomElement(_listEndpoints);
print('ENDPOINT: ' + _endpoint);
// http.post(_endpoint);
final response = await http.post(_endpoint);
if (response.statusCode != 200) {
if (response.statusCode != 400) {
print('Endpoint statutcode: ' + response.statusCode.toString());
// _endpoint = getRandomElement(_list);
return 'HS';
@ -47,13 +47,13 @@ Future<void> main() async {
String randomEndpoint; // = await getRandomEndpoint();
int i = 0;
do {
print(i);
if (i >= 3) {
print('NO VALID ENDPOINT FOUND !');
break;
}
if (i != 0) {
await Future.delayed(Duration(milliseconds: 500));
print(i.toString() + ' ème essai de recherche de endpoint GVA.');
await Future.delayed(Duration(milliseconds: 300));
}
randomEndpoint = await getRandomEndpoint();
i++;

View File

@ -1,429 +0,0 @@
import 'package:gecko/ui/myWallets.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:dubp/dubp.dart';
import 'package:sentry/sentry.dart' as sentry;
import 'dart:io';
import 'dart:async';
import 'package:path_provider/path_provider.dart';
class GenerateWalletScreen extends StatefulWidget {
const GenerateWalletScreen({Key keyGenWallet}) : super(key: keyGenWallet);
@override
GenerateWalletState createState() => GenerateWalletState();
}
class GenerateWalletState extends State<GenerateWalletScreen> {
GlobalKey<MyWalletState> _keyMyWallets = GlobalKey();
GlobalKey<ValidStoreWalletState> _keyValidWallets = GlobalKey();
void initState() {
super.initState();
DubpRust.setup();
}
TextEditingController _mnemonicController = new TextEditingController();
TextEditingController _pubkey = new TextEditingController();
TextEditingController _pin = new TextEditingController();
String generatedMnemonic;
bool walletIsGenerated = false;
NewWallet actualWallet;
final formKey = GlobalKey<FormState>();
bool hasError = false;
String validPin = 'NO PIN';
String currentText = "";
var pinColor = Colors.grey[300];
@override
Widget build(BuildContext context) {
return Scaffold(
floatingActionButton: Container(
height: 80.0,
width: 80.0,
child: FittedBox(
child: FloatingActionButton(
heroTag: "buttonGenerateWallet",
onPressed: () async {
await generateMnemonic();
// print(resultScan);
// if (resultScan != 'false') {
// onTabTapped(0);
// }
},
child: Container(
height: 40.0,
width: 40.0,
child: Icon(Icons.person_add_alt_1_rounded)),
backgroundColor: Color(
0xffEFEFBF), //Color(0xffFFD68E), //Color.fromARGB(500, 204, 255, 255),
),
),
),
body: SafeArea(
child: Column(children: <Widget>[
FutureBuilder<bool>(
future: checkIfWalletExist('tata'),
builder: (context, fSnapshot) {
if (fSnapshot.hasData)
return Visibility(
visible: (!fSnapshot.data && !walletIsGenerated),
child: Column(children: <Widget>[
SizedBox(height: 80),
Center(
child: Text(
"Vous n'avez encore généré aucun portefeuille.",
style: TextStyle(
fontSize: 20, fontWeight: FontWeight.w500),
textAlign: TextAlign.center)),
SizedBox(height: 50),
RaisedButton(
color: Color(0xffFFD68E),
onPressed: () => generateMnemonic(),
child: Text('Générer un portefeuille',
style: TextStyle(fontSize: 20))),
SizedBox(height: 15),
Center(
child: Text("ou",
style: TextStyle(
fontSize: 20, fontWeight: FontWeight.w500),
textAlign: TextAlign.center)),
SizedBox(height: 15),
RaisedButton(
color: Color(0xffFFD68E),
onPressed: () => importWallet(),
child: Text('Importer un portefeuille existant',
style: TextStyle(fontSize: 20))),
])); // WelcomeWalletScreen());
return Center(child: CircularProgressIndicator());
}),
FutureBuilder<bool>(
future: checkIfWalletExist('tata'),
builder: (context, fSnapshot) {
if (fSnapshot.hasData)
return Visibility(
visible: fSnapshot.data,
child: MyWalletsScreen(keyMyWallets: _keyMyWallets));
return Center(child: CircularProgressIndicator());
}),
SizedBox(height: 8),
Visibility(
visible: walletIsGenerated,
child: Column(children: <Widget>[
Text(
'Clé publique:',
style: TextStyle(
fontSize: 15.0,
color: Colors.grey[600],
fontWeight: FontWeight.w400),
),
TextField(
enabled: false,
controller: this._pubkey,
maxLines: 1,
textAlign: TextAlign.center,
decoration: InputDecoration(),
style: TextStyle(
fontSize: 14.0,
color: Colors.black,
fontWeight: FontWeight.bold)),
SizedBox(height: 8),
Text(
'Phrase de restauration:',
style: TextStyle(
fontSize: 15.0,
color: Colors.grey[600],
fontWeight: FontWeight.w400),
),
TextField(
enabled: false,
controller: this._mnemonicController,
maxLines: 3,
textAlign: TextAlign.center,
decoration: InputDecoration(
contentPadding: EdgeInsets.all(15.0),
),
style: TextStyle(
fontSize: 22.0,
color: Colors.black,
fontWeight: FontWeight.w400)),
SizedBox(height: 8),
Text(
'Code secret:',
style: TextStyle(
fontSize: 15.0,
color: Colors.grey[600],
fontWeight: FontWeight.w400),
),
TextField(
enabled: false,
controller: this._pin,
maxLines: 1,
textAlign: TextAlign.center,
decoration: InputDecoration(),
style: TextStyle(
fontSize: 30.0,
color: Colors.black,
fontWeight: FontWeight.bold)),
SizedBox(height: 20),
// Expanded(child: Align(alignment: Alignment.bottomCenter)),
new RaisedButton(
color: Color(0xffFFD68E),
onPressed: walletIsGenerated
? () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return ValidStoreWalletScreen(
validationKey: _keyValidWallets,
generatedMnemonic: this.generatedMnemonic,
generatedWallet: this.actualWallet);
}),
).then((value) => setState(() {
if (value != null) {
print(
'TODO: Fix resetWalletState()'); //TODO: Fix resetWalletState()
_pin.clear();
_mnemonicController.clear();
_pubkey.clear();
this.generatedMnemonic = null;
this.actualWallet = null;
this.walletIsGenerated = false;
resetWalletState();
// setState(() {});
// getAllWalletsNames();
// checkIfWalletExist('tata');
// _keyMyWallets.currentState.getAllWalletsNames();
}
}));
}
: null,
child: Text('Enregistrer ce portefeuille',
style: TextStyle(fontSize: 20))),
SizedBox(height: 20)
]),
// Visibility(
// visible: walletIsGenerated,
// child: Text("""
// Notez bien votre phrase de restauration sur un papier ou imprimez le, ainsi que votre code secret, que vous devrez retenir.
// Pour payer ou manipuler votre wallet, seul votre code secret vous sera nécessaire.
// Votre phrase de restauration quant à elle, constitué de 12 mots, vous permet de restaurer votre wallet sur un autre appareil. Gardez la précieusement, en lieu sûr.
// """,
// style: TextStyle(fontSize: 15, fontWeight: FontWeight.bold),
// textAlign: TextAlign.center),
// )
)
])));
}
Future resetWalletState() async {
final bool _isExist = await checkIfWalletExist('tata');
print('The wallet exist in resetWalletState(): ' + _isExist.toString());
// initState();
// _keyMyWallets.currentState.setState(() {});
// _keyMyWallets.currentState.initAppDirectory();
setState(() {
// getAllWalletsNames();
// this.walletIsGenerated = true;
});
}
Future generateMnemonic() async {
try {
this.generatedMnemonic =
await DubpRust.genMnemonic(language: Language.french);
} catch (e, stack) {
print(e);
if (kReleaseMode) {
await sentry.Sentry.captureException(
e,
stackTrace: stack,
);
}
}
this.actualWallet = await generateWallet(this.generatedMnemonic);
this.walletIsGenerated = true;
// await checkIfWalletExist();
return this.generatedMnemonic;
}
Future generateWallet(generatedMnemonic) async {
try {
this.actualWallet = await DubpRust.genWalletFromMnemonic(
language: Language.french,
mnemonic: generatedMnemonic,
secretCodeType: SecretCodeType.letters);
} catch (e, stack) {
print(e);
if (kReleaseMode) {
await sentry.Sentry.captureException(
e,
stackTrace: stack,
);
}
}
setState(() {
this._mnemonicController.text = generatedMnemonic;
this._pubkey.text = actualWallet.publicKey;
this._pin.text = actualWallet.pin;
});
return actualWallet;
}
Future<bool> checkIfWalletExist(_name) async {
final appPath = await _localPath;
final _walletFile = File('$appPath/wallets/$_name/wallet.dewif');
// deleteWallet();
print(_walletFile.path);
final bool isExist = await File(_walletFile.path).exists();
print('Wallet existe ? : ' + isExist.toString());
print('Is wallet generated ? : ' + walletIsGenerated.toString());
if (isExist) {
print('Un wallet existe !');
return true;
} else {
return false;
}
}
Future<List> getAllWalletsNames() async {
print('Je suis getAllWalletsNames() !!');
final _appPath = await getApplicationDocumentsDirectory();
// List _listWallets = [];
// _listWallets.add('tortuuue');
_keyValidWallets.currentState._listWallets
.clear(); //TODO: Fix: The getter '_listWallets' was called on null.
print(_appPath);
print('Je suis getAllWalletsNames() !! 2');
_appPath
.list(recursive: false, followLinks: false)
.listen((FileSystemEntity entity) {
print(entity.path.split('/').last);
_keyValidWallets.currentState._listWallets
.add(entity.path.split('/').last);
});
return _keyValidWallets.currentState._listWallets;
// final _local = await _appPath.path.list().toList();
}
Future importWallet() async {}
Future<String> get _localPath async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}
}
/* *** ValidStoreWalletScreen Class *** */
class ValidStoreWalletScreen extends StatefulWidget {
final String generatedMnemonic;
final NewWallet generatedWallet;
ValidStoreWalletScreen(
{Key validationKey,
@required this.generatedMnemonic,
@required this.generatedWallet})
: super(key: validationKey);
@override
ValidStoreWalletState createState() => ValidStoreWalletState();
}
class ValidStoreWalletState extends State<ValidStoreWalletScreen> {
GlobalKey<ValidStoreWalletState> _keyValidWallets = GlobalKey();
void initState() {
super.initState();
// DubpRust.setup();
this._mnemonicController.text = widget.generatedMnemonic;
this._pubkey.text = widget.generatedWallet.publicKey;
}
TextEditingController _mnemonicController = new TextEditingController();
TextEditingController _pubkey = new TextEditingController();
TextEditingController _pin = new TextEditingController();
String walletName = 'tata';
List _listWallets = [];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: Column(children: <Widget>[
TextField(
enabled: false,
controller: this._mnemonicController,
maxLines: 2,
textAlign: TextAlign.center,
decoration: InputDecoration(),
style: TextStyle(
fontSize: 15.0,
color: Colors.black,
fontWeight: FontWeight.bold)),
TextField(
enabled: false,
controller: this._pubkey,
maxLines: 1,
textAlign: TextAlign.center,
decoration: InputDecoration(),
style: TextStyle(
fontSize: 14.0,
color: Colors.black,
fontWeight: FontWeight.bold)),
new RaisedButton(
color: Color(0xffFFD68E),
onPressed: () => storeWallet(),
child: Text('Confirmer', style: TextStyle(fontSize: 20))),
]),
),
);
}
Future storeWallet() async {
final appPath = await _localPath;
final walletFile = File('$appPath/wallets/${this.walletName}/wallet.dewif');
final isExist = await Directory('$appPath/wallets').exists();
if (isExist == false) {
new Directory('$appPath/wallets').createSync();
}
new Directory('$appPath/wallets/${this.walletName}').createSync();
walletFile.writeAsString('${widget.generatedWallet.dewif}');
_pin.clear();
await getAllWalletsNames();
Navigator.pop(context, true);
FocusScope.of(context).unfocus();
return this.walletName;
}
Future<String> get _localPath async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}
Future<List> getAllWalletsNames() async {
final _appPath = await getApplicationDocumentsDirectory();
// List _listWallets = [];
// _listWallets.add('tortuuue');
this._listWallets.clear();
print(_appPath);
_appPath
.list(recursive: false, followLinks: false)
.listen((FileSystemEntity entity) {
print(entity.path.split('/').last);
this._listWallets.add(entity.path.split('/').last);
});
return _listWallets;
// final _local = await _appPath.path.list().toList();
}
}

View File

@ -1,8 +1,8 @@
import 'package:gecko/ui/historyScreen.dart';
import 'package:gecko/ui/generateWallets.dart';
import 'package:flutter/material.dart';
import 'dart:typed_data';
import 'dart:ui';
import 'package:gecko/ui/myWallets/walletsHome.dart';
//ignore: must_be_immutable
class HomeScreen extends StatefulWidget {
@ -38,7 +38,7 @@ class HomeScreenState extends State<HomeScreen> {
HistoryScreen(
keyHistory: _keyHistory,
),
GenerateWalletScreen(),
WalletsHome(),
],
),
),

View File

@ -0,0 +1,117 @@
import 'dart:io';
import 'package:dubp/dubp.dart';
import 'package:flutter/material.dart';
import 'package:path_provider/path_provider.dart';
class ConfirmStoreWallet extends StatefulWidget {
final String generatedMnemonic;
final NewWallet generatedWallet;
ConfirmStoreWallet(
{Key validationKey,
@required this.generatedMnemonic,
@required this.generatedWallet})
: super(key: validationKey);
@override
ConfirmStoreWalletState createState() => ConfirmStoreWalletState();
}
class ConfirmStoreWalletState extends State<ConfirmStoreWallet> {
// GlobalKey<ValidStoreWalletState> _keyValidWallets = GlobalKey();
void initState() {
super.initState();
// DubpRust.setup();
this._mnemonicController.text = widget.generatedMnemonic;
this._pubkey.text = widget.generatedWallet.publicKey;
}
TextEditingController _mnemonicController = new TextEditingController();
TextEditingController _pubkey = new TextEditingController();
TextEditingController _pin = new TextEditingController();
String walletName = 'MonWallet';
List _listWallets = [];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
body: Center(
child: Column(children: <Widget>[
TextField(
enabled: false,
controller: this._mnemonicController,
maxLines: 2,
textAlign: TextAlign.center,
decoration: InputDecoration(),
style: TextStyle(
fontSize: 15.0,
color: Colors.black,
fontWeight: FontWeight.bold)),
TextField(
enabled: false,
controller: this._pubkey,
maxLines: 1,
textAlign: TextAlign.center,
decoration: InputDecoration(),
style: TextStyle(
fontSize: 14.0,
color: Colors.black,
fontWeight: FontWeight.bold)),
new ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Color(0xffFFD68E), // background
onPrimary: Colors.black, // foreground
),
onPressed: () => storeWallet(),
child: Text('Confirmer', style: TextStyle(fontSize: 20))),
]),
),
);
}
Future storeWallet() async {
final appPath = await _localPath;
final walletFile = File('$appPath/wallets/${this.walletName}/wallet.dewif');
final isExist = await Directory('$appPath/wallets').exists();
if (isExist == false) {
new Directory('$appPath/wallets').createSync();
}
new Directory('$appPath/wallets/${this.walletName}').createSync();
walletFile.writeAsString('${widget.generatedWallet.dewif}');
_pin.clear();
await getAllWalletsNames();
Navigator.pop(context, true);
Navigator.pop(context, true);
// setState(() {});
// FocusScope.of(context).unfocus();
return this.walletName;
}
Future<String> get _localPath async {
final directory = await getApplicationDocumentsDirectory();
return directory.path;
}
Future<List> getAllWalletsNames() async {
final _appPath = await getApplicationDocumentsDirectory();
// List _listWallets = [];
// _listWallets.add('tortuuue');
this._listWallets.clear();
print(_appPath);
_appPath
.list(recursive: false, followLinks: false)
.listen((FileSystemEntity entity) {
print(entity.path.split('/').last);
this._listWallets.add(entity.path.split('/').last);
});
return _listWallets;
// final _local = await _appPath.path.list().toList();
}
}

View File

@ -0,0 +1,194 @@
import 'package:gecko/ui/myWallets/confirmWalletStorage.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:sentry/sentry.dart' as sentry;
import 'package:dubp/dubp.dart';
class GenerateWalletsScreen extends StatefulWidget {
const GenerateWalletsScreen({Key keyGenWallet}) : super(key: keyGenWallet);
@override
GenerateWalletsState createState() => GenerateWalletsState();
}
class GenerateWalletsState extends State<GenerateWalletsScreen> {
// GlobalKey<MyWalletState> _keyMyWallets = GlobalKey();
// GlobalKey<ValidStoreWalletState> _keyValidWallets = GlobalKey();
void initState() {
super.initState();
DubpRust.setup();
generateMnemonic();
}
TextEditingController _mnemonicController = new TextEditingController();
TextEditingController _pubkey = new TextEditingController();
TextEditingController _pin = new TextEditingController();
String generatedMnemonic;
bool walletIsGenerated = false;
NewWallet actualWallet;
// final formKey = GlobalKey<FormState>();
bool hasError = false;
String validPin = 'NO PIN';
String currentText = "";
var pinColor = Colors.grey[300];
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(),
floatingActionButton: Container(
height: 80.0,
width: 80.0,
child: FittedBox(
child: FloatingActionButton(
heroTag: "buttonGenerateWallet",
onPressed: () => generateMnemonic(),
// print(resultScan);
// if (resultScan != 'false') {
// onTabTapped(0);
// }
child: Container(
height: 40.0, width: 40.0, child: Icon(Icons.replay)),
backgroundColor: Color(
0xffEFEFBF), //Color(0xffFFD68E), //Color.fromARGB(500, 204, 255, 255),
))),
body: SafeArea(
child: Column(children: <Widget>[
SizedBox(height: 20),
Text(
'Clé publique:',
style: TextStyle(
fontSize: 15.0,
color: Colors.grey[600],
fontWeight: FontWeight.w400),
),
TextField(
enabled: false,
controller: this._pubkey,
maxLines: 1,
textAlign: TextAlign.center,
decoration: InputDecoration(),
style: TextStyle(
fontSize: 14.0,
color: Colors.black,
fontWeight: FontWeight.bold)),
SizedBox(height: 8),
Text(
'Phrase de restauration:',
style: TextStyle(
fontSize: 15.0,
color: Colors.grey[600],
fontWeight: FontWeight.w400),
),
TextField(
enabled: false,
controller: this._mnemonicController,
maxLines: 3,
textAlign: TextAlign.center,
decoration: InputDecoration(
contentPadding: EdgeInsets.all(15.0),
),
style: TextStyle(
fontSize: 22.0,
color: Colors.black,
fontWeight: FontWeight.w400)),
SizedBox(height: 8),
Text(
'Code secret:',
style: TextStyle(
fontSize: 15.0,
color: Colors.grey[600],
fontWeight: FontWeight.w400),
),
TextField(
enabled: false,
controller: this._pin,
maxLines: 1,
textAlign: TextAlign.center,
decoration: InputDecoration(),
style: TextStyle(
fontSize: 30.0,
color: Colors.black,
fontWeight: FontWeight.bold)),
SizedBox(height: 20),
// Expanded(child: Align(alignment: Alignment.bottomCenter)),
new ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Color(0xffFFD68E), // background
onPrimary: Colors.black, // foreground
),
onPressed: walletIsGenerated
? () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return ConfirmStoreWallet(
// validationKey: _keyValidWallets,
generatedMnemonic: this.generatedMnemonic,
generatedWallet: this.actualWallet);
}),
)
// .then((value) => setState(() {
// if (value != null) {
// _pin.clear();
// _mnemonicController.clear();
// _pubkey.clear();
// this.generatedMnemonic = null;
// this.actualWallet = null;
// this.walletIsGenerated = false;
// }
// }))
;
}
: null,
child: Text('Enregistrer ce portefeuille',
style: TextStyle(fontSize: 20))),
SizedBox(height: 20)
]),
));
}
Future generateMnemonic() async {
try {
this.generatedMnemonic =
await DubpRust.genMnemonic(language: Language.french);
this.actualWallet = await generateWallet(this.generatedMnemonic);
this.walletIsGenerated = true;
} catch (e, stack) {
print(e);
if (kReleaseMode) {
await sentry.Sentry.captureException(
e,
stackTrace: stack,
);
}
}
// await checkIfWalletExist();
return this.generatedMnemonic;
}
Future generateWallet(generatedMnemonic) async {
try {
this.actualWallet = await DubpRust.genWalletFromMnemonic(
language: Language.french,
mnemonic: generatedMnemonic,
secretCodeType: SecretCodeType.letters);
} catch (e, stack) {
print(e);
if (kReleaseMode) {
await sentry.Sentry.captureException(
e,
stackTrace: stack,
);
}
}
setState(() {
this._mnemonicController.text = generatedMnemonic;
this._pubkey.text = actualWallet.publicKey;
this._pin.text = actualWallet.pin;
});
return actualWallet;
}
}

View File

@ -1,4 +1,4 @@
import 'package:gecko/ui/generateWallets.dart';
// import 'package:gecko/ui/generateWallets.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:dubp/dubp.dart';
@ -15,7 +15,7 @@ class MyWalletsScreen extends StatefulWidget {
}
class MyWalletState extends State<MyWalletsScreen> {
GlobalKey<GenerateWalletState> _keyGenWallet = GlobalKey();
// GlobalKey<GenerateWalletState> _keyGenWallet = GlobalKey();
StreamController<ErrorAnimationType> errorController;
Directory appPath;
List _listWallets = [];
@ -25,6 +25,7 @@ class MyWalletState extends State<MyWalletsScreen> {
errorController = StreamController<ErrorAnimationType>();
initAppDirectory();
DubpRust.setup();
// getAllWalletsNames();
// initAppDirectory();
// _walletsList = await getAllWalletsNames();
// HistoryScreen(
@ -235,7 +236,7 @@ class MyWalletState extends State<MyWalletsScreen> {
Future readLocalWallet(String _pin) async {
// print(pin);
try {
final file = await _localWallet('tata');
final file = await _localWallet('MonWallet');
String _localDewif = await file.readAsString();
String _localPubkey;
@ -263,9 +264,17 @@ class MyWalletState extends State<MyWalletsScreen> {
final appPath = await _localPath;
final _walletFile = File('$appPath/wallets/$_name/wallet.dewif');
await _walletFile.delete();
_walletFile.delete();
getAllWalletsNames();
setState(() {
// getAllWalletsNames();
});
return 0;
} catch (e) {
getAllWalletsNames();
setState(() {
// getAllWalletsNames();
});
return 1;
}
}

View File

@ -0,0 +1,146 @@
import 'package:gecko/ui/myWallets/generateWalletsScreen.dart';
import 'package:gecko/ui/myWallets/myWalletsList.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:dubp/dubp.dart';
import 'dart:io';
import 'dart:async';
import 'package:path_provider/path_provider.dart';
class WalletsHome extends StatefulWidget {
const WalletsHome({Key keyGenWallet}) : super(key: keyGenWallet);
@override
WalletsHomeState createState() => WalletsHomeState();
}
class WalletsHomeState extends State<WalletsHome> {
GlobalKey<WalletsHomeState> _keyWalletsHome = GlobalKey();
// GlobalKey<MyWalletState> _keyMyWallets = GlobalKey();
// GlobalKey<ValidStoreWalletState> _keyValidWallets = GlobalKey();
void initState() {
super.initState();
DubpRust.setup();
getAppDirectory();
// _keyWalletsHome.currentState.getAllWalletsNames();
// _keyMyWallets.currentState.getAllWalletsNames();
}
String generatedMnemonic;
bool walletIsGenerated = false;
NewWallet actualWallet;
bool hasError = false;
String validPin = 'NO PIN';
String currentText = "";
var pinColor = Colors.grey[300];
Directory appPath;
@override
Widget build(BuildContext context) {
// getAppDirectory();
return Scaffold(
floatingActionButton: Visibility(
visible: (checkIfWalletExist(
'MonWallet')), //!checkIfWalletExist('MonWallet') &&
child: Container(
height: 80.0,
width: 80.0,
child: FittedBox(
child: FloatingActionButton(
heroTag: "buttonGenerateWallet",
onPressed: () {
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return GenerateWalletsScreen();
}),
);
},
child: Container(
height: 40.0,
width: 40.0,
child: Icon(Icons.person_add_alt_1_rounded)),
backgroundColor: Color(0xffEFEFBF))))),
body: SafeArea(
child: Column(children: <Widget>[
Visibility(
visible: (!checkIfWalletExist('MonWallet') && !walletIsGenerated),
child: Column(children: <Widget>[
SizedBox(height: 120),
Center(
child: Text("Vous n'avez encore généré aucun portefeuille.",
style: TextStyle(
fontSize: 20, fontWeight: FontWeight.w500),
textAlign: TextAlign.center)),
SizedBox(height: 80),
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Color(0xffFFD68E), // background
onPrimary: Colors.black, // foreground
),
onPressed: () => Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return GenerateWalletsScreen();
}),
),
child: Text('Générer un portefeuille',
style: TextStyle(fontSize: 20))),
SizedBox(height: 15),
Center(
child: Text("ou",
style: TextStyle(
fontSize: 20, fontWeight: FontWeight.w500),
textAlign: TextAlign.center)),
SizedBox(height: 15),
ElevatedButton(
style: ElevatedButton.styleFrom(
primary: Color(0xffFFD68E), // background
onPrimary: Colors.black, // foreground
),
onPressed: () => importWallet(),
child: Text('Importer un portefeuille existant',
style: TextStyle(fontSize: 20))),
])),
Visibility(
visible: checkIfWalletExist('MonWallet'),
child: MyWalletsScreen(keyMyWallets: _keyWalletsHome))
])));
}
// Future resetWalletState() async {
// final bool _isExist = await checkIfWalletExist('MonWallet');
// print('The wallet exist in resetWalletState(): ' + _isExist.toString());
// // initState();
// // _keyMyWallets.currentState.setState(() {});
// // _keyMyWallets.currentState.initAppDirectory();
// setState(() {
// // getAllWalletsNames();
// // this.walletIsGenerated = true;
// });
// }
bool checkIfWalletExist(_name) {
if (this.appPath == null) {
return false;
}
final bool isExist =
File('${this.appPath.path}/wallets/$_name/wallet.dewif').existsSync();
print(this.appPath.path);
print('Wallet existe ? : ' + isExist.toString());
print('Is wallet generated ? : ' + walletIsGenerated.toString());
if (isExist) {
print('Un wallet existe !');
return true;
} else {
return false;
}
}
Future getAppDirectory() async {
this.appPath = await getApplicationDocumentsDirectory();
setState(() {});
}
Future importWallet() async {}
}

View File

@ -576,4 +576,4 @@ packages:
version: "2.2.1"
sdks:
dart: ">=2.12.0-0.0 <3.0.0"
flutter: ">=1.22.0 <2.0.0"
flutter: ">=1.22.0"