Optimize profile view
This commit is contained in:
parent
39881ba136
commit
bd87ea5ab8
Binary file not shown.
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 14 KiB |
|
@ -25,7 +25,7 @@ import 'package:gecko/models/chest_data.dart';
|
||||||
import 'package:gecko/models/chest_provider.dart';
|
import 'package:gecko/models/chest_provider.dart';
|
||||||
import 'package:gecko/models/g1_wallets_list.dart';
|
import 'package:gecko/models/g1_wallets_list.dart';
|
||||||
import 'package:gecko/models/generate_wallets.dart';
|
import 'package:gecko/models/generate_wallets.dart';
|
||||||
import 'package:gecko/models/history.dart';
|
import 'package:gecko/models/wallets_profiles.dart';
|
||||||
import 'package:gecko/models/home.dart';
|
import 'package:gecko/models/home.dart';
|
||||||
import 'package:gecko/models/my_wallets.dart';
|
import 'package:gecko/models/my_wallets.dart';
|
||||||
import 'package:gecko/models/search.dart';
|
import 'package:gecko/models/search.dart';
|
||||||
|
@ -139,7 +139,7 @@ class Gecko extends StatelessWidget {
|
||||||
providers: [
|
providers: [
|
||||||
// Provider(create: (context) => HistoryProvider()),
|
// Provider(create: (context) => HistoryProvider()),
|
||||||
ChangeNotifierProvider(create: (_) => HomeProvider()),
|
ChangeNotifierProvider(create: (_) => HomeProvider()),
|
||||||
ChangeNotifierProvider(create: (_) => HistoryProvider('')),
|
ChangeNotifierProvider(create: (_) => WalletsProfilesProvider('')),
|
||||||
ChangeNotifierProvider(create: (_) => MyWalletsProvider()),
|
ChangeNotifierProvider(create: (_) => MyWalletsProvider()),
|
||||||
ChangeNotifierProvider(create: (_) => ChestProvider()),
|
ChangeNotifierProvider(create: (_) => ChestProvider()),
|
||||||
ChangeNotifierProvider(create: (_) => GenerateWalletsProvider()),
|
ChangeNotifierProvider(create: (_) => GenerateWalletsProvider()),
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import 'package:flutter/material.dart';
|
||||||
import 'package:hive_flutter/hive_flutter.dart';
|
import 'package:hive_flutter/hive_flutter.dart';
|
||||||
|
|
||||||
part 'g1_wallets_list.g.dart';
|
part 'g1_wallets_list.g.dart';
|
||||||
|
@ -13,7 +14,10 @@ class G1WalletsList {
|
||||||
@HiveField(3)
|
@HiveField(3)
|
||||||
Id id;
|
Id id;
|
||||||
|
|
||||||
G1WalletsList({this.pubkey, this.balance, this.id});
|
@HiveField(4)
|
||||||
|
Image avatar;
|
||||||
|
|
||||||
|
G1WalletsList({this.pubkey, this.balance, this.id, this.avatar});
|
||||||
|
|
||||||
G1WalletsList.fromJson(Map<String, dynamic> json) {
|
G1WalletsList.fromJson(Map<String, dynamic> json) {
|
||||||
pubkey = json['pubkey'];
|
pubkey = json['pubkey'];
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||||
|
|
||||||
|
// ignore_for_file: unused_local_variable
|
||||||
|
|
||||||
part of 'g1_wallets_list.dart';
|
part of 'g1_wallets_list.dart';
|
||||||
|
|
||||||
// **************************************************************************
|
// **************************************************************************
|
||||||
|
@ -20,19 +22,22 @@ class G1WalletsListAdapter extends TypeAdapter<G1WalletsList> {
|
||||||
pubkey: fields[0] as String,
|
pubkey: fields[0] as String,
|
||||||
balance: fields[1] as double,
|
balance: fields[1] as double,
|
||||||
id: fields[3] as Id,
|
id: fields[3] as Id,
|
||||||
|
avatar: fields[4] as Image,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void write(BinaryWriter writer, G1WalletsList obj) {
|
void write(BinaryWriter writer, G1WalletsList obj) {
|
||||||
writer
|
writer
|
||||||
..writeByte(3)
|
..writeByte(4)
|
||||||
..writeByte(0)
|
..writeByte(0)
|
||||||
..write(obj.pubkey)
|
..write(obj.pubkey)
|
||||||
..writeByte(1)
|
..writeByte(1)
|
||||||
..write(obj.balance)
|
..write(obj.balance)
|
||||||
..writeByte(3)
|
..writeByte(3)
|
||||||
..write(obj.id);
|
..write(obj.id)
|
||||||
|
..writeByte(4)
|
||||||
|
..write(obj.avatar);
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -52,6 +57,10 @@ class IdAdapter extends TypeAdapter<Id> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Id read(BinaryReader reader) {
|
Id read(BinaryReader reader) {
|
||||||
|
final numOfFields = reader.readByte();
|
||||||
|
final fields = <int, dynamic>{
|
||||||
|
for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(),
|
||||||
|
};
|
||||||
return Id();
|
return Id();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,7 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/screens/history.dart';
|
import 'package:gecko/screens/old_history_pay.dart';
|
||||||
import 'package:gecko/screens/myWallets/wallets_home.dart';
|
import 'package:gecko/screens/myWallets/wallets_home.dart';
|
||||||
import 'package:package_info/package_info.dart';
|
import 'package:package_info/package_info.dart';
|
||||||
|
|
||||||
|
|
|
@ -19,14 +19,17 @@ class SearchProvider with ChangeNotifier {
|
||||||
searchResult.clear();
|
searchResult.clear();
|
||||||
int searchTime = DateTime.now().millisecondsSinceEpoch;
|
int searchTime = DateTime.now().millisecondsSinceEpoch;
|
||||||
|
|
||||||
if (cacheTime + cacheDuring <= searchTime) {
|
if (cacheTime + 0 <= searchTime) {
|
||||||
g1WalletsBox.clear();
|
g1WalletsBox.clear();
|
||||||
final url = Uri.parse('https://g1-stats.axiom-team.fr/data/forbes.json');
|
final url = Uri.parse('https://g1-stats.axiom-team.fr/data/forbes.json');
|
||||||
final response = await http.get(url);
|
final response = await http.get(url);
|
||||||
|
|
||||||
List<G1WalletsList> _listWallets = _parseG1Wallets(response.body);
|
List<G1WalletsList> _listWallets = _parseG1Wallets(response.body);
|
||||||
|
Map<String, G1WalletsList> _mapWallets = {
|
||||||
|
for (var e in _listWallets) e.pubkey: e
|
||||||
|
};
|
||||||
|
|
||||||
await g1WalletsBox.addAll(_listWallets);
|
await g1WalletsBox.putAll(_mapWallets);
|
||||||
cacheTime = DateTime.now().millisecondsSinceEpoch;
|
cacheTime = DateTime.now().millisecondsSinceEpoch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,10 +15,11 @@ import 'package:truncate/truncate.dart';
|
||||||
import 'package:crypto/crypto.dart';
|
import 'package:crypto/crypto.dart';
|
||||||
import 'package:fast_base58/fast_base58.dart';
|
import 'package:fast_base58/fast_base58.dart';
|
||||||
|
|
||||||
class HistoryProvider with ChangeNotifier {
|
class WalletsProfilesProvider with ChangeNotifier {
|
||||||
|
WalletsProfilesProvider(this.pubkey);
|
||||||
|
|
||||||
String pubkey = '';
|
String pubkey = '';
|
||||||
String pubkeyShort = '';
|
String pubkeyShort = '';
|
||||||
HistoryProvider(this.pubkey);
|
|
||||||
final TextEditingController outputPubkey = TextEditingController();
|
final TextEditingController outputPubkey = TextEditingController();
|
||||||
List transBC;
|
List transBC;
|
||||||
String fetchMoreCursor;
|
String fetchMoreCursor;
|
||||||
|
@ -38,9 +39,14 @@ class HistoryProvider with ChangeNotifier {
|
||||||
log.e(e);
|
log.e(e);
|
||||||
return 'false';
|
return 'false';
|
||||||
}
|
}
|
||||||
if (barcode != null) {
|
if (barcode != null && isPubkey(context, barcode)) {
|
||||||
outputPubkey.text = barcode;
|
outputPubkey.text = barcode;
|
||||||
isPubkey(context, barcode);
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(builder: (context) {
|
||||||
|
return const WalletViewScreen();
|
||||||
|
}),
|
||||||
|
);
|
||||||
} else {
|
} else {
|
||||||
return 'false';
|
return 'false';
|
||||||
}
|
}
|
||||||
|
@ -71,7 +77,7 @@ class HistoryProvider with ChangeNotifier {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
String isPubkey(context, pubkey, {bool goHistory}) {
|
bool isPubkey(context, pubkey) {
|
||||||
final RegExp regExp = RegExp(
|
final RegExp regExp = RegExp(
|
||||||
r'^[a-zA-Z0-9]+$',
|
r'^[a-zA-Z0-9]+$',
|
||||||
caseSensitive: false,
|
caseSensitive: false,
|
||||||
|
@ -84,32 +90,22 @@ class HistoryProvider with ChangeNotifier {
|
||||||
log.d("C'est une pubkey !");
|
log.d("C'est une pubkey !");
|
||||||
|
|
||||||
this.pubkey = pubkey;
|
this.pubkey = pubkey;
|
||||||
getShortPubkey(pubkey);
|
// getShortPubkey(pubkey);
|
||||||
|
|
||||||
outputPubkey.text = pubkey;
|
// outputPubkey.text = pubkey;
|
||||||
|
|
||||||
goHistory ??= false;
|
// Navigator.push(
|
||||||
|
// context,
|
||||||
|
// MaterialPageRoute(builder: (context) {
|
||||||
|
// return const WalletViewScreen();
|
||||||
|
// }),
|
||||||
|
// );
|
||||||
|
// notifyListeners();
|
||||||
|
|
||||||
if (goHistory) {
|
return true;
|
||||||
isHistoryScreen = true;
|
} else {
|
||||||
historySwitchButtun = "Payer";
|
return false;
|
||||||
} else {
|
|
||||||
isHistoryScreen = false;
|
|
||||||
historySwitchButtun = "Voir l'historique";
|
|
||||||
}
|
|
||||||
|
|
||||||
Navigator.push(
|
|
||||||
context,
|
|
||||||
MaterialPageRoute(builder: (context) {
|
|
||||||
return WalletViewScreen();
|
|
||||||
}),
|
|
||||||
);
|
|
||||||
notifyListeners();
|
|
||||||
|
|
||||||
return pubkey;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return '';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
String getShortPubkey(String pubkey) {
|
String getShortPubkey(String pubkey) {
|
|
@ -8,8 +8,11 @@ import 'package:flutter/material.dart';
|
||||||
class AvatarFullscreen extends StatelessWidget {
|
class AvatarFullscreen extends StatelessWidget {
|
||||||
TextEditingController tplController = TextEditingController();
|
TextEditingController tplController = TextEditingController();
|
||||||
|
|
||||||
AvatarFullscreen(this.avatar, {Key key}) : super(key: key);
|
AvatarFullscreen(this.avatar, {this.title, this.color, Key key})
|
||||||
|
: super(key: key);
|
||||||
final Image avatar;
|
final Image avatar;
|
||||||
|
final String title;
|
||||||
|
final Color color;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
|
@ -18,7 +21,7 @@ class AvatarFullscreen extends StatelessWidget {
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
backgroundColor: Colors.black,
|
backgroundColor: color ?? Colors.black,
|
||||||
toolbarHeight: 60 * ratio,
|
toolbarHeight: 60 * ratio,
|
||||||
leading: IconButton(
|
leading: IconButton(
|
||||||
icon: Icon(Icons.arrow_back, color: orangeC),
|
icon: Icon(Icons.arrow_back, color: orangeC),
|
||||||
|
@ -28,14 +31,14 @@ class AvatarFullscreen extends StatelessWidget {
|
||||||
title: SizedBox(
|
title: SizedBox(
|
||||||
height: 22,
|
height: 22,
|
||||||
child: Text(
|
child: Text(
|
||||||
'Photo de profil',
|
title ?? 'Photo de profil',
|
||||||
style: TextStyle(color: orangeC),
|
style: TextStyle(color: orangeC),
|
||||||
),
|
),
|
||||||
)),
|
)),
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
child: SizedBox.expand(
|
child: SizedBox.expand(
|
||||||
child: Container(
|
child: Container(
|
||||||
color: Colors.black,
|
color: color ?? Colors.black,
|
||||||
// alignment: Alignment.center,
|
// alignment: Alignment.center,
|
||||||
// height: MediaQuery.of(context).size.height,
|
// height: MediaQuery.of(context).size.height,
|
||||||
// width: MediaQuery.of(context).size.width,
|
// width: MediaQuery.of(context).size.width,
|
||||||
|
|
|
@ -2,7 +2,7 @@ import 'package:bubble/bubble.dart';
|
||||||
import 'package:dubp/dubp.dart';
|
import 'package:dubp/dubp.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/chest_provider.dart';
|
import 'package:gecko/models/chest_provider.dart';
|
||||||
import 'package:gecko/models/history.dart';
|
import 'package:gecko/models/wallets_profiles.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/models/home.dart';
|
import 'package:gecko/models/home.dart';
|
||||||
import 'package:gecko/models/my_wallets.dart';
|
import 'package:gecko/models/my_wallets.dart';
|
||||||
|
@ -123,7 +123,8 @@ Widget geckHome(context) {
|
||||||
MyWalletsProvider _myWalletProvider = Provider.of<MyWalletsProvider>(context);
|
MyWalletsProvider _myWalletProvider = Provider.of<MyWalletsProvider>(context);
|
||||||
Provider.of<ChestProvider>(context);
|
Provider.of<ChestProvider>(context);
|
||||||
|
|
||||||
HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
|
WalletsProfilesProvider _historyProvider =
|
||||||
|
Provider.of<WalletsProfilesProvider>(context);
|
||||||
final double statusBarHeight = MediaQuery.of(context).padding.top;
|
final double statusBarHeight = MediaQuery.of(context).padding.top;
|
||||||
return Container(
|
return Container(
|
||||||
decoration: const BoxDecoration(
|
decoration: const BoxDecoration(
|
||||||
|
|
|
@ -5,11 +5,12 @@ import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:gecko/models/chest_data.dart';
|
import 'package:gecko/models/chest_data.dart';
|
||||||
import 'package:gecko/models/chest_provider.dart';
|
import 'package:gecko/models/chest_provider.dart';
|
||||||
import 'package:gecko/models/history.dart';
|
import 'package:gecko/models/wallets_profiles.dart';
|
||||||
import 'package:gecko/models/my_wallets.dart';
|
import 'package:gecko/models/my_wallets.dart';
|
||||||
import 'package:gecko/models/queries.dart';
|
import 'package:gecko/models/queries.dart';
|
||||||
import 'package:gecko/models/wallet_options.dart';
|
import 'package:gecko/models/wallet_options.dart';
|
||||||
import 'package:gecko/screens/myWallets/change_pin.dart';
|
import 'package:gecko/screens/myWallets/change_pin.dart';
|
||||||
|
import 'package:gecko/screens/wallet_view.dart';
|
||||||
import 'package:graphql_flutter/graphql_flutter.dart';
|
import 'package:graphql_flutter/graphql_flutter.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
@ -24,7 +25,8 @@ Widget cesiumWalletOptions(BuildContext context, ChestData cesiumWallet,
|
||||||
Provider.of<WalletOptionsProvider>(context);
|
Provider.of<WalletOptionsProvider>(context);
|
||||||
ChestProvider _chestProvider =
|
ChestProvider _chestProvider =
|
||||||
Provider.of<ChestProvider>(context, listen: false);
|
Provider.of<ChestProvider>(context, listen: false);
|
||||||
HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
|
WalletsProfilesProvider _historyProvider =
|
||||||
|
Provider.of<WalletsProfilesProvider>(context);
|
||||||
|
|
||||||
final String shortPubkey =
|
final String shortPubkey =
|
||||||
_walletOptions.getShortPubkey(_walletOptions.pubkey.text);
|
_walletOptions.getShortPubkey(_walletOptions.pubkey.text);
|
||||||
|
@ -283,8 +285,15 @@ Widget cesiumWalletOptions(BuildContext context, ChestData cesiumWallet,
|
||||||
InkWell(
|
InkWell(
|
||||||
key: const Key('displayHistory'),
|
key: const Key('displayHistory'),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
_historyProvider.isPubkey(ctx, _walletOptions.pubkey.text,
|
if (_historyProvider.isPubkey(
|
||||||
goHistory: true);
|
context, _walletOptions.pubkey.text)) {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(builder: (context) {
|
||||||
|
return const WalletViewScreen();
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
height: 50,
|
height: 50,
|
||||||
|
|
|
@ -2,7 +2,7 @@ import 'dart:async';
|
||||||
import 'package:dubp/dubp.dart';
|
import 'package:dubp/dubp.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:gecko/models/chest_data.dart';
|
import 'package:gecko/models/chest_data.dart';
|
||||||
import 'package:gecko/models/history.dart';
|
import 'package:gecko/models/wallets_profiles.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/models/wallet_options.dart';
|
import 'package:gecko/models/wallet_options.dart';
|
||||||
|
@ -124,7 +124,8 @@ class UnlockingWallet extends StatelessWidget {
|
||||||
Provider.of<WalletOptionsProvider>(context);
|
Provider.of<WalletOptionsProvider>(context);
|
||||||
MyWalletsProvider _myWalletProvider =
|
MyWalletsProvider _myWalletProvider =
|
||||||
Provider.of<MyWalletsProvider>(context);
|
Provider.of<MyWalletsProvider>(context);
|
||||||
HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
|
WalletsProfilesProvider _historyProvider =
|
||||||
|
Provider.of<WalletsProfilesProvider>(context);
|
||||||
|
|
||||||
FocusNode pinFocus = FocusNode();
|
FocusNode pinFocus = FocusNode();
|
||||||
|
|
||||||
|
|
|
@ -3,11 +3,12 @@ import 'dart:ui';
|
||||||
import 'package:flutter/foundation.dart';
|
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/history.dart';
|
import 'package:gecko/models/wallets_profiles.dart';
|
||||||
import 'package:gecko/models/my_wallets.dart';
|
import 'package:gecko/models/my_wallets.dart';
|
||||||
import 'package:gecko/models/queries.dart';
|
import 'package:gecko/models/queries.dart';
|
||||||
import 'package:gecko/models/wallet_data.dart';
|
import 'package:gecko/models/wallet_data.dart';
|
||||||
import 'package:gecko/models/wallet_options.dart';
|
import 'package:gecko/models/wallet_options.dart';
|
||||||
|
import 'package:gecko/screens/wallet_view.dart';
|
||||||
import 'package:graphql_flutter/graphql_flutter.dart';
|
import 'package:graphql_flutter/graphql_flutter.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
|
@ -27,7 +28,8 @@ class WalletOptions extends StatelessWidget {
|
||||||
Provider.of<WalletOptionsProvider>(context);
|
Provider.of<WalletOptionsProvider>(context);
|
||||||
MyWalletsProvider _myWalletProvider =
|
MyWalletsProvider _myWalletProvider =
|
||||||
Provider.of<MyWalletsProvider>(context);
|
Provider.of<MyWalletsProvider>(context);
|
||||||
HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
|
WalletsProfilesProvider _historyProvider =
|
||||||
|
Provider.of<WalletsProfilesProvider>(context);
|
||||||
|
|
||||||
final int _currentChest = _myWalletProvider.getCurrentChest();
|
final int _currentChest = _myWalletProvider.getCurrentChest();
|
||||||
final String shortPubkey =
|
final String shortPubkey =
|
||||||
|
@ -263,14 +265,14 @@ class WalletOptions extends StatelessWidget {
|
||||||
])),
|
])),
|
||||||
SizedBox(height: 4 * ratio),
|
SizedBox(height: 4 * ratio),
|
||||||
FutureBuilder(
|
FutureBuilder(
|
||||||
future:
|
future:
|
||||||
_walletOptions.generateQRcode(_walletOptions.pubkey.text),
|
_walletOptions.generateQRcode(_walletOptions.pubkey.text),
|
||||||
builder: (context, snapshot) {
|
builder: (context, snapshot) {
|
||||||
return snapshot.data != null
|
return snapshot.data != null
|
||||||
? Image.memory(snapshot.data,
|
? Image.memory(snapshot.data, height: isTall ? 300 : 270)
|
||||||
height: isTall ? 300 : 270)
|
: const Text('-', style: TextStyle(fontSize: 20));
|
||||||
: const Text('-', style: TextStyle(fontSize: 20));
|
},
|
||||||
}),
|
),
|
||||||
SizedBox(height: 15 * ratio),
|
SizedBox(height: 15 * ratio),
|
||||||
GestureDetector(
|
GestureDetector(
|
||||||
key: const Key('copyPubkey'),
|
key: const Key('copyPubkey'),
|
||||||
|
@ -337,8 +339,15 @@ class WalletOptions extends StatelessWidget {
|
||||||
InkWell(
|
InkWell(
|
||||||
key: const Key('displayHistory'),
|
key: const Key('displayHistory'),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
_historyProvider.isPubkey(ctx, _walletOptions.pubkey.text,
|
if (_historyProvider.isPubkey(
|
||||||
goHistory: true);
|
context, _walletOptions.pubkey.text)) {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(builder: (context) {
|
||||||
|
return const WalletViewScreen();
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
child: SizedBox(
|
child: SizedBox(
|
||||||
height: 50,
|
height: 50,
|
||||||
|
|
|
@ -4,11 +4,12 @@ import 'package:gecko/models/cesium_plus.dart';
|
||||||
import 'package:gecko/models/home.dart';
|
import 'package:gecko/models/home.dart';
|
||||||
import 'package:gecko/models/my_wallets.dart';
|
import 'package:gecko/models/my_wallets.dart';
|
||||||
import 'package:gecko/models/queries.dart';
|
import 'package:gecko/models/queries.dart';
|
||||||
import 'package:gecko/models/history.dart';
|
import 'package:gecko/models/wallets_profiles.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/wallet_data.dart';
|
import 'package:gecko/models/wallet_data.dart';
|
||||||
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
|
||||||
|
import 'package:gecko/screens/wallet_view.dart';
|
||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
import 'package:graphql_flutter/graphql_flutter.dart';
|
import 'package:graphql_flutter/graphql_flutter.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
@ -33,7 +34,8 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||||
HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
|
WalletsProfilesProvider _historyProvider =
|
||||||
|
Provider.of<WalletsProfilesProvider>(context);
|
||||||
HomeProvider _homeProvider = Provider.of<HomeProvider>(context);
|
HomeProvider _homeProvider = Provider.of<HomeProvider>(context);
|
||||||
_outputPubkey.text = _historyProvider.pubkey;
|
_outputPubkey.text = _historyProvider.pubkey;
|
||||||
log.i('Build pubkey : ' + _historyProvider.pubkey);
|
log.i('Build pubkey : ' + _historyProvider.pubkey);
|
||||||
|
@ -61,10 +63,14 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
|
||||||
controller: _homeProvider.searchQuery,
|
controller: _homeProvider.searchQuery,
|
||||||
onChanged: (text) {
|
onChanged: (text) {
|
||||||
log.d("Clé tappé: $text");
|
log.d("Clé tappé: $text");
|
||||||
final String searchResult =
|
if (_historyProvider.isPubkey(context, text)) {
|
||||||
_historyProvider.isPubkey(context, text);
|
|
||||||
if (searchResult != '') {
|
|
||||||
_homeProvider.currentIndex = 0;
|
_homeProvider.currentIndex = 0;
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(builder: (context) {
|
||||||
|
return const WalletViewScreen();
|
||||||
|
}),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
|
@ -111,7 +117,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
|
||||||
]));
|
]));
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget historyQuery(context, HistoryProvider _historyProvider) {
|
Widget historyQuery(context, WalletsProfilesProvider _historyProvider) {
|
||||||
_pubkeyFocus.unfocus();
|
_pubkeyFocus.unfocus();
|
||||||
// HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
|
// HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
|
||||||
CesiumPlusProvider _cesiumPlusProvider =
|
CesiumPlusProvider _cesiumPlusProvider =
|
||||||
|
@ -327,7 +333,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget payView(context, HistoryProvider _historyProvider) {
|
Widget payView(context, WalletsProfilesProvider _historyProvider) {
|
||||||
MyWalletsProvider _myWalletProvider = MyWalletsProvider();
|
MyWalletsProvider _myWalletProvider = MyWalletsProvider();
|
||||||
WalletData defaultWallet =
|
WalletData defaultWallet =
|
||||||
_myWalletProvider.getDefaultWallet(configBox.get('currentChest'));
|
_myWalletProvider.getDefaultWallet(configBox.get('currentChest'));
|
||||||
|
@ -407,7 +413,10 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
|
||||||
}
|
}
|
||||||
|
|
||||||
Widget historyView(context, result) {
|
Widget historyView(context, result) {
|
||||||
HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
|
WalletsProfilesProvider _historyProvider =
|
||||||
|
Provider.of<WalletsProfilesProvider>(context);
|
||||||
|
HomeProvider _homeProvider =
|
||||||
|
Provider.of<HomeProvider>(context, listen: false);
|
||||||
int keyID = 0;
|
int keyID = 0;
|
||||||
|
|
||||||
return _historyProvider.transBC == null
|
return _historyProvider.transBC == null
|
||||||
|
@ -438,8 +447,15 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier {
|
||||||
dense: true,
|
dense: true,
|
||||||
isThreeLine: false,
|
isThreeLine: false,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
// this._outputPubkey.text = repository[2];
|
if (_historyProvider.isPubkey(context, repository[2])) {
|
||||||
_historyProvider.isPubkey(context, repository[2]);
|
_homeProvider.currentIndex = 0;
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(builder: (context) {
|
||||||
|
return const WalletViewScreen();
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
}
|
||||||
Navigator.pop(context);
|
Navigator.pop(context);
|
||||||
}),
|
}),
|
||||||
),
|
),
|
|
@ -3,8 +3,9 @@ import 'package:gecko/globals.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/models/cesium_plus.dart';
|
import 'package:gecko/models/cesium_plus.dart';
|
||||||
import 'package:gecko/models/g1_wallets_list.dart';
|
import 'package:gecko/models/g1_wallets_list.dart';
|
||||||
import 'package:gecko/models/history.dart';
|
import 'package:gecko/models/wallets_profiles.dart';
|
||||||
import 'package:gecko/models/search.dart';
|
import 'package:gecko/models/search.dart';
|
||||||
|
import 'package:gecko/screens/wallet_view.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
|
|
||||||
class SearchResultScreen extends StatelessWidget {
|
class SearchResultScreen extends StatelessWidget {
|
||||||
|
@ -16,8 +17,8 @@ class SearchResultScreen extends StatelessWidget {
|
||||||
SearchProvider _searchProvider = Provider.of<SearchProvider>(context);
|
SearchProvider _searchProvider = Provider.of<SearchProvider>(context);
|
||||||
CesiumPlusProvider _cesiumPlusProvider =
|
CesiumPlusProvider _cesiumPlusProvider =
|
||||||
Provider.of<CesiumPlusProvider>(context);
|
Provider.of<CesiumPlusProvider>(context);
|
||||||
HistoryProvider _historyClass =
|
WalletsProfilesProvider _walletsProfilesClass =
|
||||||
Provider.of<HistoryProvider>(context, listen: false);
|
Provider.of<WalletsProfilesProvider>(context, listen: false);
|
||||||
|
|
||||||
int keyID = 0;
|
int keyID = 0;
|
||||||
double _avatarSize = 55;
|
double _avatarSize = 55;
|
||||||
|
@ -33,48 +34,55 @@ class SearchResultScreen extends StatelessWidget {
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
child: Padding(
|
child: Padding(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 20),
|
padding: const EdgeInsets.symmetric(horizontal: 20),
|
||||||
child: Column(
|
child:
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
Column(crossAxisAlignment: CrossAxisAlignment.start, children: <
|
||||||
children: <Widget>[
|
Widget>[
|
||||||
const SizedBox(height: 30),
|
const SizedBox(height: 30),
|
||||||
RichText(
|
RichText(
|
||||||
text: TextSpan(
|
text: TextSpan(
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
color: Colors.grey[700],
|
color: Colors.grey[700],
|
||||||
),
|
),
|
||||||
children: <TextSpan>[
|
children: <TextSpan>[
|
||||||
const TextSpan(
|
const TextSpan(
|
||||||
text: "Résultats pour ",
|
text: "Résultats pour ",
|
||||||
),
|
|
||||||
TextSpan(
|
|
||||||
text: '"${_searchProvider.searchController.text}"',
|
|
||||||
style: const TextStyle(fontStyle: FontStyle.italic),
|
|
||||||
),
|
|
||||||
],
|
|
||||||
),
|
),
|
||||||
),
|
TextSpan(
|
||||||
const SizedBox(height: 40),
|
text: '"${_searchProvider.searchController.text}"',
|
||||||
const Text(
|
style: const TextStyle(fontStyle: FontStyle.italic),
|
||||||
'Dans la blockchain Ğ1',
|
),
|
||||||
style: TextStyle(fontSize: 20),
|
],
|
||||||
),
|
),
|
||||||
const SizedBox(height: 20),
|
),
|
||||||
FutureBuilder(
|
const SizedBox(height: 40),
|
||||||
future: _searchProvider.searchBlockchain(),
|
const Text(
|
||||||
builder: (context, snapshot) {
|
'Dans la blockchain Ğ1',
|
||||||
if (snapshot.connectionState == ConnectionState.done) {
|
style: TextStyle(fontSize: 20),
|
||||||
return Expanded(
|
),
|
||||||
child: ListView(children: <Widget>[
|
const SizedBox(height: 20),
|
||||||
for (G1WalletsList g1Wallet in snapshot.data)
|
FutureBuilder(
|
||||||
Padding(
|
future: _searchProvider.searchBlockchain(),
|
||||||
padding:
|
builder: (context, snapshot) {
|
||||||
const EdgeInsets.symmetric(horizontal: 5),
|
if (snapshot.connectionState == ConnectionState.done) {
|
||||||
child: ListTile(
|
return Expanded(
|
||||||
key: Key('searchResult${keyID++}'),
|
child: ListView(children: <Widget>[
|
||||||
horizontalTitleGap: 40,
|
for (G1WalletsList g1Wallet in snapshot.data)
|
||||||
contentPadding: const EdgeInsets.all(5),
|
Padding(
|
||||||
leading: FutureBuilder(
|
padding: const EdgeInsets.symmetric(horizontal: 5),
|
||||||
|
child: ListTile(
|
||||||
|
key: Key('searchResult${keyID++}'),
|
||||||
|
horizontalTitleGap: 40,
|
||||||
|
contentPadding: const EdgeInsets.all(5),
|
||||||
|
leading: g1WalletsBox
|
||||||
|
.get(g1Wallet.pubkey)
|
||||||
|
.avatar !=
|
||||||
|
null
|
||||||
|
? ClipOval(
|
||||||
|
child: g1WalletsBox
|
||||||
|
.get(g1Wallet.pubkey)
|
||||||
|
.avatar)
|
||||||
|
: FutureBuilder(
|
||||||
future: _cesiumPlusProvider.getAvatar(
|
future: _cesiumPlusProvider.getAvatar(
|
||||||
g1Wallet.pubkey, _avatarSize),
|
g1Wallet.pubkey, _avatarSize),
|
||||||
builder: (BuildContext context,
|
builder: (BuildContext context,
|
||||||
|
@ -98,52 +106,76 @@ class SearchResultScreen extends StatelessWidget {
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
if (_avatar.hasData) {
|
if (_avatar.hasData) {
|
||||||
|
g1WalletsBox
|
||||||
|
.get(g1Wallet.pubkey)
|
||||||
|
.avatar = _avatar.data;
|
||||||
return ClipOval(child: _avatar.data);
|
return ClipOval(child: _avatar.data);
|
||||||
|
} else {
|
||||||
|
g1WalletsBox
|
||||||
|
.get(g1Wallet.pubkey)
|
||||||
|
.avatar =
|
||||||
|
_cesiumPlusProvider
|
||||||
|
.defaultAvatar(_avatarSize);
|
||||||
|
return _cesiumPlusProvider
|
||||||
|
.defaultAvatar(_avatarSize);
|
||||||
}
|
}
|
||||||
return _cesiumPlusProvider
|
|
||||||
.defaultAvatar(_avatarSize);
|
|
||||||
}),
|
}),
|
||||||
title: Row(children: <Widget>[
|
title: Row(children: <Widget>[
|
||||||
Text(
|
Text(
|
||||||
_historyClass
|
_walletsProfilesClass
|
||||||
.getShortPubkey(g1Wallet.pubkey),
|
.getShortPubkey(g1Wallet.pubkey),
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
fontFamily: 'Monospace',
|
fontFamily: 'Monospace',
|
||||||
fontWeight: FontWeight.w500),
|
fontWeight: FontWeight.w500),
|
||||||
textAlign: TextAlign.center),
|
textAlign: TextAlign.center),
|
||||||
]),
|
]),
|
||||||
subtitle: Row(children: <Widget>[
|
subtitle: Row(children: <Widget>[
|
||||||
Text(g1Wallet?.id?.username ?? '',
|
Text(g1Wallet?.id?.username ?? '',
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontSize: 18,
|
fontSize: 18,
|
||||||
fontWeight: FontWeight.w500),
|
fontWeight: FontWeight.w500),
|
||||||
textAlign: TextAlign.center),
|
textAlign: TextAlign.center),
|
||||||
]),
|
]),
|
||||||
dense: false,
|
dense: false,
|
||||||
isThreeLine: false,
|
isThreeLine: false,
|
||||||
onTap: () {
|
onTap: () {
|
||||||
_historyClass.isPubkey(
|
Navigator.push(
|
||||||
context, g1Wallet.pubkey);
|
context,
|
||||||
|
MaterialPageRoute(builder: (context) {
|
||||||
|
_walletsProfilesClass.pubkey =
|
||||||
|
g1Wallet.pubkey;
|
||||||
|
return WalletViewScreen(
|
||||||
|
pubkey: g1Wallet.pubkey,
|
||||||
|
username: g1WalletsBox
|
||||||
|
.get(g1Wallet.pubkey)
|
||||||
|
.id
|
||||||
|
?.username,
|
||||||
|
avatar: g1WalletsBox
|
||||||
|
.get(g1Wallet.pubkey)
|
||||||
|
?.avatar,
|
||||||
|
);
|
||||||
}),
|
}),
|
||||||
),
|
);
|
||||||
]),
|
}),
|
||||||
);
|
),
|
||||||
}
|
]),
|
||||||
return Center(
|
);
|
||||||
heightFactor: 5,
|
}
|
||||||
child: CircularProgressIndicator(
|
return Center(
|
||||||
strokeWidth: 3,
|
heightFactor: 5,
|
||||||
backgroundColor: yellowC,
|
child: CircularProgressIndicator(
|
||||||
color: orangeC,
|
strokeWidth: 3,
|
||||||
),
|
backgroundColor: yellowC,
|
||||||
);
|
color: orangeC,
|
||||||
},
|
),
|
||||||
),
|
);
|
||||||
// Text(
|
},
|
||||||
// _searchProvider.searchResult.toString(),
|
),
|
||||||
// )
|
// Text(
|
||||||
]),
|
// _searchProvider.searchResult.toString(),
|
||||||
|
// )
|
||||||
|
]),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,39 +1,68 @@
|
||||||
import 'dart:ui';
|
import 'dart:ui';
|
||||||
|
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:gecko/globals.dart';
|
import 'package:gecko/globals.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:gecko/models/cesium_plus.dart';
|
import 'package:gecko/models/cesium_plus.dart';
|
||||||
import 'package:gecko/models/history.dart';
|
import 'package:gecko/models/wallets_profiles.dart';
|
||||||
import 'package:gecko/models/queries.dart';
|
import 'package:gecko/models/queries.dart';
|
||||||
|
// import 'package:gecko/models/wallet_options.dart';
|
||||||
import 'package:gecko/screens/avatar_fullscreen.dart';
|
import 'package:gecko/screens/avatar_fullscreen.dart';
|
||||||
import 'package:graphql_flutter/graphql_flutter.dart';
|
import 'package:graphql_flutter/graphql_flutter.dart';
|
||||||
import 'package:provider/provider.dart';
|
import 'package:provider/provider.dart';
|
||||||
// import 'package:gecko/models/home.dart';
|
|
||||||
// import 'package:provider/provider.dart';
|
|
||||||
|
|
||||||
// ignore: must_be_immutable
|
|
||||||
class WalletViewScreen extends StatelessWidget {
|
class WalletViewScreen extends StatelessWidget {
|
||||||
TextEditingController tplController = TextEditingController();
|
const WalletViewScreen({this.pubkey, this.username, this.avatar, Key key})
|
||||||
|
: super(key: key);
|
||||||
WalletViewScreen({Key key}) : super(key: key);
|
final String pubkey;
|
||||||
|
final String username;
|
||||||
|
final Image avatar;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
|
||||||
HistoryProvider _historyProvider = Provider.of<HistoryProvider>(context);
|
WalletsProfilesProvider _historyProvider =
|
||||||
|
Provider.of<WalletsProfilesProvider>(context);
|
||||||
CesiumPlusProvider _cesiumPlusProvider =
|
CesiumPlusProvider _cesiumPlusProvider =
|
||||||
Provider.of<CesiumPlusProvider>(context);
|
Provider.of<CesiumPlusProvider>(context);
|
||||||
|
// WalletOptionsProvider _walletOptions = WalletOptionsProvider();
|
||||||
double _avatarSize = 150;
|
double _avatarSize = 150;
|
||||||
|
|
||||||
return Scaffold(
|
return Scaffold(
|
||||||
appBar: AppBar(
|
appBar: AppBar(
|
||||||
elevation: 0,
|
elevation: 0,
|
||||||
toolbarHeight: 60 * ratio,
|
toolbarHeight: 60 * ratio,
|
||||||
title: const SizedBox(
|
title: const SizedBox(
|
||||||
height: 22,
|
height: 22,
|
||||||
child: Text('Voir un portefeuille'),
|
child: Text('Voir un portefeuille'),
|
||||||
)),
|
),
|
||||||
|
// actions: [
|
||||||
|
// FutureBuilder(
|
||||||
|
// future: _walletOptions.generateQRcode(_historyProvider.pubkey),
|
||||||
|
// builder: (context, snapshot) {
|
||||||
|
// return snapshot.data != null
|
||||||
|
// ? GestureDetector(
|
||||||
|
// key: const Key('openAvatar'),
|
||||||
|
// onTap: () {
|
||||||
|
// Navigator.push(
|
||||||
|
// context,
|
||||||
|
// MaterialPageRoute(builder: (context) {
|
||||||
|
// return AvatarFullscreen(
|
||||||
|
// Image.memory(snapshot.data),
|
||||||
|
// title: 'QrCode du profil',
|
||||||
|
// );
|
||||||
|
// }),
|
||||||
|
// );
|
||||||
|
// // isAvatarView = !isAvatarView;
|
||||||
|
// // _historyProvider.resetdHistory();
|
||||||
|
// },
|
||||||
|
// child: Image.memory(snapshot.data, height: 40 * ratio),
|
||||||
|
// )
|
||||||
|
// : const Text('-', style: TextStyle(fontSize: 20));
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
|
// const SizedBox(width: 75)
|
||||||
|
// ],
|
||||||
|
),
|
||||||
body: SafeArea(
|
body: SafeArea(
|
||||||
child: Column(children: <Widget>[
|
child: Column(children: <Widget>[
|
||||||
Container(
|
Container(
|
||||||
|
@ -56,51 +85,62 @@ class WalletViewScreen extends StatelessWidget {
|
||||||
Column(
|
Column(
|
||||||
crossAxisAlignment: CrossAxisAlignment.start,
|
crossAxisAlignment: CrossAxisAlignment.start,
|
||||||
children: <Widget>[
|
children: <Widget>[
|
||||||
GestureDetector(
|
Row(children: [
|
||||||
key: const Key('copyPubkey'),
|
GestureDetector(
|
||||||
onTap: () {
|
key: const Key('copyPubkey'),
|
||||||
Clipboard.setData(
|
onTap: () {
|
||||||
ClipboardData(text: _historyProvider.pubkey));
|
Clipboard.setData(ClipboardData(
|
||||||
_historyProvider.snackCopyKey(context);
|
text: pubkey ?? _historyProvider.pubkey));
|
||||||
},
|
_historyProvider.snackCopyKey(context);
|
||||||
child: Text(
|
},
|
||||||
_historyProvider
|
child: Text(
|
||||||
.getShortPubkey(_historyProvider.pubkey),
|
_historyProvider.getShortPubkey(
|
||||||
style: const TextStyle(
|
pubkey ?? _historyProvider.pubkey),
|
||||||
fontSize: 30,
|
style: const TextStyle(
|
||||||
fontWeight: FontWeight.w800,
|
fontSize: 30,
|
||||||
|
fontWeight: FontWeight.w800,
|
||||||
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
]),
|
||||||
const SizedBox(height: 10),
|
const SizedBox(height: 10),
|
||||||
Query(
|
if (username == null)
|
||||||
options: QueryOptions(
|
Query(
|
||||||
document: gql(getId),
|
options: QueryOptions(
|
||||||
variables: {
|
document: gql(getId),
|
||||||
'pubkey': _historyProvider.pubkey,
|
variables: {
|
||||||
|
'pubkey': _historyProvider.pubkey,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
builder: (QueryResult result,
|
||||||
|
{VoidCallback refetch, FetchMore fetchMore}) {
|
||||||
|
if (result.isLoading || result.hasException) {
|
||||||
|
return const Text('...');
|
||||||
|
} else if (result.data['idty'] == null ||
|
||||||
|
result.data['idty']['username'] == null) {
|
||||||
|
return const Text('');
|
||||||
|
} else {
|
||||||
|
return SizedBox(
|
||||||
|
width: 230,
|
||||||
|
child: Text(
|
||||||
|
result?.data['idty']['username'] ?? '',
|
||||||
|
style: const TextStyle(
|
||||||
|
fontSize: 27,
|
||||||
|
color: Color(0xff814C00),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
builder: (QueryResult result,
|
if (username != null)
|
||||||
{VoidCallback refetch, FetchMore fetchMore}) {
|
Text(
|
||||||
if (result.isLoading || result.hasException) {
|
username,
|
||||||
return const Text('...');
|
style: const TextStyle(
|
||||||
} else if (result.data['idty'] == null ||
|
fontSize: 27,
|
||||||
result.data['idty']['username'] == null) {
|
color: Color(0xff814C00),
|
||||||
return const Text('');
|
),
|
||||||
} else {
|
),
|
||||||
return SizedBox(
|
|
||||||
width: 230,
|
|
||||||
child: Text(
|
|
||||||
result?.data['idty']['username'] ?? '',
|
|
||||||
style: const TextStyle(
|
|
||||||
fontSize: 27,
|
|
||||||
color: Color(0xff814C00),
|
|
||||||
),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
),
|
|
||||||
const SizedBox(height: 25),
|
const SizedBox(height: 25),
|
||||||
FutureBuilder(
|
FutureBuilder(
|
||||||
future: _cesiumPlusProvider
|
future: _cesiumPlusProvider
|
||||||
|
@ -120,51 +160,72 @@ class WalletViewScreen extends StatelessWidget {
|
||||||
]),
|
]),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
Column(children: <Widget>[
|
Column(children: <Widget>[
|
||||||
FutureBuilder(
|
if (avatar == null)
|
||||||
future: _cesiumPlusProvider.getAvatar(
|
FutureBuilder(
|
||||||
_historyProvider.pubkey, _avatarSize),
|
future: _cesiumPlusProvider.getAvatar(
|
||||||
builder: (BuildContext context,
|
_historyProvider.pubkey, _avatarSize),
|
||||||
AsyncSnapshot<Image> _avatar) {
|
builder: (BuildContext context,
|
||||||
if (_avatar.connectionState != ConnectionState.done ||
|
AsyncSnapshot<Image> _avatar) {
|
||||||
_avatar.hasError) {
|
if (_avatar.connectionState !=
|
||||||
return Stack(children: [
|
ConnectionState.done ||
|
||||||
ClipOval(
|
_avatar.hasError) {
|
||||||
child: _cesiumPlusProvider
|
return Stack(children: [
|
||||||
.defaultAvatar(_avatarSize),
|
ClipOval(
|
||||||
),
|
child: _cesiumPlusProvider
|
||||||
Positioned(
|
.defaultAvatar(_avatarSize),
|
||||||
top: 16.5,
|
|
||||||
right: 47.5,
|
|
||||||
width: 55,
|
|
||||||
height: 55,
|
|
||||||
child: CircularProgressIndicator(
|
|
||||||
strokeWidth: 6,
|
|
||||||
color: orangeC,
|
|
||||||
),
|
),
|
||||||
),
|
Positioned(
|
||||||
]);
|
top: 16.5,
|
||||||
}
|
right: 47.5,
|
||||||
if (_avatar.hasData) {
|
width: 55,
|
||||||
return GestureDetector(
|
height: 55,
|
||||||
key: const Key('openAvatar'),
|
child: CircularProgressIndicator(
|
||||||
onTap: () {
|
strokeWidth: 6,
|
||||||
Navigator.push(
|
color: orangeC,
|
||||||
context,
|
),
|
||||||
MaterialPageRoute(builder: (context) {
|
),
|
||||||
return AvatarFullscreen(_avatar.data);
|
]);
|
||||||
}),
|
}
|
||||||
);
|
if (_avatar.hasData) {
|
||||||
},
|
return GestureDetector(
|
||||||
child: ClipOval(
|
key: const Key('openAvatar'),
|
||||||
child: _avatar.data,
|
onTap: () {
|
||||||
),
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(builder: (context) {
|
||||||
|
return AvatarFullscreen(_avatar.data);
|
||||||
|
}),
|
||||||
|
);
|
||||||
|
},
|
||||||
|
child: ClipOval(
|
||||||
|
child: _avatar.data,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
return ClipOval(
|
||||||
|
child: _cesiumPlusProvider
|
||||||
|
.defaultAvatar(_avatarSize),
|
||||||
);
|
);
|
||||||
}
|
}),
|
||||||
return ClipOval(
|
if (avatar != null)
|
||||||
child:
|
GestureDetector(
|
||||||
_cesiumPlusProvider.defaultAvatar(_avatarSize),
|
key: const Key('openAvatar'),
|
||||||
|
onTap: () {
|
||||||
|
Navigator.push(
|
||||||
|
context,
|
||||||
|
MaterialPageRoute(builder: (context) {
|
||||||
|
return AvatarFullscreen(avatar);
|
||||||
|
}),
|
||||||
);
|
);
|
||||||
}),
|
},
|
||||||
|
child: ClipOval(
|
||||||
|
child: Image(
|
||||||
|
image: avatar.image,
|
||||||
|
height: _avatarSize,
|
||||||
|
fit: BoxFit.cover,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
const SizedBox(height: 25),
|
const SizedBox(height: 25),
|
||||||
]),
|
]),
|
||||||
]),
|
]),
|
||||||
|
@ -230,6 +291,29 @@ class WalletViewScreen extends StatelessWidget {
|
||||||
),
|
),
|
||||||
]),
|
]),
|
||||||
]),
|
]),
|
||||||
|
// FutureBuilder(
|
||||||
|
// future: _walletOptions.generateQRcode(_historyProvider.pubkey),
|
||||||
|
// builder: (context, snapshot) {
|
||||||
|
// return snapshot.data != null
|
||||||
|
// ? GestureDetector(
|
||||||
|
// key: const Key('openQrcode'),
|
||||||
|
// onTap: () {
|
||||||
|
// Navigator.push(
|
||||||
|
// context,
|
||||||
|
// MaterialPageRoute(builder: (context) {
|
||||||
|
// return AvatarFullscreen(
|
||||||
|
// Image.memory(snapshot.data),
|
||||||
|
// title: 'QrCode du profil',
|
||||||
|
// color: Colors.white,
|
||||||
|
// );
|
||||||
|
// }),
|
||||||
|
// );
|
||||||
|
// },
|
||||||
|
// child: Image.memory(snapshot.data, height: 60 * ratio),
|
||||||
|
// )
|
||||||
|
// : const Text('-', style: TextStyle(fontSize: 20));
|
||||||
|
// },
|
||||||
|
// ),
|
||||||
const Spacer(),
|
const Spacer(),
|
||||||
Container(
|
Container(
|
||||||
height: 120,
|
height: 120,
|
||||||
|
|
|
@ -5,7 +5,7 @@ description: Pay with G1.
|
||||||
# pub.dev using `pub publish`. This is preferred for private packages.
|
# pub.dev using `pub publish`. This is preferred for private packages.
|
||||||
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
|
||||||
|
|
||||||
version: 0.0.3+8
|
version: 0.0.3+9
|
||||||
|
|
||||||
environment:
|
environment:
|
||||||
sdk: ">=2.7.0 <3.0.0"
|
sdk: ">=2.7.0 <3.0.0"
|
||||||
|
|
Loading…
Reference in New Issue