Add chest options for standart chests: Can change pin code and delete chest

This commit is contained in:
poka 2021-11-18 04:41:45 +01:00
parent dfbab5a219
commit f36529819c
6 changed files with 140 additions and 18 deletions

View File

@ -0,0 +1,102 @@
import 'dart:ui';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
import 'package:gecko/models/chest_data.dart';
import 'package:flutter/services.dart';
import 'package:gecko/models/chest_provider.dart';
import 'package:gecko/models/my_wallets.dart';
import 'package:gecko/screens/myWallets/change_pin.dart';
import 'package:provider/provider.dart';
class ChestOptions extends StatelessWidget {
const ChestOptions({Key keyMyWallets, @required this.walletProvider})
: super(key: keyMyWallets);
final MyWalletsProvider walletProvider;
@override
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
ChestProvider _chestProvider =
Provider.of<ChestProvider>(context, listen: false);
ChestData currentChest = chestBox.get(configBox.get('currentChest'));
return Scaffold(
resizeToAvoidBottomInset: false,
appBar: AppBar(
toolbarHeight: 60 * ratio,
leading: IconButton(
icon: const Icon(Icons.arrow_back, color: Colors.black),
onPressed: () {
Navigator.popUntil(
context,
ModalRoute.withName('/mywallets'),
);
}),
title: SizedBox(
height: 22,
child: Text(currentChest.name),
)),
body: Builder(
builder: (ctx) => SafeArea(
child: Column(children: <Widget>[
SizedBox(height: 30 * ratio),
InkWell(
key: const Key('changePin'),
onTap: () async {
// await _chestProvider.changePin(context, cesiumWallet);
walletProvider.pinCode = await Navigator.push(
context,
MaterialPageRoute(
builder: (context) {
return ChangePinScreen(
walletName: currentChest.name,
walletProvider: walletProvider,
);
},
),
);
},
child: SizedBox(
height: 50,
child: Row(children: <Widget>[
const SizedBox(width: 28),
Image.asset(
'assets/chests/secret_code.png',
),
const SizedBox(width: 18),
const Text('Changer mon code secret',
style: TextStyle(fontSize: 20, color: Colors.black)),
])),
),
SizedBox(height: 10 * ratio),
InkWell(
key: const Key('deleteChest'),
onTap: () async {
await _chestProvider.deleteChest(context, currentChest);
},
child: SizedBox(
height: 50,
child: Row(children: <Widget>[
const SizedBox(width: 33),
Image.asset(
'assets/walletOptions/trash.png',
),
const SizedBox(width: 24),
const Text(
'Supprimer ce coffre',
style: TextStyle(
fontSize: 20,
color: Color(0xffD80000),
),
),
]),
),
),
]),
),
),
);
}
}

View File

