feat: Edit wallet name in popup

This commit is contained in:
poka 2022-06-12 21:19:05 +02:00
parent 9ec7a6594d
commit 63c71fed01
2 changed files with 111 additions and 22 deletions

View File

@ -23,6 +23,7 @@ class WalletOptionsProvider with ChangeNotifier {
FocusNode walletNameFocus = FocusNode();
TextEditingController nameController = TextEditingController();
late bool isDefaultWallet;
bool canValidateNameBool = false;
Future<NewWallet>? get badWallet => null;
@ -41,25 +42,6 @@ class WalletOptionsProvider with ChangeNotifier {
_newWalletName.text = '';
}
bool editWalletName(List<int?> _wID, {bool? isCesium}) {
bool nameState;
if (isEditing) {
if (!nameController.text.contains(':') &&
nameController.text.length <= 39) {
_renameWallet(_wID, nameController.text, isCesium: isCesium!);
nameState = true;
} else {
nameState = false;
}
} else {
nameState = true;
}
isEditing ? isEditing = false : isEditing = true;
notifyListeners();
return nameState;
}
Future<int> deleteWallet(context, WalletData wallet) async {
SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
final bool? _answer = await (confirmPopup(context,
@ -290,6 +272,111 @@ class WalletOptionsProvider with ChangeNotifier {
);
}
Future<String?> editWalletName(BuildContext context, List<int?> _wID) async {
TextEditingController walletName = TextEditingController();
canValidateNameBool = false;
return showDialog<String>(
context: context,
barrierDismissible: true,
builder: (BuildContext context) {
return AlertDialog(
title: const Text(
'Choisissez un nouveau nom\n pour votre portefeuille :',
textAlign: TextAlign.center,
style: TextStyle(fontSize: 20, fontWeight: FontWeight.w500),
),
content: SizedBox(
height: 100,
child: Column(children: [
const SizedBox(height: 20),
TextField(
onChanged: (_) => canValidateName(context, walletName),
textAlign: TextAlign.center,
autofocus: true,
controller: walletName,
style: const TextStyle(fontSize: 19),
)
]),
),
actions: <Widget>[
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Consumer<WalletOptionsProvider>(
builder: (context, _wOptions, _) {
return TextButton(
key: const Key('infoPopup'),
child: Text(
"Valider",
style: TextStyle(
fontSize: 21,
color: canValidateNameBool
? const Color(0xffD80000)
: Colors.grey,
fontWeight: FontWeight.w600,
),
),
onPressed: () async {
if (canValidateNameBool) {
nameController.text = walletName.text;
_renameWallet(_wID, walletName.text, isCesium: false);
// notifyListeners();
Navigator.pop(context);
}
},
);
})
],
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
TextButton(
key: const Key('cancel'),
child: Text(
"Annuler",
style: TextStyle(
fontSize: 18,
color: Colors.grey[800],
fontWeight: FontWeight.w300),
),
onPressed: () async {
Navigator.pop(context);
},
)
],
),
const SizedBox(height: 20)
],
);
},
);
}
bool canValidateName(BuildContext context, TextEditingController walletName) {
MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false);
bool isNameValid = walletName.text.length >= 2 &&
!walletName.text.contains(':') &&
walletName.text.length <= 39;
if (isNameValid) {
for (var wallet in _myWalletProvider.listWallets) {
if (walletName.text == wallet.name!) {
canValidateNameBool = false;
break;
}
canValidateNameBool = true;
}
} else {
canValidateNameBool = false;
}
notifyListeners();
return canValidateNameBool;
}
void reloadBuild() {
notifyListeners();
}

View File

@ -100,7 +100,8 @@ class WalletOptions extends StatelessWidget {
Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: <Widget>[
walletName(walletProvider, _walletOptions),
walletName(
context, walletProvider, _walletOptions),
SizedBox(height: isTall ? 5 : 0),
// SizedBox(height: isTall ? 5 : 0),
balance(
@ -246,7 +247,7 @@ class WalletOptions extends StatelessWidget {
);
}
Widget walletName(WalletOptionsProvider walletProvider,
Widget walletName(BuildContext context, WalletOptionsProvider walletProvider,
WalletOptionsProvider _walletOptions) {
WidgetsBinding.instance.addPostFrameCallback((_) {
_walletOptions.nameController.text = wallet.name!;
@ -284,7 +285,8 @@ class WalletOptions extends StatelessWidget {
key: const Key('renameWallet'),
onTap: () async {
// _isNewNameValid =
walletProvider.editWalletName(wallet.id(), isCesium: false);
// walletProvider.editWalletName(wallet.id(), isCesium: false);
await walletProvider.editWalletName(context, wallet.id());
await Future.delayed(const Duration(milliseconds: 30));
walletProvider.walletNameFocus.requestFocus();
},