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

View File

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

View File

@ -287,7 +287,7 @@ class WalletOptions extends StatelessWidget {
Image.asset(
'assets/walletOptions/key.png',
),
const SizedBox(width: 10),
const SizedBox(width: 20),
Text("${shortPubkey.split(':')[0]}:",
style: const TextStyle(
fontSize: 22,
@ -341,7 +341,7 @@ class WalletOptions extends StatelessWidget {
Image.asset(
'assets/walletOptions/clock.png',
),
const SizedBox(width: 12),
const SizedBox(width: 22),
const Text('Historique des transactions',
style:
TextStyle(fontSize: 20, color: Colors.black)),
@ -368,7 +368,7 @@ class WalletOptions extends StatelessWidget {
child: Image.asset(
'assets/walletOptions/android-checkmark.png',
)),
const SizedBox(width: 12),
const SizedBox(width: 22),
Text(
_walletOptions.isDefaultWallet
? 'Ce portefeuille est celui par defaut'
@ -400,7 +400,7 @@ class WalletOptions extends StatelessWidget {
Image.asset(
'assets/walletOptions/trash.png',
),
const SizedBox(width: 14),
const SizedBox(width: 24),
const Text('Supprimer ce portefeuille',
style: TextStyle(
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:gecko/screens/common_elements.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/wallet_options.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: [
const SizedBox(height: 50),
SizedBox(
@ -92,7 +94,12 @@ class WalletsHome extends StatelessWidget {
primary: floattingYellow, // background
onPrimary: Colors.black, // foreground
),
onPressed: () => null,
onPressed: () => Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return ChestOptions(walletProvider: _myWalletProvider);
}),
),
label: const Text(
" Paramétrer ce coffre",
style: TextStyle(
@ -286,7 +293,7 @@ class WalletsHome extends StatelessWidget {
// ))
]),
// 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(
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",
style: TextStyle(fontSize: 16)))),
Expanded(