@ -2,10 +2,9 @@ import 'package:flutter/services.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/my_wallets.dart'; import 'package:gecko/models/my_wallets.dart';
import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/wallet_data.dart';
import 'package:gecko/screens/common_elements.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/screens/myWallets/generate_wallets.dart';
import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
import 'package:gecko/screens/onBoarding/1.dart';
import 'package:carousel_slider/carousel_slider.dart'; import 'package:carousel_slider/carousel_slider.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -137,7 +136,9 @@ class _ChooseChestState extends State<ChooseChest> {
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
FaderTransition(page: OnboardingStepOne(), isFast: false), MaterialPageRoute(builder: (context) {
return GenerateFastChestScreen();
}),
); );
}, },
child: SizedBox( child: SizedBox(

View File

@ -1,14 +1,16 @@
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/generate_wallets.dart'; import 'package:gecko/models/generate_wallets.dart';
import 'package:gecko/models/my_wallets.dart';
import 'package:gecko/screens/myWallets/confirm_wallet_storage.dart'; import 'package:gecko/screens/myWallets/confirm_wallet_storage.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
import 'package:printing/printing.dart'; import 'package:printing/printing.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:super_tooltip/super_tooltip.dart'; import 'package:super_tooltip/super_tooltip.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class GenerateWalletsScreen extends StatelessWidget { class GenerateFastChestScreen extends StatelessWidget {
SuperTooltip tooltip; SuperTooltip tooltip;
bool hasError = false; bool hasError = false;
String validPin = 'NO PIN'; String validPin = 'NO PIN';
@ -18,7 +20,7 @@ class GenerateWalletsScreen extends StatelessWidget {
final GlobalKey _toolTipSentence = GlobalKey(); final GlobalKey _toolTipSentence = GlobalKey();
final GlobalKey _toolTipSecret = GlobalKey(); final GlobalKey _toolTipSecret = GlobalKey();
GenerateWalletsScreen({Key key}) : super(key: key); GenerateFastChestScreen({Key key}) : super(key: key);
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
@ -27,6 +29,8 @@ class GenerateWalletsScreen extends StatelessWidget {
Provider.of<GenerateWalletsProvider>(context); Provider.of<GenerateWalletsProvider>(context);
_generateWalletProvider.generateMnemonic(); _generateWalletProvider.generateMnemonic();
MyWalletsProvider _myWalletClass = MyWalletsProvider();
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
toolbarHeight: 60 * ratio, toolbarHeight: 60 * ratio,
@ -102,10 +106,10 @@ class GenerateWalletsScreen extends StatelessWidget {
onPrimary: Colors.black, // foreground onPrimary: Colors.black, // foreground
), ),
onPressed: _generateWalletProvider.walletIsGenerated onPressed: _generateWalletProvider.walletIsGenerated
? () { ? () async {
_generateWalletProvider.nbrWord = _generateWalletProvider.nbrWord =
_generateWalletProvider.getRandomInt(); _generateWalletProvider.getRandomInt();
Navigator.push( await Navigator.push(
context, context,
MaterialPageRoute(builder: (context) { MaterialPageRoute(builder: (context) {
return ConfirmStoreWallet( return ConfirmStoreWallet(
@ -116,6 +120,16 @@ class GenerateWalletsScreen extends StatelessWidget {
.actualWallet); .actualWallet);
}), }),
); );
await Future.delayed(
const Duration(milliseconds: 20));
await Navigator.pushAndRemoveUntil(context,
MaterialPageRoute(builder: (context) {
return UnlockingWallet(
wallet: _myWalletClass.getDefaultWallet(
configBox.get('currentChest')),
action: "mywallets",
);
}), ModalRoute.withName('/'));
} }
: null, : null,
child: const Text('Enregistrer ce trousseau', child: const Text('Enregistrer ce trousseau',

View File

@ -287,7 +287,7 @@ class WalletOptions extends StatelessWidget {
Image.asset( Image.asset(
'assets/walletOptions/key.png', 'assets/walletOptions/key.png',
), ),
const SizedBox(width: 10), const SizedBox(width: 20),
Text("${shortPubkey.split(':')[0]}:", Text("${shortPubkey.split(':')[0]}:",
style: const TextStyle( style: const TextStyle(
fontSize: 22, fontSize: 22,
@ -341,7 +341,7 @@ class WalletOptions extends StatelessWidget {
Image.asset( Image.asset(
'assets/walletOptions/clock.png', 'assets/walletOptions/clock.png',
), ),
const SizedBox(width: 12), const SizedBox(width: 22),
const Text('Historique des transactions', const Text('Historique des transactions',
style: style:
TextStyle(fontSize: 20, color: Colors.black)), TextStyle(fontSize: 20, color: Colors.black)),
@ -368,7 +368,7 @@ class WalletOptions extends StatelessWidget {
child: Image.asset( child: Image.asset(
'assets/walletOptions/android-checkmark.png', 'assets/walletOptions/android-checkmark.png',
)), )),
const SizedBox(width: 12), const SizedBox(width: 22),
Text( Text(
_walletOptions.isDefaultWallet _walletOptions.isDefaultWallet
? 'Ce portefeuille est celui par defaut' ? 'Ce portefeuille est celui par defaut'
@ -400,7 +400,7 @@ class WalletOptions extends StatelessWidget {
Image.asset( Image.asset(
'assets/walletOptions/trash.png', 'assets/walletOptions/trash.png',
), ),
const SizedBox(width: 14), const SizedBox(width: 24),
const Text('Supprimer ce portefeuille', const Text('Supprimer ce portefeuille',
style: TextStyle( style: TextStyle(
fontSize: 20, color: Color(0xffD80000))), fontSize: 20, color: Color(0xffD80000))),

View File

@ -8,6 +8,7 @@ import 'package:gecko/models/wallet_options.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/common_elements.dart';
import 'package:gecko/screens/myWallets/cesium_wallet_options.dart'; import 'package:gecko/screens/myWallets/cesium_wallet_options.dart';
import 'package:gecko/screens/myWallets/chest_options.dart';
import 'package:gecko/screens/myWallets/choose_chest.dart'; import 'package:gecko/screens/myWallets/choose_chest.dart';
import 'package:gecko/screens/myWallets/wallet_options.dart'; import 'package:gecko/screens/myWallets/wallet_options.dart';
import 'package:gecko/screens/onBoarding/0_no_keychain_found.dart'; import 'package:gecko/screens/onBoarding/0_no_keychain_found.dart';
@ -77,7 +78,8 @@ class WalletsHome extends StatelessWidget {
// ]); // ]);
// } // }
Widget chestOptions(BuildContext context) { Widget chestOptions(
BuildContext context, MyWalletsProvider _myWalletProvider) {
return Column(children: [ return Column(children: [
const SizedBox(height: 50), const SizedBox(height: 50),
SizedBox( SizedBox(
@ -92,7 +94,12 @@ class WalletsHome extends StatelessWidget {
primary: floattingYellow, // background primary: floattingYellow, // background
onPrimary: Colors.black, // foreground onPrimary: Colors.black, // foreground
), ),
onPressed: () => null, onPressed: () => Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return ChestOptions(walletProvider: _myWalletProvider);
}),
),
label: const Text( label: const Text(
" Paramétrer ce coffre", " Paramétrer ce coffre",
style: TextStyle( style: TextStyle(
@ -286,7 +293,7 @@ class WalletsHome extends StatelessWidget {
// )) // ))
]), ]),
// SliverToBoxAdapter(child: Spacer()), // SliverToBoxAdapter(child: Spacer()),
SliverToBoxAdapter(child: chestOptions(context)), SliverToBoxAdapter(child: chestOptions(context, _myWalletProvider)),
]); ]);
} }

View File

@ -74,11 +74,9 @@ class SettingsScreen extends StatelessWidget {
onPressed: () => Navigator.push( onPressed: () => Navigator.push(
context, context,
MaterialPageRoute(builder: (context) { MaterialPageRoute(builder: (context) {
return GenerateWalletsScreen(); return GenerateFastChestScreen();
}), }),
).then((value) => { ),
if (value == true) {Navigator.pop(context)}
}),
child: const Text("Générer un nouveau trousseau", child: const Text("Générer un nouveau trousseau",
style: TextStyle(fontSize: 16)))), style: TextStyle(fontSize: 16)))),
Expanded( Expanded(