diff --git a/lib/providers/duniter_indexer.dart b/lib/providers/duniter_indexer.dart index bce6f60..9b5e55f 100644 --- a/lib/providers/duniter_indexer.dart +++ b/lib/providers/duniter_indexer.dart @@ -11,9 +11,10 @@ import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/widgets_keys.dart'; import 'package:gecko/providers/cesium_plus.dart'; import 'package:gecko/providers/substrate_sdk.dart'; -import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/screens/wallet_view.dart'; +import 'package:gecko/widgets/balance.dart'; +import 'package:gecko/widgets/wallet_name.dart'; import 'package:gecko/widgets/wallet_name_controller.dart'; import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:provider/provider.dart'; @@ -164,14 +165,12 @@ class DuniterIndexer with ChangeNotifier { Color color = Colors.black, FontWeight fontWeight = FontWeight.w400, FontStyle fontStyle = FontStyle.italic]) { - final walletOptions = - Provider.of(context, listen: false); if (indexerEndpoint == '') { if (wallet == null) { return const SizedBox(); } else { if (canEdit) { - return walletOptions.walletName(context, wallet, size, color); + return WalletName(wallet: wallet, size: size, color: color); } else { return WalletNameController(wallet: wallet, size: size); } @@ -223,7 +222,7 @@ class DuniterIndexer with ChangeNotifier { return const SizedBox(); } else { if (canEdit) { - return walletOptions.walletName(context, wallet, size, color); + return WalletName(wallet: wallet, size: size, color: color); } else { return WalletNameController(wallet: wallet, size: size); } @@ -326,7 +325,8 @@ class DuniterIndexer with ChangeNotifier { Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - balance(context, profile['pubkey'], 16), + Balance( + address: profile['pubkey'], size: 16), ]), ]), ), diff --git a/lib/providers/home.dart b/lib/providers/home.dart index d8f6cec..bdb376a 100644 --- a/lib/providers/home.dart +++ b/lib/providers/home.dart @@ -68,9 +68,11 @@ class HomeProvider with ChangeNotifier { Future changeCurrencyUnit(BuildContext context) async { final sub = Provider.of(context, listen: false); + final walletOptions = + Provider.of(context, listen: false); final bool isUdUnit = configBox.get('isUdUnit') ?? false; await configBox.put('isUdUnit', !isUdUnit); - balanceCache = {}; + walletOptions.balanceCache = {}; sub.getBalanceRatio(); notifyListeners(); } diff --git a/lib/providers/wallet_options.dart b/lib/providers/wallet_options.dart index 86fe2ea..e09da33 100644 --- a/lib/providers/wallet_options.dart +++ b/lib/providers/wallet_options.dart @@ -17,7 +17,6 @@ import 'package:gecko/screens/transaction_in_progress.dart'; import 'package:image_picker/image_picker.dart'; import 'package:provider/provider.dart'; import 'package:image_cropper/image_cropper.dart'; -import 'package:truncate/truncate.dart'; class WalletOptionsProvider with ChangeNotifier { TextEditingController address = TextEditingController(); @@ -31,6 +30,7 @@ class WalletOptionsProvider with ChangeNotifier { late bool isDefaultWallet; bool canValidateNameBool = false; Future? get badWallet => null; + Map balanceCache = {}; int getPinLenght(walletNbr) { return pinLength; @@ -391,135 +391,33 @@ class WalletOptionsProvider with ChangeNotifier { return addressGet; } - Widget walletName(BuildContext context, WalletData wallet, - [double size = 20, Color color = Colors.black]) { - double newSize = wallet.name!.length <= 15 ? size : size - 2; - - return Row(mainAxisAlignment: MainAxisAlignment.center, children: [ - Text( - truncate(wallet.name!, 20), - textAlign: TextAlign.center, - style: TextStyle( - fontSize: isTall ? newSize : newSize * 0.9, - color: color, - fontWeight: FontWeight.w400, - fontStyle: FontStyle.italic, - ), - softWrap: false, - overflow: TextOverflow.ellipsis, - ), - ]); + Widget udUnitDisplay(double size, [Color color = Colors.black]) { + final bool isUdUnit = configBox.get('isUdUnit') ?? false; + return isUdUnit + ? Row( + mainAxisAlignment: MainAxisAlignment.end, + children: [ + Text( + 'ud'.tr(args: ['']), + style: TextStyle( + fontSize: isTall ? size : size * 0.9, color: color), + ), + Column( + children: [ + Text( + currencyName, + style: TextStyle( + fontSize: (isTall ? size : size * 0.9) * 0.7, + fontWeight: FontWeight.w500, + color: color), + ), + const SizedBox(height: 15) + ], + ) + ], + ) + : Text(currencyName, + style: + TextStyle(fontSize: isTall ? size : size * 0.9, color: color)); } } - -Map balanceCache = {}; - -Widget balance(BuildContext context, String address, double size, - [Color color = Colors.black, - Color loadingColor = const Color(0xffd07316)]) { - return Column(children: [ - Consumer(builder: (context, sdk, _) { - return FutureBuilder( - future: sdk.getBalance(address), - builder: (BuildContext context, - AsyncSnapshot> globalBalance) { - if (globalBalance.connectionState != ConnectionState.done || - globalBalance.hasError) { - if (balanceCache[address] != null && - balanceCache[address] != -1) { - return Row(children: [ - Text(balanceCache[address]!.toString(), - style: TextStyle( - fontSize: isTall ? size : size * 0.9, color: color)), - const SizedBox(width: 5), - udUnitDisplay(size, color), - ]); - } else { - return SizedBox( - height: 15, - width: 15, - child: CircularProgressIndicator( - color: loadingColor, - strokeWidth: 2, - ), - ); - } - } - balanceCache[address] = globalBalance.data!['transferableBalance']!; - if (balanceCache[address] != -1) { - return Row(children: [ - Text( - balanceCache[address]!.toString(), - style: TextStyle( - fontSize: isTall ? size : size * 0.9, - color: color, - ), - ), - const SizedBox(width: 5), - udUnitDisplay(size, color), - ]); - } else { - return const Text(''); - } - }); - }), - ]); -} - -Widget getCerts(BuildContext context, String address, double size, - [Color color = Colors.black]) { - return Column(children: [ - Consumer(builder: (context, sdk, _) { - return FutureBuilder( - future: sdk.getCertsCounter(address), - builder: (BuildContext context, AsyncSnapshot> certs) { - // log.d(_certs.data); - - return certs.data?[0] != 0 && certs.data != null - ? Row( - children: [ - Image.asset('assets/medal.png', height: 20), - const SizedBox(width: 1), - Text(certs.data?[0].toString() ?? '0', - style: const TextStyle(fontSize: 20)), - const SizedBox(width: 5), - Text( - "(${certs.data?[1].toString() ?? '0'})", - style: const TextStyle(fontSize: 14), - ) - ], - ) - : const Text(''); - }); - }), - ]); -} - -Widget udUnitDisplay(double size, [Color color = Colors.black]) { - final bool isUdUnit = configBox.get('isUdUnit') ?? false; - return isUdUnit - ? Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Text( - 'ud'.tr(args: ['']), - style: - TextStyle(fontSize: isTall ? size : size * 0.9, color: color), - ), - Column( - children: [ - Text( - currencyName, - style: TextStyle( - fontSize: (isTall ? size : size * 0.9) * 0.7, - fontWeight: FontWeight.w500, - color: color), - ), - const SizedBox(height: 15) - ], - ) - ], - ) - : Text(currencyName, - style: TextStyle(fontSize: isTall ? size : size * 0.9, color: color)); -} diff --git a/lib/screens/home.dart b/lib/screens/home.dart index 866765a..922fbe9 100644 --- a/lib/screens/home.dart +++ b/lib/screens/home.dart @@ -14,7 +14,7 @@ import 'package:gecko/providers/wallets_profiles.dart'; import 'package:flutter/material.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/models/wallet_data.dart'; -import 'package:gecko/screens/animated_text.dart'; +import 'package:gecko/widgets/animated_text.dart'; import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/myWallets/restore_chest.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; diff --git a/lib/screens/myWallets/choose_wallet.dart b/lib/screens/myWallets/choose_wallet.dart index 24d4720..4c9e6a6 100644 --- a/lib/screens/myWallets/choose_wallet.dart +++ b/lib/screens/myWallets/choose_wallet.dart @@ -10,8 +10,8 @@ import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/widgets_keys.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/substrate_sdk.dart'; -import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/screens/myWallets/wallets_home.dart'; +import 'package:gecko/widgets/balance.dart'; import 'package:provider/provider.dart'; // import 'package:gecko/models/home.dart'; // import 'package:provider/provider.dart'; @@ -222,8 +222,10 @@ class ChooseWalletScreen extends StatelessWidget { // style: TextStyle(color: isDefault ? Colors.white : Colors.black), // ), Row(mainAxisAlignment: MainAxisAlignment.center, children: [ - balance( - context, address, 16, isDefault ? Colors.white : Colors.black), + Balance( + address: address, + size: 16, + color: isDefault ? Colors.white : Colors.black), ]) ]), ), diff --git a/lib/screens/myWallets/import_g1_v1.dart b/lib/screens/myWallets/import_g1_v1.dart index b52ced8..d4dfe81 100644 --- a/lib/screens/myWallets/import_g1_v1.dart +++ b/lib/screens/myWallets/import_g1_v1.dart @@ -11,10 +11,10 @@ import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/widgets_keys.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/substrate_sdk.dart'; -import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:gecko/screens/transaction_in_progress.dart'; +import 'package:gecko/widgets/certifications.dart'; import 'package:gecko/widgets/idty_status.dart'; import 'package:provider/provider.dart'; @@ -214,7 +214,7 @@ class ImportG1v1 extends StatelessWidget { isOwner: false, color: Colors.black), const SizedBox(width: 10), - getCerts(context, sub.g1V1NewAddress, 14) + Certifications(address: sub.g1V1NewAddress, size: 14) ], ), const SizedBox(height: 30), diff --git a/lib/screens/myWallets/wallet_options.dart b/lib/screens/myWallets/wallet_options.dart index 8be6b38..b4459a5 100644 --- a/lib/screens/myWallets/wallet_options.dart +++ b/lib/screens/myWallets/wallet_options.dart @@ -17,6 +17,8 @@ import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/activity.dart'; import 'package:gecko/screens/myWallets/manage_membership.dart'; import 'package:gecko/screens/qrcode_fullscreen.dart'; +import 'package:gecko/widgets/balance.dart'; +import 'package:gecko/widgets/certifications.dart'; import 'package:gecko/widgets/idty_status.dart'; import 'package:gecko/widgets/page_route_no_transition.dart'; import 'package:provider/provider.dart'; @@ -143,8 +145,9 @@ class WalletOptions extends StatelessWidget { // SizedBox(height: isTall ? 5 : 0), SizedBox(height: isTall ? 5 : 0), - balance( - context, walletProvider.address.text, 21), + Balance( + address: walletProvider.address.text, + size: 21), const SizedBox(width: 30), InkWell( @@ -174,8 +177,10 @@ class WalletOptions extends StatelessWidget { address: walletOptions.address.text, isOwner: true, color: orangeC), - getCerts(context, - walletProvider.address.text, 15), + Certifications( + address: + walletProvider.address.text, + size: 15) ]), ), @@ -550,15 +555,15 @@ class WalletOptions extends StatelessWidget { walletOptions.reload(); } - Widget deleteWallet(BuildContext context, - WalletOptionsProvider walletProvider, int currentChest) { + Widget deleteWallet(BuildContext context, WalletOptionsProvider walletOptions, + int currentChest) { final sub = Provider.of(context, listen: false); final myWalletProvider = Provider.of(context, listen: false); final defaultWallet = myWalletProvider.getDefaultWallet(); final bool isDefaultWallet = - walletProvider.address.text == defaultWallet.address; + walletOptions.address.text == defaultWallet.address; // return Consumer( // builder: (context, _myWalletProvider, _) { return FutureBuilder( @@ -569,7 +574,7 @@ class WalletOptions extends StatelessWidget { return const Text(''); } final double balance = - balanceCache[walletProvider.address.text] ?? -1; + walletOptions.balanceCache[walletOptions.address.text] ?? -1; final bool canDelete = !isDefaultWallet && !hasConsumers.data! && (balance > 2 || balance == 0); @@ -577,7 +582,7 @@ class WalletOptions extends StatelessWidget { key: keyDeleteWallet, onTap: canDelete ? () async { - await walletProvider.deleteWallet(context, wallet); + await walletOptions.deleteWallet(context, wallet); WidgetsBinding.instance.addPostFrameCallback((_) { myWalletProvider.listWallets = myWalletProvider.readAllWallets(currentChest); diff --git a/lib/screens/myWallets/wallets_home.dart b/lib/screens/myWallets/wallets_home.dart index 86b4c03..87de287 100644 --- a/lib/screens/myWallets/wallets_home.dart +++ b/lib/screens/myWallets/wallets_home.dart @@ -22,6 +22,7 @@ import 'package:gecko/screens/myWallets/import_g1_v1.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:gecko/screens/myWallets/wallet_options.dart'; import 'package:gecko/screens/wallet_view.dart'; +import 'package:gecko/widgets/balance.dart'; import 'package:provider/provider.dart'; import 'package:flutter_svg/flutter_svg.dart'; @@ -392,12 +393,11 @@ class WalletsHome extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - balance( - context, - address, - 15, - isDefault ? Colors.white : Colors.black, - isDefault ? yellowC : orangeC) + Balance( + address: address, + size: 15, + color: isDefault ? Colors.white : Colors.black, + loadingColor: isDefault ? yellowC : orangeC), ], )), ); diff --git a/lib/screens/my_contacts.dart b/lib/screens/my_contacts.dart index a9061c8..70a6a87 100644 --- a/lib/screens/my_contacts.dart +++ b/lib/screens/my_contacts.dart @@ -8,10 +8,10 @@ import 'package:gecko/models/g1_wallets_list.dart'; import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/substrate_sdk.dart'; -import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/wallet_view.dart'; +import 'package:gecko/widgets/balance.dart'; import 'package:provider/provider.dart'; class ContactsScreen extends StatelessWidget { @@ -92,8 +92,10 @@ class ContactsScreen extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ - balance(context, - g1Wallet.address, 16), + Balance( + address: + g1Wallet.address, + size: 16), ]), ]), ), diff --git a/lib/screens/search_result.dart b/lib/screens/search_result.dart index e08b31e..6bc2345 100644 --- a/lib/screens/search_result.dart +++ b/lib/screens/search_result.dart @@ -8,11 +8,11 @@ import 'package:gecko/models/g1_wallets_list.dart'; import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/substrate_sdk.dart'; -import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/providers/search.dart'; import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/wallet_view.dart'; +import 'package:gecko/widgets/balance.dart'; import 'package:provider/provider.dart'; class SearchResultScreen extends StatelessWidget { @@ -115,10 +115,10 @@ class SearchResultScreen extends StatelessWidget { MainAxisAlignment .center, children: [ - balance( - context, - g1Wallet.address, - 16), + Balance( + address: g1Wallet + .address, + size: 16), ]), ]), ), diff --git a/lib/screens/wallet_view.dart b/lib/screens/wallet_view.dart index a873484..0304c77 100644 --- a/lib/screens/wallet_view.dart +++ b/lib/screens/wallet_view.dart @@ -11,9 +11,9 @@ import 'package:gecko/providers/cesium_plus.dart'; import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/substrate_sdk.dart'; -import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/models/wallet_data.dart'; +import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/screens/activity.dart'; import 'package:gecko/screens/common_elements.dart'; @@ -21,6 +21,7 @@ import 'package:gecko/screens/myWallets/choose_wallet.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:gecko/screens/qrcode_fullscreen.dart'; import 'package:gecko/screens/transaction_in_progress.dart'; +import 'package:gecko/widgets/balance.dart'; import 'package:gecko/widgets/header_profile.dart'; import 'package:gecko/widgets/page_route_no_transition.dart'; import 'package:provider/provider.dart'; @@ -469,16 +470,19 @@ void paymentPopup(BuildContext context, String toAddress) { context: context, builder: (BuildContext context) { final sub = Provider.of(homeContext, listen: false); + final walletOptions = + Provider.of(context, listen: false); + double fees = 0; return StatefulBuilder( builder: (BuildContext context, StateSetter setState) { if (walletViewProvider.payAmount.text != '' && (double.parse(walletViewProvider.payAmount.text) + 2 / balanceRatio) <= - (balanceCache[defaultWallet.address] ?? 0) && + (walletOptions.balanceCache[defaultWallet.address] ?? 0) && toAddress != defaultWallet.address) { - if ((balanceCache[toAddress] == 0 || - balanceCache[toAddress] == null) && + if ((walletOptions.balanceCache[toAddress] == 0 || + walletOptions.balanceCache[toAddress] == null) && double.parse(walletViewProvider.payAmount.text) < 5 / balanceRatio) { canValidate = false; @@ -573,7 +577,8 @@ void paymentPopup(BuildContext context, String toAddress) { child: Row(children: [ Text(defaultWallet.name!), const Spacer(), - balance(context, defaultWallet.address!, 20) + Balance( + address: defaultWallet.address!, size: 20), ]), ), ); diff --git a/lib/screens/animated_text.dart b/lib/widgets/animated_text.dart similarity index 100% rename from lib/screens/animated_text.dart rename to lib/widgets/animated_text.dart diff --git a/lib/widgets/balance.dart b/lib/widgets/balance.dart new file mode 100644 index 0000000..96aae00 --- /dev/null +++ b/lib/widgets/balance.dart @@ -0,0 +1,74 @@ +import 'package:flutter/material.dart'; +import 'package:gecko/globals.dart'; +import 'package:gecko/providers/substrate_sdk.dart'; +import 'package:gecko/providers/wallet_options.dart'; +import 'package:provider/provider.dart'; + +class Balance extends StatelessWidget { + const Balance( + {Key? key, + required this.address, + required this.size, + this.color = Colors.black, + this.loadingColor = const Color(0xffd07316)}) + : super(key: key); + final String address; + final double size; + final Color color; + final Color loadingColor; + + @override + Widget build(BuildContext context) { + final walletOptions = + Provider.of(context, listen: false); + return Column(children: [ + Consumer(builder: (context, sdk, _) { + return FutureBuilder( + future: sdk.getBalance(address), + builder: (BuildContext context, + AsyncSnapshot> globalBalance) { + if (globalBalance.connectionState != ConnectionState.done || + globalBalance.hasError) { + if (walletOptions.balanceCache[address] != null && + walletOptions.balanceCache[address] != -1) { + return Row(children: [ + Text(walletOptions.balanceCache[address]!.toString(), + style: TextStyle( + fontSize: isTall ? size : size * 0.9, + color: color)), + const SizedBox(width: 5), + walletOptions.udUnitDisplay(size, color), + ]); + } else { + return SizedBox( + height: 15, + width: 15, + child: CircularProgressIndicator( + color: loadingColor, + strokeWidth: 2, + ), + ); + } + } + walletOptions.balanceCache[address] = + globalBalance.data!['transferableBalance']!; + if (walletOptions.balanceCache[address] != -1) { + return Row(children: [ + Text( + walletOptions.balanceCache[address]!.toString(), + style: TextStyle( + fontSize: isTall ? size : size * 0.9, + color: color, + ), + ), + const SizedBox(width: 5), + walletOptions.udUnitDisplay(size, color), + ]); + } else { + return const Text(''); + } + }); + }), + ]); + } +} diff --git a/lib/widgets/certifications.dart b/lib/widgets/certifications.dart new file mode 100644 index 0000000..06a7aa9 --- /dev/null +++ b/lib/widgets/certifications.dart @@ -0,0 +1,44 @@ +import 'package:flutter/material.dart'; +import 'package:gecko/providers/substrate_sdk.dart'; +import 'package:provider/provider.dart'; + +class Certifications extends StatelessWidget { + const Certifications( + {Key? key, + required this.address, + required this.size, + this.color = Colors.black}) + : super(key: key); + final String address; + final double size; + final Color color; + + @override + Widget build(BuildContext context) { + return Column(children: [ + Consumer(builder: (context, sdk, _) { + return FutureBuilder( + future: sdk.getCertsCounter(address), + builder: (BuildContext context, AsyncSnapshot> certs) { + // log.d(_certs.data); + + return certs.data?[0] != 0 && certs.data != null + ? Row( + children: [ + Image.asset('assets/medal.png', height: 20), + const SizedBox(width: 1), + Text(certs.data?[0].toString() ?? '0', + style: const TextStyle(fontSize: 20)), + const SizedBox(width: 5), + Text( + "(${certs.data?[1].toString() ?? '0'})", + style: const TextStyle(fontSize: 14), + ) + ], + ) + : const Text(''); + }); + }), + ]); + } +} diff --git a/lib/widgets/header_profile.dart b/lib/widgets/header_profile.dart index 4e21ea2..264ae81 100644 --- a/lib/widgets/header_profile.dart +++ b/lib/widgets/header_profile.dart @@ -9,6 +9,8 @@ import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/screens/certifications.dart'; import 'package:gecko/screens/common_elements.dart'; +import 'package:gecko/widgets/balance.dart'; +import 'package:gecko/widgets/certifications.dart'; import 'package:gecko/widgets/idty_status.dart'; import 'package:gecko/widgets/page_route_no_transition.dart'; import 'package:provider/provider.dart'; @@ -27,11 +29,12 @@ class HeaderProfile extends StatelessWidget { Widget build(BuildContext context) { const double avatarSize = 140; final duniterIndexer = Provider.of(context, listen: false); + final walletOptions = + Provider.of(context, listen: false); return Stack(children: [ Consumer(builder: (context, sub, _) { - // sub.getBlockchainStart(); - bool isAccountExist = balanceCache[address] != 0; + bool isAccountExist = walletOptions.balanceCache[address] != 0; return Container( height: 180, decoration: BoxDecoration( @@ -53,7 +56,7 @@ class HeaderProfile extends StatelessWidget { children: [ Container( height: 10, - color: yellowC, // Colors.grey[400], + color: yellowC, ), Row(children: [ GestureDetector( @@ -72,9 +75,8 @@ class HeaderProfile extends StatelessWidget { ), ]), const SizedBox(height: 25), - balance(context, address, 22), + Balance(address: address, size: 22), const SizedBox(height: 10), - InkWell( onTap: () => duniterIndexer.walletNameIndexer[address] != null ? { @@ -96,41 +98,16 @@ class HeaderProfile extends StatelessWidget { address: address, isOwner: false, color: Colors.black), - getCerts(context, address, 14) + Certifications(address: address, size: 14) ], ), ), - // if (username == null && - // g1WalletsBox.get(address)?.username != null) - // SizedBox( - // width: 230, - // child: Text( - // g1WalletsBox.get(address)?.username ?? '', - // style: const TextStyle( - // fontSize: 27, - // color: Color(0xff814C00), - // ), - // ), - // ), - // if (username != null) - // SizedBox( - // width: 230, - // child: Text( - // username, - // style: const TextStyle( - // fontSize: 27, - // color: Color(0xff814C00), - // ), - // ), - // ), - // const SizedBox(height: 55), ]), const Spacer(), Column(children: [ ClipOval( child: defaultAvatar(avatarSize), ), - // const SizedBox(height: 25), ]), ]), ), diff --git a/lib/widgets/idty_status.dart b/lib/widgets/idty_status.dart index 99f2054..cd97446 100644 --- a/lib/widgets/idty_status.dart +++ b/lib/widgets/idty_status.dart @@ -2,7 +2,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/substrate_sdk.dart'; -import 'package:gecko/screens/animated_text.dart'; +import 'package:gecko/widgets/animated_text.dart'; import 'package:provider/provider.dart'; class IdentityStatus extends StatelessWidget { diff --git a/lib/widgets/wallet_name.dart b/lib/widgets/wallet_name.dart new file mode 100644 index 0000000..5fd7078 --- /dev/null +++ b/lib/widgets/wallet_name.dart @@ -0,0 +1,36 @@ +import 'package:flutter/material.dart'; +import 'package:gecko/globals.dart'; +import 'package:gecko/models/wallet_data.dart'; +import 'package:truncate/truncate.dart'; + +class WalletName extends StatelessWidget { + const WalletName( + {Key? key, + required this.wallet, + this.size = 20, + this.color = Colors.black}) + : super(key: key); + final WalletData wallet; + final double size; + final Color color; + + @override + Widget build(BuildContext context) { + double newSize = wallet.name!.length <= 15 ? size : size - 2; + + return Row(mainAxisAlignment: MainAxisAlignment.center, children: [ + Text( + truncate(wallet.name!, 20), + textAlign: TextAlign.center, + style: TextStyle( + fontSize: isTall ? newSize : newSize * 0.9, + color: color, + fontWeight: FontWeight.w400, + fontStyle: FontStyle.italic, + ), + softWrap: false, + overflow: TextOverflow.ellipsis, + ), + ]); + } +}