From bd87ea5ab81942b33f7906c7541b607601915941 Mon Sep 17 00:00:00 2001 From: poka Date: Tue, 30 Nov 2021 01:25:48 +0100 Subject: [PATCH] Optimize profile view --- assets/walletOptions/trash.png | Bin 14276 -> 14516 bytes lib/main.dart | 4 +- lib/models/g1_wallets_list.dart | 6 +- lib/models/g1_wallets_list.g.dart | 13 +- lib/models/home.dart | 2 +- lib/models/search.dart | 7 +- .../{history.dart => wallets_profiles.dart} | 50 ++-- lib/screens/avatar_fullscreen.dart | 11 +- lib/screens/home.dart | 5 +- .../myWallets/cesium_wallet_options.dart | 17 +- lib/screens/myWallets/unlocking_wallet.dart | 5 +- lib/screens/myWallets/wallet_options.dart | 33 ++- .../{history.dart => old_history_pay.dart} | 36 ++- lib/screens/search_result.dart | 204 +++++++------ lib/screens/wallet_view.dart | 278 ++++++++++++------ pubspec.yaml | 2 +- 16 files changed, 420 insertions(+), 253 deletions(-) rename lib/models/{history.dart => wallets_profiles.dart} (92%) rename lib/screens/{history.dart => old_history_pay.dart} (93%) diff --git a/assets/walletOptions/trash.png b/assets/walletOptions/trash.png index 2d008a034bf97e0244c6f4210ed4bab49c1c70ff..e2c1cbc3b48ac396404355b9a97e587c58b7637e 100644 GIT binary patch literal 14516 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 xh1gU}l&RZ<{1=lU_Ur%v diff --git a/lib/main.dart b/lib/main.dart index 585f1cd..053d46a 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -25,7 +25,7 @@ import 'package:gecko/models/chest_data.dart'; import 'package:gecko/models/chest_provider.dart'; import 'package:gecko/models/g1_wallets_list.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/my_wallets.dart'; import 'package:gecko/models/search.dart'; @@ -139,7 +139,7 @@ class Gecko extends StatelessWidget { providers: [ // Provider(create: (context) => HistoryProvider()), ChangeNotifierProvider(create: (_) => HomeProvider()), - ChangeNotifierProvider(create: (_) => HistoryProvider('')), + ChangeNotifierProvider(create: (_) => WalletsProfilesProvider('')), ChangeNotifierProvider(create: (_) => MyWalletsProvider()), ChangeNotifierProvider(create: (_) => ChestProvider()), ChangeNotifierProvider(create: (_) => GenerateWalletsProvider()), diff --git a/lib/models/g1_wallets_list.dart b/lib/models/g1_wallets_list.dart index 286e98e..2457f9f 100644 --- a/lib/models/g1_wallets_list.dart +++ b/lib/models/g1_wallets_list.dart @@ -1,3 +1,4 @@ +import 'package:flutter/material.dart'; import 'package:hive_flutter/hive_flutter.dart'; part 'g1_wallets_list.g.dart'; @@ -13,7 +14,10 @@ class G1WalletsList { @HiveField(3) 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 json) { pubkey = json['pubkey']; diff --git a/lib/models/g1_wallets_list.g.dart b/lib/models/g1_wallets_list.g.dart index 31b83c6..b729a6d 100644 --- a/lib/models/g1_wallets_list.g.dart +++ b/lib/models/g1_wallets_list.g.dart @@ -1,5 +1,7 @@ // GENERATED CODE - DO NOT MODIFY BY HAND +// ignore_for_file: unused_local_variable + part of 'g1_wallets_list.dart'; // ************************************************************************** @@ -20,19 +22,22 @@ class G1WalletsListAdapter extends TypeAdapter { pubkey: fields[0] as String, balance: fields[1] as double, id: fields[3] as Id, + avatar: fields[4] as Image, ); } @override void write(BinaryWriter writer, G1WalletsList obj) { writer - ..writeByte(3) + ..writeByte(4) ..writeByte(0) ..write(obj.pubkey) ..writeByte(1) ..write(obj.balance) ..writeByte(3) - ..write(obj.id); + ..write(obj.id) + ..writeByte(4) + ..write(obj.avatar); } @override @@ -52,6 +57,10 @@ class IdAdapter extends TypeAdapter { @override Id read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; return Id(); } diff --git a/lib/models/home.dart b/lib/models/home.dart index 1d8aacb..f8b99eb 100644 --- a/lib/models/home.dart +++ b/lib/models/home.dart @@ -8,7 +8,7 @@ import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'dart:async'; 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:package_info/package_info.dart'; diff --git a/lib/models/search.dart b/lib/models/search.dart index 6742966..7fa8673 100644 --- a/lib/models/search.dart +++ b/lib/models/search.dart @@ -19,14 +19,17 @@ class SearchProvider with ChangeNotifier { searchResult.clear(); int searchTime = DateTime.now().millisecondsSinceEpoch; - if (cacheTime + cacheDuring <= searchTime) { + if (cacheTime + 0 <= searchTime) { g1WalletsBox.clear(); final url = Uri.parse('https://g1-stats.axiom-team.fr/data/forbes.json'); final response = await http.get(url); List _listWallets = _parseG1Wallets(response.body); + Map _mapWallets = { + for (var e in _listWallets) e.pubkey: e + }; - await g1WalletsBox.addAll(_listWallets); + await g1WalletsBox.putAll(_mapWallets); cacheTime = DateTime.now().millisecondsSinceEpoch; } diff --git a/lib/models/history.dart b/lib/models/wallets_profiles.dart similarity index 92% rename from lib/models/history.dart rename to lib/models/wallets_profiles.dart index b72d22b..62a0dfc 100644 --- a/lib/models/history.dart +++ b/lib/models/wallets_profiles.dart @@ -15,10 +15,11 @@ import 'package:truncate/truncate.dart'; import 'package:crypto/crypto.dart'; import 'package:fast_base58/fast_base58.dart'; -class HistoryProvider with ChangeNotifier { +class WalletsProfilesProvider with ChangeNotifier { + WalletsProfilesProvider(this.pubkey); + String pubkey = ''; String pubkeyShort = ''; - HistoryProvider(this.pubkey); final TextEditingController outputPubkey = TextEditingController(); List transBC; String fetchMoreCursor; @@ -38,9 +39,14 @@ class HistoryProvider with ChangeNotifier { log.e(e); return 'false'; } - if (barcode != null) { + if (barcode != null && isPubkey(context, barcode)) { outputPubkey.text = barcode; - isPubkey(context, barcode); + Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return const WalletViewScreen(); + }), + ); } else { return 'false'; } @@ -71,7 +77,7 @@ class HistoryProvider with ChangeNotifier { } } - String isPubkey(context, pubkey, {bool goHistory}) { + bool isPubkey(context, pubkey) { final RegExp regExp = RegExp( r'^[a-zA-Z0-9]+$', caseSensitive: false, @@ -84,32 +90,22 @@ class HistoryProvider with ChangeNotifier { log.d("C'est une 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) { - isHistoryScreen = true; - historySwitchButtun = "Payer"; - } else { - isHistoryScreen = false; - historySwitchButtun = "Voir l'historique"; - } - - Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return WalletViewScreen(); - }), - ); - notifyListeners(); - - return pubkey; + return true; + } else { + return false; } - - return ''; } String getShortPubkey(String pubkey) { diff --git a/lib/screens/avatar_fullscreen.dart b/lib/screens/avatar_fullscreen.dart index d7f5ced..3389e95 100644 --- a/lib/screens/avatar_fullscreen.dart +++ b/lib/screens/avatar_fullscreen.dart @@ -8,8 +8,11 @@ import 'package:flutter/material.dart'; class AvatarFullscreen extends StatelessWidget { 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 String title; + final Color color; @override Widget build(BuildContext context) { @@ -18,7 +21,7 @@ class AvatarFullscreen extends StatelessWidget { return Scaffold( appBar: AppBar( elevation: 0, - backgroundColor: Colors.black, + backgroundColor: color ?? Colors.black, toolbarHeight: 60 * ratio, leading: IconButton( icon: Icon(Icons.arrow_back, color: orangeC), @@ -28,14 +31,14 @@ class AvatarFullscreen extends StatelessWidget { title: SizedBox( height: 22, child: Text( - 'Photo de profil', + title ?? 'Photo de profil', style: TextStyle(color: orangeC), ), )), body: SafeArea( child: SizedBox.expand( child: Container( - color: Colors.black, + color: color ?? Colors.black, // alignment: Alignment.center, // height: MediaQuery.of(context).size.height, // width: MediaQuery.of(context).size.width, diff --git a/lib/screens/home.dart b/lib/screens/home.dart index eff093f..da1f1eb 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -2,7 +2,7 @@ import 'package:bubble/bubble.dart'; import 'package:dubp/dubp.dart'; import 'package:gecko/globals.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:gecko/models/home.dart'; import 'package:gecko/models/my_wallets.dart'; @@ -123,7 +123,8 @@ Widget geckHome(context) { MyWalletsProvider _myWalletProvider = Provider.of(context); Provider.of(context); - HistoryProvider _historyProvider = Provider.of(context); + WalletsProfilesProvider _historyProvider = + Provider.of(context); final double statusBarHeight = MediaQuery.of(context).padding.top; return Container( decoration: const BoxDecoration( diff --git a/lib/screens/myWallets/cesium_wallet_options.dart b/lib/screens/myWallets/cesium_wallet_options.dart index 115c318..42a14aa 100644 --- a/lib/screens/myWallets/cesium_wallet_options.dart +++ b/lib/screens/myWallets/cesium_wallet_options.dart @@ -5,11 +5,12 @@ import 'package:flutter/material.dart'; import 'package:gecko/globals.dart'; import 'package:gecko/models/chest_data.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/queries.dart'; import 'package:gecko/models/wallet_options.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:provider/provider.dart'; import 'package:flutter/services.dart'; @@ -24,7 +25,8 @@ Widget cesiumWalletOptions(BuildContext context, ChestData cesiumWallet, Provider.of(context); ChestProvider _chestProvider = Provider.of(context, listen: false); - HistoryProvider _historyProvider = Provider.of(context); + WalletsProfilesProvider _historyProvider = + Provider.of(context); final String shortPubkey = _walletOptions.getShortPubkey(_walletOptions.pubkey.text); @@ -283,8 +285,15 @@ Widget cesiumWalletOptions(BuildContext context, ChestData cesiumWallet, InkWell( key: const Key('displayHistory'), onTap: () { - _historyProvider.isPubkey(ctx, _walletOptions.pubkey.text, - goHistory: true); + if (_historyProvider.isPubkey( + context, _walletOptions.pubkey.text)) { + Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return const WalletViewScreen(); + }), + ); + } }, child: SizedBox( height: 50, diff --git a/lib/screens/myWallets/unlocking_wallet.dart b/lib/screens/myWallets/unlocking_wallet.dart index 0be8fa1..56b9752 100644 --- a/lib/screens/myWallets/unlocking_wallet.dart +++ b/lib/screens/myWallets/unlocking_wallet.dart @@ -2,7 +2,7 @@ import 'dart:async'; import 'package:dubp/dubp.dart'; import 'package:flutter/services.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/wallet_data.dart'; import 'package:gecko/models/wallet_options.dart'; @@ -124,7 +124,8 @@ class UnlockingWallet extends StatelessWidget { Provider.of(context); MyWalletsProvider _myWalletProvider = Provider.of(context); - HistoryProvider _historyProvider = Provider.of(context); + WalletsProfilesProvider _historyProvider = + Provider.of(context); FocusNode pinFocus = FocusNode(); diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index 8f049f2..27c69b6 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -3,11 +3,12 @@ import 'dart:ui'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.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/queries.dart'; import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/wallet_options.dart'; +import 'package:gecko/screens/wallet_view.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:provider/provider.dart'; import 'package:flutter/services.dart'; @@ -27,7 +28,8 @@ class WalletOptions extends StatelessWidget { Provider.of(context); MyWalletsProvider _myWalletProvider = Provider.of(context); - HistoryProvider _historyProvider = Provider.of(context); + WalletsProfilesProvider _historyProvider = + Provider.of(context); final int _currentChest = _myWalletProvider.getCurrentChest(); final String shortPubkey = @@ -263,14 +265,14 @@ class WalletOptions extends StatelessWidget { ])), SizedBox(height: 4 * ratio), FutureBuilder( - future: - _walletOptions.generateQRcode(_walletOptions.pubkey.text), - builder: (context, snapshot) { - return snapshot.data != null - ? Image.memory(snapshot.data, - height: isTall ? 300 : 270) - : const Text('-', style: TextStyle(fontSize: 20)); - }), + future: + _walletOptions.generateQRcode(_walletOptions.pubkey.text), + builder: (context, snapshot) { + return snapshot.data != null + ? Image.memory(snapshot.data, height: isTall ? 300 : 270) + : const Text('-', style: TextStyle(fontSize: 20)); + }, + ), SizedBox(height: 15 * ratio), GestureDetector( key: const Key('copyPubkey'), @@ -337,8 +339,15 @@ class WalletOptions extends StatelessWidget { InkWell( key: const Key('displayHistory'), onTap: () { - _historyProvider.isPubkey(ctx, _walletOptions.pubkey.text, - goHistory: true); + if (_historyProvider.isPubkey( + context, _walletOptions.pubkey.text)) { + Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return const WalletViewScreen(); + }), + ); + } }, child: SizedBox( height: 50, diff --git a/lib/screens/history.dart b/lib/screens/old_history_pay.dart similarity index 93% rename from lib/screens/history.dart rename to lib/screens/old_history_pay.dart index 21fe283..581251e 100644 --- a/lib/screens/history.dart +++ b/lib/screens/old_history_pay.dart @@ -4,11 +4,12 @@ import 'package:gecko/models/cesium_plus.dart'; import 'package:gecko/models/home.dart'; import 'package:gecko/models/my_wallets.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/foundation.dart'; import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; +import 'package:gecko/screens/wallet_view.dart'; import 'dart:ui'; import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:provider/provider.dart'; @@ -33,7 +34,8 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { @override Widget build(BuildContext context) { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); - HistoryProvider _historyProvider = Provider.of(context); + WalletsProfilesProvider _historyProvider = + Provider.of(context); HomeProvider _homeProvider = Provider.of(context); _outputPubkey.text = _historyProvider.pubkey; log.i('Build pubkey : ' + _historyProvider.pubkey); @@ -61,10 +63,14 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { controller: _homeProvider.searchQuery, onChanged: (text) { log.d("Clé tappé: $text"); - final String searchResult = - _historyProvider.isPubkey(context, text); - if (searchResult != '') { + if (_historyProvider.isPubkey(context, text)) { _homeProvider.currentIndex = 0; + Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return const WalletViewScreen(); + }), + ); } }, style: TextStyle( @@ -111,7 +117,7 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { ])); } - Widget historyQuery(context, HistoryProvider _historyProvider) { + Widget historyQuery(context, WalletsProfilesProvider _historyProvider) { _pubkeyFocus.unfocus(); // HistoryProvider _historyProvider = Provider.of(context); 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(); WalletData defaultWallet = _myWalletProvider.getDefaultWallet(configBox.get('currentChest')); @@ -407,7 +413,10 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { } Widget historyView(context, result) { - HistoryProvider _historyProvider = Provider.of(context); + WalletsProfilesProvider _historyProvider = + Provider.of(context); + HomeProvider _homeProvider = + Provider.of(context, listen: false); int keyID = 0; return _historyProvider.transBC == null @@ -438,8 +447,15 @@ class HistoryScreen extends StatelessWidget with ChangeNotifier { dense: true, isThreeLine: false, onTap: () { - // this._outputPubkey.text = repository[2]; - _historyProvider.isPubkey(context, repository[2]); + if (_historyProvider.isPubkey(context, repository[2])) { + _homeProvider.currentIndex = 0; + Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return const WalletViewScreen(); + }), + ); + } Navigator.pop(context); }), ), diff --git a/lib/screens/search_result.dart b/lib/screens/search_result.dart index 1f09f52..0fc216e 100644 --- a/lib/screens/search_result.dart +++ b/lib/screens/search_result.dart @@ -3,8 +3,9 @@ import 'package:gecko/globals.dart'; import 'package:flutter/material.dart'; import 'package:gecko/models/cesium_plus.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/screens/wallet_view.dart'; import 'package:provider/provider.dart'; class SearchResultScreen extends StatelessWidget { @@ -16,8 +17,8 @@ class SearchResultScreen extends StatelessWidget { SearchProvider _searchProvider = Provider.of(context); CesiumPlusProvider _cesiumPlusProvider = Provider.of(context); - HistoryProvider _historyClass = - Provider.of(context, listen: false); + WalletsProfilesProvider _walletsProfilesClass = + Provider.of(context, listen: false); int keyID = 0; double _avatarSize = 55; @@ -33,48 +34,55 @@ class SearchResultScreen extends StatelessWidget { body: SafeArea( child: Padding( padding: const EdgeInsets.symmetric(horizontal: 20), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - const SizedBox(height: 30), - RichText( - text: TextSpan( - style: TextStyle( - fontSize: 18, - color: Colors.grey[700], - ), - children: [ - const TextSpan( - text: "Résultats pour ", - ), - TextSpan( - text: '"${_searchProvider.searchController.text}"', - style: const TextStyle(fontStyle: FontStyle.italic), - ), - ], + child: + Column(crossAxisAlignment: CrossAxisAlignment.start, children: < + Widget>[ + const SizedBox(height: 30), + RichText( + text: TextSpan( + style: TextStyle( + fontSize: 18, + color: Colors.grey[700], + ), + children: [ + const TextSpan( + text: "Résultats pour ", ), - ), - const SizedBox(height: 40), - const Text( - 'Dans la blockchain Ğ1', - style: TextStyle(fontSize: 20), - ), - const SizedBox(height: 20), - FutureBuilder( - future: _searchProvider.searchBlockchain(), - builder: (context, snapshot) { - if (snapshot.connectionState == ConnectionState.done) { - return Expanded( - child: ListView(children: [ - for (G1WalletsList g1Wallet in snapshot.data) - Padding( - padding: - const EdgeInsets.symmetric(horizontal: 5), - child: ListTile( - key: Key('searchResult${keyID++}'), - horizontalTitleGap: 40, - contentPadding: const EdgeInsets.all(5), - leading: FutureBuilder( + TextSpan( + text: '"${_searchProvider.searchController.text}"', + style: const TextStyle(fontStyle: FontStyle.italic), + ), + ], + ), + ), + const SizedBox(height: 40), + const Text( + 'Dans la blockchain Ğ1', + style: TextStyle(fontSize: 20), + ), + const SizedBox(height: 20), + FutureBuilder( + future: _searchProvider.searchBlockchain(), + builder: (context, snapshot) { + if (snapshot.connectionState == ConnectionState.done) { + return Expanded( + child: ListView(children: [ + for (G1WalletsList g1Wallet in snapshot.data) + Padding( + 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( g1Wallet.pubkey, _avatarSize), builder: (BuildContext context, @@ -98,52 +106,76 @@ class SearchResultScreen extends StatelessWidget { ]); } if (_avatar.hasData) { + g1WalletsBox + .get(g1Wallet.pubkey) + .avatar = _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: [ - Text( - _historyClass - .getShortPubkey(g1Wallet.pubkey), - style: const TextStyle( - fontSize: 18, - fontFamily: 'Monospace', - fontWeight: FontWeight.w500), - textAlign: TextAlign.center), - ]), - subtitle: Row(children: [ - Text(g1Wallet?.id?.username ?? '', - style: const TextStyle( - fontSize: 18, - fontWeight: FontWeight.w500), - textAlign: TextAlign.center), - ]), - dense: false, - isThreeLine: false, - onTap: () { - _historyClass.isPubkey( - context, g1Wallet.pubkey); + title: Row(children: [ + Text( + _walletsProfilesClass + .getShortPubkey(g1Wallet.pubkey), + style: const TextStyle( + fontSize: 18, + fontFamily: 'Monospace', + fontWeight: FontWeight.w500), + textAlign: TextAlign.center), + ]), + subtitle: Row(children: [ + Text(g1Wallet?.id?.username ?? '', + style: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.w500), + textAlign: TextAlign.center), + ]), + dense: false, + isThreeLine: false, + onTap: () { + Navigator.push( + 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( - strokeWidth: 3, - backgroundColor: yellowC, - color: orangeC, - ), - ); - }, - ), - // Text( - // _searchProvider.searchResult.toString(), - // ) - ]), + ); + }), + ), + ]), + ); + } + return Center( + heightFactor: 5, + child: CircularProgressIndicator( + strokeWidth: 3, + backgroundColor: yellowC, + color: orangeC, + ), + ); + }, + ), + // Text( + // _searchProvider.searchResult.toString(), + // ) + ]), ), ), ); diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart index 3aeefe5..a625d0e 100644 --- a/lib/screens/wallet_view.dart +++ b/lib/screens/wallet_view.dart @@ -1,39 +1,68 @@ import 'dart:ui'; - import 'package:flutter/services.dart'; import 'package:gecko/globals.dart'; import 'package:flutter/material.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/wallet_options.dart'; import 'package:gecko/screens/avatar_fullscreen.dart'; import 'package:graphql_flutter/graphql_flutter.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 { - TextEditingController tplController = TextEditingController(); - - WalletViewScreen({Key key}) : super(key: key); + const WalletViewScreen({this.pubkey, this.username, this.avatar, Key key}) + : super(key: key); + final String pubkey; + final String username; + final Image avatar; @override Widget build(BuildContext context) { SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); - HistoryProvider _historyProvider = Provider.of(context); + WalletsProfilesProvider _historyProvider = + Provider.of(context); CesiumPlusProvider _cesiumPlusProvider = Provider.of(context); + // WalletOptionsProvider _walletOptions = WalletOptionsProvider(); double _avatarSize = 150; return Scaffold( appBar: AppBar( - elevation: 0, - toolbarHeight: 60 * ratio, - title: const SizedBox( - height: 22, - child: Text('Voir un portefeuille'), - )), + elevation: 0, + toolbarHeight: 60 * ratio, + title: const SizedBox( + height: 22, + 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( child: Column(children: [ Container( @@ -56,51 +85,62 @@ class WalletViewScreen extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - GestureDetector( - key: const Key('copyPubkey'), - onTap: () { - Clipboard.setData( - ClipboardData(text: _historyProvider.pubkey)); - _historyProvider.snackCopyKey(context); - }, - child: Text( - _historyProvider - .getShortPubkey(_historyProvider.pubkey), - style: const TextStyle( - fontSize: 30, - fontWeight: FontWeight.w800, + Row(children: [ + GestureDetector( + key: const Key('copyPubkey'), + onTap: () { + Clipboard.setData(ClipboardData( + text: pubkey ?? _historyProvider.pubkey)); + _historyProvider.snackCopyKey(context); + }, + child: Text( + _historyProvider.getShortPubkey( + pubkey ?? _historyProvider.pubkey), + style: const TextStyle( + fontSize: 30, + fontWeight: FontWeight.w800, + ), ), ), - ), + ]), const SizedBox(height: 10), - Query( - options: QueryOptions( - document: gql(getId), - variables: { - 'pubkey': _historyProvider.pubkey, + if (username == null) + Query( + options: QueryOptions( + document: gql(getId), + 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, - {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), - ), - ), - ); - } - }, - ), + if (username != null) + Text( + username, + style: const TextStyle( + fontSize: 27, + color: Color(0xff814C00), + ), + ), const SizedBox(height: 25), FutureBuilder( future: _cesiumPlusProvider @@ -120,51 +160,72 @@ class WalletViewScreen extends StatelessWidget { ]), const Spacer(), Column(children: [ - FutureBuilder( - future: _cesiumPlusProvider.getAvatar( - _historyProvider.pubkey, _avatarSize), - builder: (BuildContext context, - AsyncSnapshot _avatar) { - if (_avatar.connectionState != ConnectionState.done || - _avatar.hasError) { - return Stack(children: [ - ClipOval( - child: _cesiumPlusProvider - .defaultAvatar(_avatarSize), - ), - Positioned( - top: 16.5, - right: 47.5, - width: 55, - height: 55, - child: CircularProgressIndicator( - strokeWidth: 6, - color: orangeC, + if (avatar == null) + FutureBuilder( + future: _cesiumPlusProvider.getAvatar( + _historyProvider.pubkey, _avatarSize), + builder: (BuildContext context, + AsyncSnapshot _avatar) { + if (_avatar.connectionState != + ConnectionState.done || + _avatar.hasError) { + return Stack(children: [ + ClipOval( + child: _cesiumPlusProvider + .defaultAvatar(_avatarSize), ), - ), - ]); - } - if (_avatar.hasData) { - return GestureDetector( - key: const Key('openAvatar'), - onTap: () { - Navigator.push( - context, - MaterialPageRoute(builder: (context) { - return AvatarFullscreen(_avatar.data); - }), - ); - }, - child: ClipOval( - child: _avatar.data, - ), + Positioned( + top: 16.5, + right: 47.5, + width: 55, + height: 55, + child: CircularProgressIndicator( + strokeWidth: 6, + color: orangeC, + ), + ), + ]); + } + if (_avatar.hasData) { + return GestureDetector( + key: const Key('openAvatar'), + onTap: () { + Navigator.push( + context, + MaterialPageRoute(builder: (context) { + return AvatarFullscreen(_avatar.data); + }), + ); + }, + child: ClipOval( + child: _avatar.data, + ), + ); + } + return ClipOval( + child: _cesiumPlusProvider + .defaultAvatar(_avatarSize), ); - } - return ClipOval( - child: - _cesiumPlusProvider.defaultAvatar(_avatarSize), + }), + if (avatar != null) + GestureDetector( + 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), ]), ]), @@ -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(), Container( height: 120, diff --git a/pubspec.yaml b/pubspec.yaml index 4522862..249c17f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -5,7 +5,7 @@ description: Pay with G1. # 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 -version: 0.0.3+8 +version: 0.0.3+9 environment: sdk: ">=2.7.0 <3.0.0"