gecko/lib/screens/myWallets/change_pin.dart

144 lines
4.8 KiB
Dart
Raw Normal View History

2022-09-05 04:15:27 +02:00
// ignore_for_file: use_build_context_synchronously, must_be_immutable
2022-06-17 01:13:14 +02:00
import 'package:easy_localization/easy_localization.dart';
2021-01-15 11:42:05 +01:00
import 'package:flutter/material.dart';
import 'package:durt/durt.dart';
2021-11-08 23:12:25 +01:00
import 'package:gecko/globals.dart';
import 'package:gecko/models/wallet_data.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';
2021-01-15 11:42:05 +01:00
2022-12-10 08:16:38 +01:00
class ChangePinScreen extends StatefulWidget with ChangeNotifier {
ChangePinScreen(
2021-12-23 12:36:09 +01:00
{Key? keyMyWallets,
required this.walletName,
required this.walletProvider})
2021-01-15 11:42:05 +01:00
: super(key: keyMyWallets);
2021-12-23 12:36:09 +01:00
final String? walletName;
2021-11-18 02:37:46 +01:00
final MyWalletsProvider walletProvider;
2021-01-15 11:42:05 +01:00
2022-12-10 08:16:38 +01:00
@override
State<ChangePinScreen> createState() => _ChangePinScreenState();
}
class _ChangePinScreenState extends State<ChangePinScreen> {
2022-09-05 04:15:27 +02:00
final TextEditingController newPin = TextEditingController();
2022-12-10 08:16:38 +01:00
@override
void initState() {
newPin.text = randomSecretCode(pinLength);
super.initState();
}
2021-01-15 11:42:05 +01:00
@override
Widget build(BuildContext context) {
final sub = Provider.of<SubstrateSdk>(context, listen: false);
final myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false);
return WillPopScope(
2021-11-18 02:37:46 +01:00
onWillPop: () {
newPin.text = '';
2021-11-18 02:37:46 +01:00
return Future<bool>.value(true);
},
child: Scaffold(
resizeToAvoidBottomInset: false,
appBar: AppBar(
elevation: 1,
2021-11-21 06:36:12 +01:00
toolbarHeight: 60 * ratio,
leading: IconButton(
icon: const Icon(Icons.arrow_back, color: Colors.black),
onPressed: () {
newPin.text = '';
2021-11-21 06:36:12 +01:00
Navigator.of(context).pop();
}),
title: SizedBox(
height: 22,
2022-12-10 08:16:38 +01:00
child: Text(widget.walletName!),
2021-11-21 06:36:12 +01:00
),
),
2021-11-18 02:37:46 +01:00
body: Center(
child: SafeArea(
child: Column(children: <Widget>[
2021-11-14 19:21:20 +01:00
const SizedBox(height: 80),
Text(
2022-06-17 01:13:14 +02:00
'choosePassword'.tr(),
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 17.0,
color: Colors.grey[600],
fontWeight: FontWeight.w400),
),
2021-11-14 19:21:20 +01:00
const SizedBox(height: 30),
Stack(
alignment: Alignment.centerRight,
children: <Widget>[
TextField(
2021-11-18 02:37:46 +01:00
enabled: false,
controller: newPin,
2021-11-14 19:21:20 +01:00
maxLines: 1,
textAlign: TextAlign.center,
decoration: const InputDecoration(),
style: const TextStyle(
fontSize: 30.0,
color: Colors.black,
fontWeight: FontWeight.bold)),
IconButton(
icon: const Icon(Icons.replay),
color: orangeC,
onPressed: () async {
newPin.text = randomSecretCode(pinLength);
2021-11-14 19:21:20 +01:00
},
),
],
),
2021-11-14 19:21:20 +01:00
const SizedBox(height: 30),
SizedBox(
width: 200,
height: 50,
child: ElevatedButton(
2021-11-18 02:37:46 +01:00
style: ElevatedButton.styleFrom(
2022-09-05 04:15:27 +02:00
foregroundColor: Colors.black, elevation: 12,
backgroundColor: Colors.green[400], // foreground
2021-11-18 02:37:46 +01:00
),
onPressed: () async {
WalletData defaultWallet =
myWalletProvider.getDefaultWallet();
String? pin;
if (myWalletProvider.pinCode == '') {
pin = await Navigator.push(
context,
MaterialPageRoute(
builder: (homeContext) {
return UnlockingWallet(wallet: defaultWallet);
},
),
);
}
if (pin != null || myWalletProvider.pinCode != '') {
await sub.changePassword(context, defaultWallet.address,
2022-12-10 08:16:38 +01:00
widget.walletProvider.pinCode, newPin.text);
widget.walletProvider.pinCode = newPin.text;
newPin.text = '';
Navigator.pop(context);
}
2021-12-20 21:33:03 +01:00
},
2022-06-17 01:13:14 +02:00
child: Text(
'confirm'.tr(),
style: const TextStyle(fontSize: 28),
2021-11-18 02:37:46 +01:00
),
),
)
2021-11-18 02:37:46 +01:00
]),
),
),
),
);
2021-01-15 11:42:05 +01:00
}
}