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)
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
String toString() {
return this.name;

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1,17 +1,25 @@
import 'package:flutter/services.dart';
import 'package:gecko/globals.dart';
import 'package:gecko/models/myWallets.dart';
import 'package:gecko/screens/commonElements.dart';
import 'package:flutter/material.dart';
import 'package:gecko/screens/onBoarding/1.dart';
import 'package:carousel_slider/carousel_slider.dart';
import 'package:provider/provider.dart';
// ignore: must_be_immutable
class ChooseChest extends StatelessWidget {
TextEditingController tplController = TextEditingController();
CarouselController buttonCarouselController = CarouselController();
@override
Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
MyWalletsProvider _myWalletProvider =
Provider.of<MyWalletsProvider>(context);
int currentChest = configBox.get('currentChest');
return Scaffold(
appBar: AppBar(
title: SizedBox(
@ -21,17 +29,35 @@ class ChooseChest extends StatelessWidget {
body: SafeArea(
child: Column(children: <Widget>[
SizedBox(height: 190),
Center(
child: Image.asset(
'assets/chests/$currentChest.png',
CarouselSlider(
carouselController: buttonCarouselController,
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'),
SizedBox(height: 15),
Text(
@ -49,7 +75,8 @@ class ChooseChest extends StatelessWidget {
onPrimary: Colors.black, // foreground
),
onPressed: () {
configBox.put('currentChest', 0);
configBox.put('currentChest', currentChest);
_myWalletProvider.rebuildWidget();
Navigator.popUntil(
context,
ModalRoute.withName('/mywallets'),

View File

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

View File

@ -58,14 +58,6 @@ class UnlockingWallet extends StatelessWidget {
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];
WalletData defaultWallet =
_myWalletProvider.getDefaultWallet(_currentChest);
_walletOptions.isDefaultWallet =
(defaultWallet.id()[1] == _walletOptions.walletID[1]);
(defaultWallet.number == _walletOptions.walletID[1]);
int currentChest = _myWalletProvider.getCurrentChest();
@ -334,7 +337,8 @@ class WalletOptions extends StatelessWidget {
onTap: !_walletOptions.isDefaultWallet
? () {
defaultWallet = wallet;
configBox.put('defaultWallet', wallet.id());
chestBox.get(currentChest).defaultWallet =
wallet.number;
_myWalletProvider.readAllWallets(_currentChest);
_myWalletProvider.rebuildWidget();
}

View File

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

View File

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

View File

@ -120,6 +120,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
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:
dependency: transitive
description:

View File

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