Gecko is now realy multiChest, with slideshow choice

This commit is contained in:
poka 2021-11-14 03:12:07 +01:00
parent 694437b188
commit f2055d1737
22 changed files with 101 additions and 50 deletions

BIN
assets/chests/1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
assets/chests/2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

BIN
assets/chests/3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

BIN
assets/chests/4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

BIN
assets/chests/5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

BIN
assets/chests/6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

BIN
assets/chests/7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View File

@ -13,9 +13,11 @@ class ChestData extends HiveObject {
@HiveField(3) @HiveField(3)
int defaultWallet; int defaultWallet;
ChestData({this.dewif, this.name, this.defaultWallet}); @HiveField(4)
String imageName;
ChestData({this.dewif, this.name, this.defaultWallet, this.imageName});
// representation of WalletData when debugging
@override @override
String toString() { String toString() {
return this.name; return this.name;

View File

@ -20,19 +20,22 @@ class ChestDataAdapter extends TypeAdapter<ChestData> {
dewif: fields[0] as String, dewif: fields[0] as String,
name: fields[2] as String, name: fields[2] as String,
defaultWallet: fields[3] as int, defaultWallet: fields[3] as int,
imageName: fields[4] as String,
); );
} }
@override @override
void write(BinaryWriter writer, ChestData obj) { void write(BinaryWriter writer, ChestData obj) {
writer writer
..writeByte(3) ..writeByte(4)
..writeByte(0) ..writeByte(0)
..write(obj.dewif) ..write(obj.dewif)
..writeByte(2) ..writeByte(2)
..write(obj.name) ..write(obj.name)
..writeByte(3) ..writeByte(3)
..write(obj.defaultWallet); ..write(obj.defaultWallet)
..writeByte(4)
..write(obj.imageName);
} }
@override @override

View File

