Skip to content
Snippets Groups Projects
Commit 83b9f92c authored by poka's avatar poka
Browse files

PIN validation is working but buggy

parent f536b3fa
No related branches found
No related tags found
1 merge request!6Figma onboarding workflow
......@@ -75,7 +75,7 @@ class WalletOptionsProvider with ChangeNotifier {
'false') {
this.pubkey.text = _localPubkey;
isWalletUnlock = true;
notifyListeners();
// notifyListeners();
return _localDewif;
} else {
......@@ -84,7 +84,7 @@ class WalletOptionsProvider with ChangeNotifier {
} catch (e) {
print('ERROR READING FILE: $e');
this.pubkey.clear();
notifyListeners();
// notifyListeners();
return 'bad';
}
}
......@@ -265,4 +265,8 @@ class WalletOptionsProvider with ChangeNotifier {
duration: Duration(seconds: 2));
Scaffold.of(context).showSnackBar(snackBar);
}
void reloadBuild() {
notifyListeners();
}
}
......@@ -3,14 +3,12 @@ import 'package:dubp/dubp.dart';
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'package:gecko/models/generateWallets.dart';
import 'package:gecko/models/myWallets.dart';
import 'package:gecko/screens/commonElements.dart';
import 'package:gecko/screens/onBoarding/14_stepFourteen.dart';
import 'package:provider/provider.dart';
// ignore: must_be_immutable
class OnboardingStepThirteen extends StatelessWidget {
TextEditingController tplController = TextEditingController();
NewWallet generatedWallet;
final int progress = 83;
......@@ -19,14 +17,23 @@ class OnboardingStepThirteen extends StatelessWidget {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
GenerateWalletsProvider _generateWalletProvider =
Provider.of<GenerateWalletsProvider>(context);
MyWalletsProvider myWalletProvider =
Provider.of<MyWalletsProvider>(context);
// MyWalletsProvider myWalletProvider =
// Provider.of<MyWalletsProvider>(context);
CommonElements common = CommonElements();
_generateWalletProvider.pin.text = '';
// _generateWalletProvider.changePinCode(reload: false);
return Scaffold(
extendBodyBehindAppBar: true,
body: SafeArea(
child: Column(children: <Widget>[
FutureBuilder(
future: _generateWalletProvider.changePinCode(reload: false),
// initialData: '...',
builder: (context, snapshot) {
generatedWallet = snapshot.data;
return Visibility(visible: false, child: Text(''));
}),
common.onboardingProgressBar('Ma phrase de restauration', progress),
common.bubbleSpeakRich(<TextSpan>[
TextSpan(
......@@ -100,8 +107,8 @@ class OnboardingStepThirteen extends StatelessWidget {
await _generateWalletProvider.storeWallet(
generatedWallet, 'Mon portefeuille courant', context,
isHD: true);
myWalletProvider.listWallets =
myWalletProvider.getAllWalletsNames();
// myWalletProvider.listWallets =
// myWalletProvider.getAllWalletsNames();
_generateWalletProvider.isAskedWordValid = false;
_generateWalletProvider.askedWordColor = Colors.black;
Navigator.push(
......
import 'dart:async';
import 'dart:ui';
import 'package:flutter/services.dart';
import 'package:flutter/material.dart';
import 'package:gecko/models/generateWallets.dart';
import 'package:gecko/models/myWallets.dart';
import 'package:gecko/models/walletOptions.dart';
import 'package:gecko/screens/commonElements.dart';
import 'package:pin_code_fields/pin_code_fields.dart';
import 'package:provider/provider.dart';
// ignore: must_be_immutable
class OnboardingStepFourteen extends StatelessWidget {
TextEditingController tplController = TextEditingController();
final int progress = 92;
final formKey = GlobalKey<FormState>();
var pinColor = Color(0xFFA4B600);
bool hasError = false;
@override
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
GenerateWalletsProvider _generateWalletProvider =
Provider.of<GenerateWalletsProvider>(context);
// GenerateWalletsProvider _generateWalletProvider =
// Provider.of<GenerateWalletsProvider>(context);
WalletOptionsProvider _walletOptions =
Provider.of<WalletOptionsProvider>(context);
CommonElements common = CommonElements();
return Scaffold(
......@@ -25,8 +32,94 @@ class OnboardingStepFourteen extends StatelessWidget {
common.bubbleSpeak(
"Avez-vous bien mémorisé votre code secret ?\n\nVérifions ça ensemble !\n\nTapez votre code secret dans le champ ci-dessous (après c’est fini, promis-juré-gecko)."),
SizedBox(height: 80),
common.pinForm(context, 5, 1, 3)
pinForm(context, _walletOptions, 5, 1, 3)
]),
));
}
Widget pinForm(context, WalletOptionsProvider _walletOptions, _pinLenght,
int _walletNbr, int _derivation) {
// var _walletPin = '';
// ignore: close_sinks
StreamController<ErrorAnimationType> errorController =
StreamController<ErrorAnimationType>();
TextEditingController _enterPin = TextEditingController();
MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context);
return Form(
key: formKey,
child: Padding(
padding: const EdgeInsets.symmetric(vertical: 8.0, horizontal: 30),
child: PinCodeTextField(
autoFocus: true,
appContext: context,
pastedTextStyle: TextStyle(
color: Colors.green.shade600,
fontWeight: FontWeight.bold,
),
length: _pinLenght,
obscureText: false,
obscuringCharacter: '*',
animationType: AnimationType.fade,
validator: (v) {
if (v.length < _pinLenght) {
return "Votre code PIN fait $_pinLenght caractères";
} else {
return null;
}
},
pinTheme: PinTheme(
activeColor: pinColor,
borderWidth: 4,
shape: PinCodeFieldShape.box,
borderRadius: BorderRadius.circular(5),
fieldHeight: 60,
fieldWidth: 50,
activeFillColor: hasError ? Colors.blueAccent : Colors.black,
),
cursorColor: Colors.black,
animationDuration: Duration(milliseconds: 300),
textStyle: TextStyle(fontSize: 20, height: 1.6),
backgroundColor: Color(0xffF9F9F1),
enableActiveFill: false,
errorAnimationController: errorController,
controller: _enterPin,
keyboardType: TextInputType.text,
boxShadows: [
BoxShadow(
offset: Offset(0, 1),
color: Colors.black12,
blurRadius: 10,
)
],
onCompleted: (_pin) async {
print("Completed");
final resultWallet = await _walletOptions.readLocalWallet(
_walletNbr, _pin.toUpperCase(), _pinLenght, _derivation);
if (resultWallet == 'bad') {
errorController.add(ErrorAnimationType
.shake); // Triggering error shake animation
hasError = true;
pinColor = Colors.red[600];
_walletOptions.reloadBuild();
} else {
pinColor = Colors.green[500];
_myWalletProvider.getAllWalletsNames();
_walletOptions.reloadBuild();
Navigator.popUntil(
context,
ModalRoute.withName('/'),
);
}
},
onChanged: (value) {
if (pinColor != Color(0xFFA4B600)) {
pinColor = Color(0xFFA4B600);
}
print(value);
},
)),
);
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment