Gecko is now realy multiChest, with slideshow choice
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 6.0 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 6.3 KiB |
After Width: | Height: | Size: 6.1 KiB |
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -59,7 +59,8 @@ class GenerateWalletsProvider with ChangeNotifier {
|
|||
ChestData thisChest = ChestData(
|
||||
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,
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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>[
|
||||
|
|
|
@ -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}');
|
||||
|
|
|
@ -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: 40),
|
||||
SizedBox(height: 30),
|
||||
Text(
|
||||
chestBox.get(currentChest).name,
|
||||
i.value.name,
|
||||
style: TextStyle(fontSize: 21),
|
||||
),
|
||||
SizedBox(height: 15),
|
||||
]);
|
||||
},
|
||||
);
|
||||
}).toList(),
|
||||
),
|
||||
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'),
|
||||
|
|
|
@ -169,7 +169,7 @@ class ImportWalletScreen extends StatelessWidget {
|
|||
_generateWalletProvider.isPinChanged
|
||||
? () {
|
||||
_generateWalletProvider
|
||||
.importWallet(
|
||||
.importCesiumWallet(
|
||||
context,
|
||||
_generateWalletProvider
|
||||
.cesiumID.text,
|
||||
|
|
|
@ -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))
|
||||
]),
|
||||
));
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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)),
|
||||
|
|
|
@ -68,16 +68,14 @@ class SettingsScreen extends StatelessWidget {
|
|||
primary: yellowC, // background
|
||||
onPrimary: Colors.black, // foreground
|
||||
),
|
||||
onPressed: !_myWallets.checkIfWalletExist()
|
||||
? () => Navigator.push(
|
||||
onPressed: () => Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(builder: (context) {
|
||||
return GenerateWalletsScreen();
|
||||
}),
|
||||
).then((value) => {
|
||||
if (value == true) {Navigator.pop(context)}
|
||||
})
|
||||
: null,
|
||||
}),
|
||||
child: Text("Générer un nouveau trousseau",
|
||||
style: TextStyle(fontSize: 16)))),
|
||||
Expanded(
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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"
|
||||
|
|