@ -57,9 +57,10 @@ class GenerateWalletsProvider with ChangeNotifier {
} }
walletBox.add(myWallet); walletBox.add(myWallet);
ChestData thisChest = ChestData( ChestData thisChest = ChestData(
dewif: _wallet.dewif, dewif: _wallet.dewif,
name: chestName, name: chestName,
); defaultWallet: 0,
imageName: '${chestNumber % 8}.png');
chestBox.add(thisChest); chestBox.add(thisChest);
configBox.put('currentChest', chestNumber); configBox.put('currentChest', chestNumber);
// walletBox.get(1) // walletBox.get(1)
@ -220,7 +221,7 @@ class GenerateWalletsProvider with ChangeNotifier {
log.d(_walletPubkey); log.d(_walletPubkey);
} }
Future importWallet(context, _cesiumID, _cesiumPWD) async { Future importCesiumWallet(context, _cesiumID, _cesiumPWD) async {
// String _walletPubkey = await DubpRust.getLegacyPublicKey( // String _walletPubkey = await DubpRust.getLegacyPublicKey(
// salt: _cesiumID, password: _cesiumPWD); // salt: _cesiumID, password: _cesiumPWD);
// String shortPubkey = truncate(_walletPubkey, 9, // String shortPubkey = truncate(_walletPubkey, 9,

View File

@ -3,6 +3,8 @@ import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/home.dart'; import 'package:gecko/models/home.dart';
import 'package:gecko/models/myWallets.dart';
import 'package:gecko/models/walletData.dart';
import 'package:gecko/screens/history.dart'; import 'package:gecko/screens/history.dart';
import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:graphql_flutter/graphql_flutter.dart';
import 'package:jdenticon_dart/jdenticon_dart.dart'; import 'package:jdenticon_dart/jdenticon_dart.dart';
@ -49,8 +51,12 @@ class HistoryProvider with ChangeNotifier {
} }
Future<String> pay(BuildContext context, String pinCode) async { Future<String> pay(BuildContext context, String pinCode) async {
// MyWalletsProvider _myWalletProvider = MyWalletsProvider(); MyWalletsProvider _myWalletModel = MyWalletsProvider();
String dewif = chestBox.get(configBox.get('currentChest')).dewif; int currentChest = configBox.get('currentChest');
WalletData defaultWallet = _myWalletModel.getDefaultWallet(currentChest);
String dewif = chestBox.get(currentChest).dewif;
try { try {
await DubpRust.simplePaymentFromTransparentAccount( await DubpRust.simplePaymentFromTransparentAccount(
accountIndex: defaultWallet.derivation, accountIndex: defaultWallet.derivation,

View File

@ -45,7 +45,7 @@ class MyWalletsProvider with ChangeNotifier {
WalletData getWalletData(List<int> _id) { WalletData getWalletData(List<int> _id) {
if (_id.isEmpty) return WalletData(); if (_id.isEmpty) return WalletData();
int _chest = _id[getCurrentChest()]; int _chest = _id[0];
int _nbr = _id[1]; int _nbr = _id[1];
var _targetedWallet; var _targetedWallet;
@ -59,15 +59,13 @@ class MyWalletsProvider with ChangeNotifier {
return _targetedWallet; return _targetedWallet;
} }
void getDefaultWallet(int chest) { WalletData getDefaultWallet(int chest) {
MyWalletsProvider myWalletsProvider = MyWalletsProvider(); if (chestBox.isEmpty) {
return WalletData(chest: 0, number: 0);
if (configBox.get('defaultWallet')[chest] == null) { } else {
configBox.put('defaultWallet', [chest, 0]); int defaultWalletNumber = chestBox.get(chest).defaultWallet;
return getWalletData([chest, defaultWalletNumber]);
} }
defaultWallet = myWalletsProvider
.getWalletData(configBox.get('defaultWallet').cast<int>());
} }
Future<int> deleteAllWallet(context) async { Future<int> deleteAllWallet(context) async {

View File

@ -3,10 +3,12 @@ import 'package:flutter/services.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/cesiumPlus.dart'; import 'package:gecko/models/cesiumPlus.dart';
import 'package:gecko/models/home.dart'; import 'package:gecko/models/home.dart';
import 'package:gecko/models/myWallets.dart';
import 'package:gecko/models/queries.dart'; import 'package:gecko/models/queries.dart';
import 'package:gecko/models/history.dart'; import 'package:gecko/models/history.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/foundation.dart'; import 'package:flutter/foundation.dart';
import 'package:gecko/models/walletData.dart';
import 'package:gecko/screens/myWallets/unlockingWallet.dart'; import 'package:gecko/screens/myWallets/unlockingWallet.dart';
import 'dart:ui'; import 'dart:ui';
import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:graphql_flutter/graphql_flutter.dart';
@ -330,6 +332,10 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
} }
Widget payView(context, HistoryProvider _historyProvider) { Widget payView(context, HistoryProvider _historyProvider) {
MyWalletsProvider _myWalletProvider = MyWalletsProvider();
WalletData defaultWallet =
_myWalletProvider.getDefaultWallet(configBox.get('currentChest'));
return Stack( return Stack(
clipBehavior: Clip.hardEdge, clipBehavior: Clip.hardEdge,
children: <Widget>[ children: <Widget>[

View File

@ -4,6 +4,7 @@ import 'package:gecko/models/history.dart';
import 'package:gecko/models/home.dart'; import 'package:gecko/models/home.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/models/myWallets.dart'; import 'package:gecko/models/myWallets.dart';
import 'package:gecko/models/walletData.dart';
import 'package:gecko/screens/myWallets/unlockingWallet.dart'; import 'package:gecko/screens/myWallets/unlockingWallet.dart';
import 'package:gecko/screens/onBoarding/0_noKeychainFound.dart'; import 'package:gecko/screens/onBoarding/0_noKeychainFound.dart';
import 'dart:ui'; import 'dart:ui';
@ -22,6 +23,9 @@ class HomeScreen extends StatelessWidget {
Provider.of<MyWalletsProvider>(context); Provider.of<MyWalletsProvider>(context);
final bool isWalletsExists = _myWalletProvider.checkIfWalletExist(); final bool isWalletsExists = _myWalletProvider.checkIfWalletExist();
WalletData defaultWallet =
_myWalletProvider.getDefaultWallet(configBox.get('currentChest'));
// walletBox.toMap().forEach((key, value) { // walletBox.toMap().forEach((key, value) {
// if (value.chest == 0) { // if (value.chest == 0) {
// print('$key: ${value.derivation}'); // print('$key: ${value.derivation}');

View File

@ -1,17 +1,25 @@
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/myWallets.dart';
import 'package:gecko/screens/commonElements.dart'; import 'package:gecko/screens/commonElements.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/screens/onBoarding/1.dart'; import 'package:gecko/screens/onBoarding/1.dart';
import 'package:carousel_slider/carousel_slider.dart';
import 'package:provider/provider.dart';
// ignore: must_be_immutable // ignore: must_be_immutable
class ChooseChest extends StatelessWidget { class ChooseChest extends StatelessWidget {
TextEditingController tplController = TextEditingController(); TextEditingController tplController = TextEditingController();
CarouselController buttonCarouselController = CarouselController();
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context);
int currentChest = configBox.get('currentChest'); int currentChest = configBox.get('currentChest');
return Scaffold( return Scaffold(
appBar: AppBar( appBar: AppBar(
title: SizedBox( title: SizedBox(
@ -21,17 +29,35 @@ class ChooseChest extends StatelessWidget {
body: SafeArea( body: SafeArea(
child: Column(children: <Widget>[ child: Column(children: <Widget>[
SizedBox(height: 190), SizedBox(height: 190),
Center( CarouselSlider(
child: Image.asset( carouselController: buttonCarouselController,
'assets/chests/$currentChest.png', options: CarouselOptions(
height: 210,
onPageChanged: (index, reason) {
currentChest = index;
},
enableInfiniteScroll: false,
initialPage: currentChest,
enlargeCenterPage: true,
viewportFraction: 0.6,
), ),
items: chestBox.toMap().entries.map((i) {
return Builder(
builder: (BuildContext context) {
return Column(children: <Widget>[
Image.asset(
'assets/chests/${i.value.imageName}',
),
SizedBox(height: 30),
Text(
i.value.name,
style: TextStyle(fontSize: 21),
),
]);
},
);
}).toList(),
), ),
SizedBox(height: 40),
Text(
chestBox.get(currentChest).name,
style: TextStyle(fontSize: 21),
),
SizedBox(height: 15),
Image.asset('assets/chests/vector.png'), Image.asset('assets/chests/vector.png'),
SizedBox(height: 15), SizedBox(height: 15),
Text( Text(
@ -49,7 +75,8 @@ class ChooseChest extends StatelessWidget {
onPrimary: Colors.black, // foreground onPrimary: Colors.black, // foreground
), ),
onPressed: () { onPressed: () {
configBox.put('currentChest', 0); configBox.put('currentChest', currentChest);
_myWalletProvider.rebuildWidget();
Navigator.popUntil( Navigator.popUntil(
context, context,
ModalRoute.withName('/mywallets'), ModalRoute.withName('/mywallets'),

View File

@ -169,7 +169,7 @@ class ImportWalletScreen extends StatelessWidget {
_generateWalletProvider.isPinChanged _generateWalletProvider.isPinChanged
? () { ? () {
_generateWalletProvider _generateWalletProvider
.importWallet( .importCesiumWallet(
context, context,
_generateWalletProvider _generateWalletProvider
.cesiumID.text, .cesiumID.text,

View File

@ -58,14 +58,6 @@ class UnlockingWallet extends StatelessWidget {
pinForm(context, _pinLenght, wallet.number, wallet.derivation), pinForm(context, _pinLenght, wallet.number, wallet.derivation),
]), ]),
), ),
GestureDetector(
onTap: () {
Navigator.popUntil(
context,
ModalRoute.withName('/'),
);
},
child: Icon(Icons.home))
]), ]),
)); ));
} }

View File

@ -47,8 +47,11 @@ class WalletOptions extends StatelessWidget {
_walletOptions.walletID = [0, wallet.number]; _walletOptions.walletID = [0, wallet.number];
WalletData defaultWallet =
_myWalletProvider.getDefaultWallet(_currentChest);
_walletOptions.isDefaultWallet = _walletOptions.isDefaultWallet =
(defaultWallet.id()[1] == _walletOptions.walletID[1]); (defaultWallet.number == _walletOptions.walletID[1]);
int currentChest = _myWalletProvider.getCurrentChest(); int currentChest = _myWalletProvider.getCurrentChest();
@ -334,7 +337,8 @@ class WalletOptions extends StatelessWidget {
onTap: !_walletOptions.isDefaultWallet onTap: !_walletOptions.isDefaultWallet
? () { ? () {
defaultWallet = wallet; defaultWallet = wallet;
configBox.put('defaultWallet', wallet.id()); chestBox.get(currentChest).defaultWallet =
wallet.number;
_myWalletProvider.readAllWallets(_currentChest); _myWalletProvider.readAllWallets(_currentChest);
_myWalletProvider.rebuildWidget(); _myWalletProvider.rebuildWidget();
} }

View File

@ -136,6 +136,8 @@ class WalletsHome extends StatelessWidget {
} }
List _listWallets = _myWalletProvider.listWallets; List _listWallets = _myWalletProvider.listWallets;
WalletData defaultWallet =
_myWalletProvider.getDefaultWallet(configBox.get('currentChest'));
return CustomScrollView(slivers: <Widget>[ return CustomScrollView(slivers: <Widget>[
SliverToBoxAdapter(child: SizedBox(height: 20)), SliverToBoxAdapter(child: SizedBox(height: 20)),

View File

@ -68,16 +68,14 @@ class SettingsScreen extends StatelessWidget {
primary: yellowC, // background primary: yellowC, // background
onPrimary: Colors.black, // foreground onPrimary: Colors.black, // foreground
), ),
onPressed: !_myWallets.checkIfWalletExist() onPressed: () => Navigator.push(
? () => Navigator.push( context,
context, MaterialPageRoute(builder: (context) {
MaterialPageRoute(builder: (context) { return GenerateWalletsScreen();
return GenerateWalletsScreen(); }),
}), ).then((value) => {
).then((value) => { if (value == true) {Navigator.pop(context)}
if (value == true) {Navigator.pop(context)} }),
})
: null,
child: Text("Générer un nouveau trousseau", child: Text("Générer un nouveau trousseau",
style: TextStyle(fontSize: 16)))), style: TextStyle(fontSize: 16)))),
Expanded( Expanded(

View File

@ -120,6 +120,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "8.1.3" version: "8.1.3"
carousel_slider:
dependency: "direct main"
description:
name: carousel_slider
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.0"
characters: characters:
dependency: transitive dependency: transitive
description: description:

View File

@ -54,6 +54,7 @@ dependencies:
unorm_dart: ^0.2.0 unorm_dart: ^0.2.0
xml: ^5.3.0 xml: ^5.3.0
assorted_layout_widgets: ^5.2.1 assorted_layout_widgets: ^5.2.1
carousel_slider: ^4.0.0
flutter_icons: flutter_icons:
android: "ic_launcher" android: "ic_launcher"