refactoring: Declare keys for all widgets int widgets_keys.dart

This commit is contained in:
poka 2022-08-23 00:25:16 +02:00
parent dcb64c74b6
commit cbbd4eee34
29 changed files with 235 additions and 166 deletions

View File

@ -1,5 +1,3 @@
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'package:gecko/models/widgets_keys.dart'; import 'package:gecko/models/widgets_keys.dart';
@ -7,110 +5,51 @@ import 'package:integration_test/integration_test.dart';
import 'package:gecko/main.dart' as app; import 'package:gecko/main.dart' as app;
import 'tests_utility.dart';
void main() { void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized(); IntegrationTestWidgetsFlutterBinding.ensureInitialized();
group('end-to-end test', () { group('Ğecko basics', () {
testWidgets('Ğecko basics', (tester) async { testWidgets('Import chests', (tester) async {
app.main(); app.main();
// await Future.delayed(const Duration(seconds: 5));
await tester.pumpAndSettle(const Duration(seconds: 1)); await tester.pumpAndSettle(const Duration(seconds: 1));
// await deleteAllWallets(tester); // await deleteAllWallets(tester);
await restoreChest(tester); await restoreChest(tester);
});
// Verify the Gecko is well connected. testWidgets('Send 10 ĞD to ChristCosmic', (tester) async {
// await waitFor(tester, 'Vous êtes bien connecté'); // await goKey(tester, buttonKey);
// Open my chest
await goKey(tester, 'manageWallets', duration: 500);
// await goKey(tester, 'chooseChest');
// Enter secret code
await enterText(tester, keyPinForm, 'AAAAA');
await tester.pumpAndSettle();
// Verify the wallet 3 is here
await waitFor(tester, 'Porteuille 3');
}); });
}); });
} }
// Customs actions // Customs actions
Future deleteAllWallets(WidgetTester tester) async { Future deleteAllWallets(WidgetTester tester) async {
await goKey(tester, 'drawerMenu'); await goKey(tester, keyDrawerMenu);
await goKey(tester, 'parameters'); await goKey(tester, keyParameters);
await goKey(tester, 'deleteAllWallets'); await goKey(tester, keyDeleteAllWallets);
await goKey(tester, 'confirmPopop'); await goKey(tester, keyConfirm);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
} }
Future restoreChest(WidgetTester tester) async { Future restoreChest(WidgetTester tester) async {
await goKey(tester, 'restoreChest'); await goKey(tester, keyRestoreChest);
Clipboard.setData(const ClipboardData( Clipboard.setData(const ClipboardData(
text: text:
'smart joy blossom stomach champion fun diary relief gossip hospital logic bike')); 'smart joy blossom stomach champion fun diary relief gossip hospital logic bike'));
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await goKey(tester, 'pasteMnemonic'); await goKey(tester, keyPastMnemonic);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await goKey(tester, 'goNext'); await goKey(tester, keyGoNext);
await goKey(tester, 'goNext'); await goKey(tester, keyGoNext);
await goKey(tester, 'goNext'); await goKey(tester, keyGoNext);
await goKey(tester, 'goNext'); await goKey(tester, keyGoNext);
await goKey(tester, 'cachePassword'); await goKey(tester, keyCachePassword);
await enterText(tester, keyPinForm, 'AAAAA'); await enterText(tester, keyPinForm, 'AAAAA');
await waitFor(tester, 'Accéder à mon coffre'); await waitFor(tester, 'Accéder à mon coffre');
await goKey(tester, 'goWalletHome'); await goKey(tester, keyGoWalletsHome);
await waitFor(tester, 'ĞD'); await waitFor(tester, 'ĞD');
await goBack(tester); await goBack(tester);
await waitFor(tester, "y'a pas de lézard"); await waitFor(tester, "y'a pas de lézard");
} }
// CUSTOM METHODES
Future goKey(WidgetTester tester, String buttonKey,
{Finder? customFinder, int duration = 100}) async {
await tester.pumpAndSettle(Duration(milliseconds: duration));
final Finder finder = customFinder ?? find.byKey(Key(buttonKey));
await tester.tap(finder);
// await tester.pumpAndSettle(Duration(milliseconds: duration));
}
Future goBack(WidgetTester tester) async {
final NavigatorState navigator = tester.state(find.byType(Navigator));
navigator.pop();
await tester.pump();
}
Future enterText(
WidgetTester tester, GlobalKey<FormState> fieldKey, String textIn,
[int duration = 200]) async {
await tester.pumpAndSettle(Duration(milliseconds: duration));
await tester.enterText(find.byKey(fieldKey), textIn);
}
Future<void> waitFor(
WidgetTester tester,
String text, {
Duration timeout = const Duration(seconds: 5),
}) async {
final end = DateTime.now().add(timeout);
Finder finder = find.textContaining(text);
do {
if (DateTime.now().isAfter(end)) {
throw Exception('Timed out waiting for text $text');
}
await tester.pumpAndSettle();
await Future.delayed(const Duration(milliseconds: 100));
} while (finder.evaluate().isEmpty);
}
extension Truncate on String {
String truncate({required int max, String suffix = ''}) {
return length < max
? this
: '${substring(0, substring(0, max - suffix.length).lastIndexOf(" "))}$suffix';
}
}

View File

@ -0,0 +1,55 @@
// CUSTOM METHODES
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:gecko/globals.dart';
Future goKey(WidgetTester tester, Key buttonKey,
{Finder? customFinder, int duration = 100}) async {
await tester.pumpAndSettle(Duration(milliseconds: duration));
final Finder finder = customFinder ?? find.byKey(buttonKey);
log.d('INTEGRATION TEST: Tap on ${finder.description}}');
await tester.tap(finder);
// await tester.pumpAndSettle(Duration(milliseconds: duration));
}
Future goBack(WidgetTester tester) async {
final NavigatorState navigator = tester.state(find.byType(Navigator));
log.d('INTEGRATION TEST: Go back');
navigator.pop();
await tester.pump();
}
Future enterText(WidgetTester tester, Key fieldKey, String textIn,
[int duration = 200]) async {
await tester.pumpAndSettle(Duration(milliseconds: duration));
log.d('INTEGRATION TEST: Enter text: $textIn');
await tester.enterText(find.byKey(fieldKey), textIn);
}
Future<void> waitFor(
WidgetTester tester,
String text, {
Duration timeout = const Duration(seconds: 5),
}) async {
final end = DateTime.now().add(timeout);
Finder finder = find.textContaining(text);
log.d('INTEGRATION TEST: Wait for: $text');
do {
if (DateTime.now().isAfter(end)) {
throw Exception('Timed out waiting for text $text');
}
await tester.pumpAndSettle();
await Future.delayed(const Duration(milliseconds: 100));
} while (finder.evaluate().isEmpty);
}
extension Truncate on String {
String truncate({required int max, String suffix = ''}) {
return length < max
? this
: '${substring(0, substring(0, max - suffix.length).lastIndexOf(" "))}$suffix';
}
}

View File

@ -1,3 +1,74 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
final keyPinForm = GlobalKey<FormState>(); // General
const keyInfoPopup = Key('keyInfoPopup');
const keyGoNext = Key('keyGoNext');
const keyCancel = Key('keyCancel');
const keyConfirm = Key('keyConfirm');
// Home
const keyParameters = Key('keyParameters');
const keyContacts = Key('keyContacts');
const keyDrawerMenu = Key('keyDrawerMenu');
const keyManageWallets = Key('keyManageWallets');
const keyRestoreChest = Key('keyRestoreChest');
// Wallets home
const keyImportG1v1 = Key('keyImportG1v1');
const keyChangeChest = Key('keyChangeChest');
const keyListWallets = Key('keyListWallets');
const keyAddDerivation = Key('keyAddDerivation');
// Wallet options
const keyCopyAddress = Key('keyCopyAddress');
const keyOpenActivity = Key('keyOpenActivity');
const keyManageMembership = Key('keyManageMembership');
const keySetDefaultWallet = Key('keySetDefaultWallet');
const keyDeleteWallet = Key('keyDeleteWallet');
const keyWalletName = Key('keyWalletName');
const keyRenameWallet = Key('keyRenameWallet');
// Chest options
const keyShowSeed = Key('keyShowSeed');
const keyChangePin = Key('keyChangePin');
const keycreateRootDerivation = Key('keycreateRootDerivation');
const keyDeleteChest = Key('keyDeleteChest');
// Manage membership
const keyMigrateIdentity = Key('keyMigrateIdentity');
const keyRevokeIdty = Key('keyRevokeIdty');
// Choose chest
const keyCreateNewChest = Key('keyCreateNewChest');
const keyImportChest = Key('keyImportChest');
// Profile view
const keyViewActivity = Key('keyViewActivity');
const keyCertify = Key('keyCertify');
const keyPay = Key('keyPay');
// Activity view
const keyListTransactions = Key('keyListTransactions');
// Unlock wallet
const keyPinForm = Key('keyPinForm');
const keyPopButton = Key('keyPopButton');
const keyCachePassword = Key('keyCachePassword');
// Settings
const keyDeleteAllWallets = Key('keyDeleteAllWallets');
// Onboarding
const keyPastMnemonic = Key('keyPastMnemonic');
const keyBubbleSpeak = Key('keyBubbleSpeak');
const keyGenerateMnemonic = Key('keyGenerateMnemonic');
const keyAskedWord = Key('keyAskedWord');
const keyInputWord = Key('keyInputWord');
const keyGeneratedPin = Key('keyGeneratedPin');
const keyGoWalletsHome = Key('keyGoWalletsHome');
// Unit keys
Key keyMnemonicWord(String word) => Key('keyMnemonicWord$word');
Key keyIndexerResult(int keyId) => Key('keyIndexerResult$keyId');
Key keyTransaction(int keyId) => Key('keyTransaction$keyId');
Key keySearchResult(int keyId) => Key('keySearchResult$keyId');

View File

@ -4,6 +4,7 @@ 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/wallet_data.dart'; 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/my_wallets.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -59,13 +60,13 @@ class ChestProvider with ChangeNotifier {
title: Text('areYouSureToDeleteWallet'.tr(args: [walletName!])), title: Text('areYouSureToDeleteWallet'.tr(args: [walletName!])),
actions: <Widget>[ actions: <Widget>[
TextButton( TextButton(
child: Text("no".tr(), key: const Key('cancelDeleting')), child: Text("no".tr(), key: keyCancel),
onPressed: () { onPressed: () {
Navigator.pop(context, false); Navigator.pop(context, false);
}, },
), ),
TextButton( TextButton(
child: Text("yes".tr(), key: const Key('confirmDeleting')), child: Text("yes".tr(), key: keyConfirm),
onPressed: () { onPressed: () {
Navigator.pop(context, true); Navigator.pop(context, true);
}, },

View File

@ -8,6 +8,7 @@ import 'package:gecko/globals.dart';
import 'package:gecko/models/g1_wallets_list.dart'; import 'package:gecko/models/g1_wallets_list.dart';
import 'package:gecko/models/queries_indexer.dart'; import 'package:gecko/models/queries_indexer.dart';
import 'package:gecko/models/wallet_data.dart'; 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/cesium_plus.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallet_options.dart';
@ -301,7 +302,7 @@ class DuniterIndexer with ChangeNotifier {
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 5), padding: const EdgeInsets.symmetric(horizontal: 5),
child: ListTile( child: ListTile(
key: Key('searchResult${keyID++}'), key: keyIndexerResult(keyID++),
horizontalTitleGap: 40, horizontalTitleGap: 40,
contentPadding: const EdgeInsets.all(5), contentPadding: const EdgeInsets.all(5),
leading: cesiumPlusProvider.defaultAvatar(avatarSize), leading: cesiumPlusProvider.defaultAvatar(avatarSize),

View File

@ -6,6 +6,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/models/widgets_keys.dart';
import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/duniter_indexer.dart';
import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/my_wallets.dart';
import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/wallet_data.dart';
@ -258,7 +259,7 @@ class WalletOptionsProvider with ChangeNotifier {
Consumer<WalletOptionsProvider>( Consumer<WalletOptionsProvider>(
builder: (context, wOptions, _) { builder: (context, wOptions, _) {
return TextButton( return TextButton(
key: const Key('infoPopup'), key: keyInfoPopup,
child: Text( child: Text(
"validate".tr(), "validate".tr(),
style: TextStyle( style: TextStyle(
@ -354,7 +355,7 @@ class WalletOptionsProvider with ChangeNotifier {
Consumer<WalletOptionsProvider>( Consumer<WalletOptionsProvider>(
builder: (context, wOptions, _) { builder: (context, wOptions, _) {
return TextButton( return TextButton(
key: const Key('infoPopup'), key: keyInfoPopup,
child: Text( child: Text(
"validate".tr(), "validate".tr(),
style: TextStyle( style: TextStyle(
@ -381,7 +382,7 @@ class WalletOptionsProvider with ChangeNotifier {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
TextButton( TextButton(
key: const Key('cancel'), key: keyCancel,
child: Text( child: Text(
"cancel".tr(), "cancel".tr(),
style: TextStyle( style: TextStyle(
@ -457,7 +458,7 @@ class WalletOptionsProvider with ChangeNotifier {
width: 260, width: 260,
child: Stack(children: <Widget>[ child: Stack(children: <Widget>[
TextField( TextField(
key: const Key('walletName'), key: keyWalletName,
autofocus: false, autofocus: false,
focusNode: walletNameFocus, focusNode: walletNameFocus,
enabled: isEditing, enabled: isEditing,
@ -481,7 +482,7 @@ class WalletOptionsProvider with ChangeNotifier {
Positioned( Positioned(
right: 0, right: 0,
child: InkWell( child: InkWell(
key: const Key('renameWallet'), key: keyRenameWallet,
onTap: () async { onTap: () async {
// _isNewNameValid = // _isNewNameValid =
// walletProvider.editWalletName(wallet.id(), isCesium: false); // walletProvider.editWalletName(wallet.id(), isCesium: false);

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/g1_wallets_list.dart'; import 'package:gecko/models/g1_wallets_list.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/cesium_plus.dart'; import 'package:gecko/providers/cesium_plus.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallet_options.dart';
@ -166,7 +167,7 @@ class WalletsProfilesProvider with ChangeNotifier {
), ),
Row(children: [ Row(children: [
GestureDetector( GestureDetector(
key: const Key('copyPubkey'), key: keyCopyAddress,
onTap: () { onTap: () {
Clipboard.setData(ClipboardData(text: address)); Clipboard.setData(ClipboardData(text: address));
snackCopyKey(context); snackCopyKey(context);

View File

@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/queries_indexer.dart'; import 'package:gecko/models/queries_indexer.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/cesium_plus.dart'; import 'package:gecko/providers/cesium_plus.dart';
import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/duniter_indexer.dart';
import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/home.dart';
@ -132,7 +133,7 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
child: Builder( child: Builder(
builder: (context) => Expanded( builder: (context) => Expanded(
child: ListView( child: ListView(
key: const Key('listTransactions'), key: keyListTransactions,
controller: scrollController, controller: scrollController,
children: <Widget>[historyView(context, result)], children: <Widget>[historyView(context, result)],
), ),
@ -286,7 +287,7 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
child: child:
// Row(children: [Column(children: [],)],) // Row(children: [Column(children: [],)],)
ListTile( ListTile(
key: Key('transaction${keyID++}'), key: keyTransaction(keyID++),
contentPadding: const EdgeInsets.only( contentPadding: const EdgeInsets.only(
left: 20, right: 30, top: 15, bottom: 15), left: 20, right: 30, top: 15, bottom: 15),
leading: ClipOval( leading: ClipOval(

View File

@ -3,6 +3,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_markdown/flutter_markdown.dart'; import 'package:flutter_markdown/flutter_markdown.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -62,7 +63,7 @@ class CommonElements {
width: 380 * ratio, width: 380 * ratio,
height: 60 * ratio, height: 60 * ratio,
child: ElevatedButton( child: ElevatedButton(
key: const Key('goNext'), key: keyGoNext,
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
elevation: 4, elevation: 4,
primary: orangeC, // background primary: orangeC, // background
@ -248,7 +249,7 @@ Future<bool?> confirmPopup(BuildContext context, String title) async {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
TextButton( TextButton(
key: const Key('confirmPopop'), key: keyConfirm,
child: Text( child: Text(
"yes".tr(), "yes".tr(),
style: const TextStyle( style: const TextStyle(
@ -296,7 +297,7 @@ Future<void> infoPopup(BuildContext context, String title) async {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
TextButton( TextButton(
key: const Key('infoPopup'), key: keyInfoPopup,
child: const Text( child: const Text(
"D'accord", "D'accord",
style: TextStyle( style: TextStyle(

View File

@ -5,6 +5,7 @@ import 'package:connectivity_plus/connectivity_plus.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/stateful_wrapper.dart'; import 'package:gecko/models/stateful_wrapper.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/chest_provider.dart'; import 'package:gecko/providers/chest_provider.dart';
import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/duniter_indexer.dart';
import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/home.dart';
@ -64,7 +65,7 @@ class HomeScreen extends StatelessWidget {
]), ]),
), ),
ListTile( ListTile(
key: const Key('parameters'), key: keyParameters,
title: Text('parameters'.tr()), title: Text('parameters'.tr()),
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
@ -77,7 +78,7 @@ class HomeScreen extends StatelessWidget {
}, },
), ),
ListTile( ListTile(
key: const Key('contacts'), key: keyContacts,
title: Text('contactsManagement'.tr()), title: Text('contactsManagement'.tr()),
onTap: () { onTap: () {
Navigator.pop(context); Navigator.pop(context);
@ -89,26 +90,6 @@ class HomeScreen extends StatelessWidget {
); );
}, },
), ),
// ListTile(
// key: const Key('substrateSandbox'),
// title: const Text('Substrate debug'),
// onTap: () {
// Navigator.pop(context);
// Navigator.push(
// context,
// MaterialPageRoute(builder: (context) {
// return const SubstrateSandBox();
// }),
// );
// },
// ),
// ListTile(
// title: const Text('A propos'),
// onTap: () {
// },
// ),
])), ])),
Align( Align(
alignment: FractionalOffset.bottomCenter, alignment: FractionalOffset.bottomCenter,
@ -220,7 +201,7 @@ Widget geckHome(context) {
left: 15, left: 15,
child: Builder( child: Builder(
builder: (context) => IconButton( builder: (context) => IconButton(
key: const Key('drawerMenu'), key: keyDrawerMenu,
icon: const Icon( icon: const Icon(
Icons.menu, Icons.menu,
color: Colors.white, color: Colors.white,
@ -343,7 +324,7 @@ Widget geckHome(context) {
], ],
), ),
child: ClipOval( child: ClipOval(
key: const Key('manageWallets'), key: keyManageWallets,
child: Material( child: Material(
color: orangeC, // button color color: orangeC, // button color
child: InkWell( child: InkWell(
@ -466,7 +447,7 @@ Widget welcomeHome(context) {
left: 15, left: 15,
child: Builder( child: Builder(
builder: (context) => IconButton( builder: (context) => IconButton(
key: const Key('drawerMenu'), key: keyDrawerMenu,
icon: const Icon( icon: const Icon(
Icons.menu, Icons.menu,
color: Colors.white, color: Colors.white,
@ -581,7 +562,7 @@ Widget welcomeHome(context) {
width: 410, width: 410,
height: 70, height: 70,
child: OutlinedButton( child: OutlinedButton(
key: const Key('restoreChest'), key: keyRestoreChest,
style: OutlinedButton.styleFrom( style: OutlinedButton.styleFrom(
side: BorderSide(width: 4, color: orangeC)), side: BorderSide(width: 4, color: orangeC)),
onPressed: () { onPressed: () {

View File

@ -6,6 +6,7 @@ import 'package:gecko/globals.dart';
import 'package:gecko/models/chest_data.dart'; import 'package:gecko/models/chest_data.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/wallet_data.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/chest_provider.dart'; import 'package:gecko/providers/chest_provider.dart';
import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/home.dart';
import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/my_wallets.dart';
@ -58,7 +59,7 @@ class ChestOptions extends StatelessWidget {
child: Column(children: <Widget>[ child: Column(children: <Widget>[
SizedBox(height: 30 * ratio), SizedBox(height: 30 * ratio),
InkWell( InkWell(
key: const Key('showSeed'), key: keyShowSeed,
onTap: () async { onTap: () async {
MyWalletsProvider myWalletProvider = MyWalletsProvider myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false); Provider.of<MyWalletsProvider>(context, listen: false);
@ -108,7 +109,7 @@ class ChestOptions extends StatelessWidget {
SizedBox(height: 10 * ratio), SizedBox(height: 10 * ratio),
Consumer<SubstrateSdk>(builder: (context, sub, _) { Consumer<SubstrateSdk>(builder: (context, sub, _) {
return InkWell( return InkWell(
key: const Key('changePin'), key: keyChangePin,
onTap: sub.nodeConnected onTap: sub.nodeConnected
? () async { ? () async {
// await _chestProvider.changePin(context, cesiumWallet); // await _chestProvider.changePin(context, cesiumWallet);
@ -152,7 +153,7 @@ class ChestOptions extends StatelessWidget {
SizedBox(height: 10 * ratio), SizedBox(height: 10 * ratio),
Consumer<SubstrateSdk>(builder: (context, sub, _) { Consumer<SubstrateSdk>(builder: (context, sub, _) {
return InkWell( return InkWell(
key: const Key('createRootDerivation'), key: keycreateRootDerivation,
onTap: sub.nodeConnected onTap: sub.nodeConnected
? () async { ? () async {
await Navigator.push( await Navigator.push(
@ -188,7 +189,7 @@ class ChestOptions extends StatelessWidget {
}), }),
SizedBox(height: 10 * ratio), SizedBox(height: 10 * ratio),
InkWell( InkWell(
key: const Key('deleteChest'), key: keyDeleteChest,
onTap: () async { onTap: () async {
await chestProvider.deleteChest(context, currentChest); await chestProvider.deleteChest(context, currentChest);
}, },

View File

@ -3,6 +3,7 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/my_wallets.dart';
import 'package:gecko/models/wallet_data.dart'; import 'package:gecko/models/wallet_data.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
@ -156,7 +157,7 @@ class _ChooseChestState extends State<ChooseChest> {
child: Align( child: Align(
alignment: Alignment.bottomCenter, alignment: Alignment.bottomCenter,
child: InkWell( child: InkWell(
key: const Key('createNewChest'), key: keyCreateNewChest,
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
@ -179,7 +180,7 @@ class _ChooseChestState extends State<ChooseChest> {
), ),
), ),
InkWell( InkWell(
key: const Key('importChest'), key: keyImportChest,
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,

View File

@ -7,6 +7,7 @@ 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/wallet_data.dart'; 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/my_wallets.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallet_options.dart';
@ -112,7 +113,7 @@ class ChooseWalletScreen extends StatelessWidget {
return CustomScrollView(slivers: <Widget>[ return CustomScrollView(slivers: <Widget>[
const SliverToBoxAdapter(child: SizedBox(height: 20)), const SliverToBoxAdapter(child: SizedBox(height: 20)),
SliverGrid.count( SliverGrid.count(
key: const Key('listWallets'), key: keyListWallets,
crossAxisCount: nTule, crossAxisCount: nTule,
childAspectRatio: 1, childAspectRatio: 1,
crossAxisSpacing: 0, crossAxisSpacing: 0,

View File

@ -7,6 +7,7 @@ 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/wallet_data.dart'; 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/my_wallets.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallet_options.dart';
@ -173,7 +174,7 @@ class ImportG1v1 extends StatelessWidget {
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
GestureDetector( GestureDetector(
key: const Key('copyPubkey'), key: keyCopyAddress,
onTap: () { onTap: () {
Clipboard.setData( Clipboard.setData(
ClipboardData(text: sub.g1V1NewAddress)); ClipboardData(text: sub.g1V1NewAddress));

View File

@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
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/widgets_keys.dart';
import 'package:gecko/screens/myWallets/migrate_identity.dart'; import 'package:gecko/screens/myWallets/migrate_identity.dart';
// import 'package:gecko/models/wallet_data.dart'; // import 'package:gecko/models/wallet_data.dart';
// import 'package:gecko/providers/my_wallets.dart'; // import 'package:gecko/providers/my_wallets.dart';
@ -41,7 +42,7 @@ class ManageMembership extends StatelessWidget {
Widget migrateIdentity(BuildContext context) { Widget migrateIdentity(BuildContext context) {
return InkWell( return InkWell(
key: const Key('migrateIdentity'), key: keyMigrateIdentity,
onTap: () async { onTap: () async {
Navigator.push( Navigator.push(
context, context,
@ -64,7 +65,7 @@ class ManageMembership extends StatelessWidget {
Widget revokeMyIdentity(BuildContext context) { Widget revokeMyIdentity(BuildContext context) {
return InkWell( return InkWell(
key: const Key('revokeIdty'), key: keyRevokeIdty,
onTap: () async { onTap: () async {
// TODOO: Generate revoke document, and understand extrinsic identity.revokeIdentity options // TODOO: Generate revoke document, and understand extrinsic identity.revokeIdentity options
// final _answer = await confirmPopup(context, // final _answer = await confirmPopup(context,

View File

@ -3,6 +3,7 @@ import 'package:easy_localization/easy_localization.dart';
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/widgets_keys.dart';
import 'package:gecko/providers/generate_wallets.dart'; import 'package:gecko/providers/generate_wallets.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/common_elements.dart';
@ -91,7 +92,7 @@ class RestoreChest extends StatelessWidget {
width: 410, width: 410,
height: 70, height: 70,
child: ElevatedButton( child: ElevatedButton(
key: const Key('goNext'), key: keyGoNext,
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
elevation: 4, elevation: 4,
primary: orangeC, // background primary: orangeC, // background
@ -131,7 +132,7 @@ class RestoreChest extends StatelessWidget {
width: 190, width: 190,
height: 60, height: 60,
child: ElevatedButton( child: ElevatedButton(
key: const Key('pasteMnemonic'), key: keyPastMnemonic,
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
elevation: 4, elevation: 4,
primary: yellowC, // background primary: yellowC, // background
@ -175,7 +176,7 @@ class RestoreChest extends StatelessWidget {
color: Colors.white, color: Colors.white,
child: Text( child: Text(
text, text,
key: const Key('importText'), key: keyBubbleSpeak,
textAlign: TextAlign.justify, textAlign: TextAlign.justify,
style: const TextStyle( style: const TextStyle(
color: Colors.black, fontSize: 19, fontWeight: FontWeight.w400), color: Colors.black, fontSize: 19, fontWeight: FontWeight.w400),

View File

@ -4,6 +4,7 @@ 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/wallet_data.dart'; 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/my_wallets.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/common_elements.dart';
@ -206,7 +207,7 @@ class ShowSeed extends StatelessWidget {
), ),
Text( Text(
dataWord, dataWord,
key: Key('word$dataWord'), key: keyMnemonicWord(dataWord),
style: TextStyle(fontSize: 17 * ratio, color: Colors.black), style: TextStyle(fontSize: 17 * ratio, color: Colors.black),
), ),
]), ]),

View File

@ -53,7 +53,7 @@ class UnlockingWallet extends StatelessWidget {
left: 15, left: 15,
child: Builder( child: Builder(
builder: (context) => IconButton( builder: (context) => IconButton(
key: const Key('popButton'), key: keyPopButton,
icon: const Icon( icon: const Icon(
Icons.arrow_back, Icons.arrow_back,
color: Colors.black, color: Colors.black,
@ -104,6 +104,7 @@ class UnlockingWallet extends StatelessWidget {
SizedBox(height: 3 * ratio), SizedBox(height: 3 * ratio),
if (canUnlock) if (canUnlock)
InkWell( InkWell(
key: keyCachePassword,
onTap: () { onTap: () {
walletOptions.changePinCacheChoice(); walletOptions.changePinCacheChoice();
}, },
@ -128,7 +129,7 @@ class UnlockingWallet extends StatelessWidget {
const SizedBox(height: 10), const SizedBox(height: 10),
// if (canUnlock) // if (canUnlock)
InkWell( InkWell(
key: const Key('chooseChest'), key: keyChangeChest,
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,

View File

@ -3,6 +3,7 @@ import 'dart:io';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.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/widgets_keys.dart';
import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/duniter_indexer.dart';
import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/home.dart';
import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/my_wallets.dart';
@ -213,7 +214,7 @@ class WalletOptions extends StatelessWidget {
else else
const SizedBox(), const SizedBox(),
if (isMember.data!) if (isMember.data!)
manageMemberStatus(context) manageMembership(context)
]); ]);
}), }),
]); ]);
@ -334,7 +335,7 @@ class WalletOptions extends StatelessWidget {
Widget pubkeyWidget(WalletOptionsProvider walletProvider, BuildContext ctx) { Widget pubkeyWidget(WalletOptionsProvider walletProvider, BuildContext ctx) {
final String shortPubkey = getShortPubkey(walletProvider.address.text); final String shortPubkey = getShortPubkey(walletProvider.address.text);
return GestureDetector( return GestureDetector(
key: const Key('copyPubkey'), key: keyCopyAddress,
onTap: () { onTap: () {
Clipboard.setData(ClipboardData(text: walletProvider.address.text)); Clipboard.setData(ClipboardData(text: walletProvider.address.text));
snackCopyKey(ctx); snackCopyKey(ctx);
@ -394,7 +395,7 @@ class WalletOptions extends StatelessWidget {
WalletsProfilesProvider historyProvider, WalletsProfilesProvider historyProvider,
WalletOptionsProvider walletProvider) { WalletOptionsProvider walletProvider) {
return InkWell( return InkWell(
key: const Key('displayActivity'), key: keyOpenActivity,
onTap: () { onTap: () {
// _historyProvider.nPage = 1; // _historyProvider.nPage = 1;
Navigator.push( Navigator.push(
@ -431,11 +432,11 @@ class WalletOptions extends StatelessWidget {
); );
} }
Widget manageMemberStatus(BuildContext context) { Widget manageMembership(BuildContext context) {
WalletOptionsProvider walletOptions = WalletOptionsProvider walletOptions =
Provider.of<WalletOptionsProvider>(context, listen: false); Provider.of<WalletOptionsProvider>(context, listen: false);
return InkWell( return InkWell(
key: const Key('manageStatus'), key: keyManageMembership,
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
@ -471,7 +472,7 @@ class WalletOptions extends StatelessWidget {
WalletData defaultWallet = myWalletProvider.getDefaultWallet(); WalletData defaultWallet = myWalletProvider.getDefaultWallet();
walletOptions.isDefaultWallet = (defaultWallet.number == wallet.id()[1]); walletOptions.isDefaultWallet = (defaultWallet.number == wallet.id()[1]);
return InkWell( return InkWell(
key: const Key('setDefaultWallet'), key: keySetDefaultWallet,
onTap: !walletProvider.isDefaultWallet onTap: !walletProvider.isDefaultWallet
? () async { ? () async {
await setDefaultWallet(context, currentChest); await setDefaultWallet(context, currentChest);
@ -544,7 +545,7 @@ class WalletOptions extends StatelessWidget {
!hasConsumers.data! && !hasConsumers.data! &&
(balance > 2 || balance == 0); (balance > 2 || balance == 0);
return InkWell( return InkWell(
key: const Key('deleteWallet'), key: keyDeleteWallet,
onTap: canDelete onTap: canDelete
? () async { ? () async {
await walletProvider.deleteWallet(context, wallet); await walletProvider.deleteWallet(context, wallet);

View File

@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.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/widgets_keys.dart';
import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/duniter_indexer.dart';
import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/home.dart';
import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/my_wallets.dart';
@ -59,7 +60,6 @@ class WalletsHome extends StatelessWidget {
); );
}), }),
title: Text(currentChest.name!, title: Text(currentChest.name!,
key: const Key('myWallets'),
style: TextStyle(color: Colors.grey[850])), style: TextStyle(color: Colors.grey[850])),
backgroundColor: const Color(0xffFFD58D), backgroundColor: const Color(0xffFFD58D),
), ),
@ -108,7 +108,7 @@ class WalletsHome extends StatelessWidget {
)), )),
const SizedBox(height: 30), const SizedBox(height: 30),
InkWell( InkWell(
key: const Key('importG1v1'), key: keyImportG1v1,
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
@ -130,7 +130,7 @@ class WalletsHome extends StatelessWidget {
), ),
const SizedBox(height: 5), const SizedBox(height: 5),
InkWell( InkWell(
key: const Key('changeChest'), key: keyChangeChest,
onTap: () { onTap: () {
Navigator.push( Navigator.push(
context, context,
@ -190,7 +190,7 @@ class WalletsHome extends StatelessWidget {
return CustomScrollView(slivers: <Widget>[ return CustomScrollView(slivers: <Widget>[
const SliverToBoxAdapter(child: SizedBox(height: 20)), const SliverToBoxAdapter(child: SizedBox(height: 20)),
SliverGrid.count( SliverGrid.count(
key: const Key('listWallets'), key: keyListWallets,
crossAxisCount: nTule, crossAxisCount: nTule,
childAspectRatio: 1, childAspectRatio: 1,
crossAxisSpacing: 0, crossAxisSpacing: 0,
@ -366,7 +366,7 @@ class WalletsHome extends StatelessWidget {
child: Column(children: <Widget>[ child: Column(children: <Widget>[
Expanded( Expanded(
child: InkWell( child: InkWell(
key: const Key('addDerivation'), key: keyAddDerivation,
onTap: () async { onTap: () async {
if (!myWalletProvider.isNewDerivationLoading) { if (!myWalletProvider.isNewDerivationLoading) {
WalletData? defaultWallet = WalletData? defaultWallet =

View File

@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
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/widgets_keys.dart';
import 'package:gecko/providers/cesium_plus.dart'; import 'package:gecko/providers/cesium_plus.dart';
import 'package:gecko/models/g1_wallets_list.dart'; import 'package:gecko/models/g1_wallets_list.dart';
import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/duniter_indexer.dart';
@ -71,7 +72,7 @@ class ContactsScreen extends StatelessWidget {
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 5), padding: const EdgeInsets.symmetric(horizontal: 5),
child: ListTile( child: ListTile(
key: Key('searchResult${keyID++}'), key: keySearchResult(keyID++),
horizontalTitleGap: 40, horizontalTitleGap: 40,
contentPadding: const EdgeInsets.all(5), contentPadding: const EdgeInsets.all(5),
leading: cesiumPlusProvider leading: cesiumPlusProvider

View File

@ -102,7 +102,7 @@ class OnboardingStepTen extends StatelessWidget {
Consumer<SubstrateSdk>(builder: (context, sub, _) { Consumer<SubstrateSdk>(builder: (context, sub, _) {
return sub.nodeConnected return sub.nodeConnected
? InkWell( ? InkWell(
key: const Key('cachePassword'), key: keyCachePassword,
onTap: () { onTap: () {
walletOptions.changePinCacheChoice(); walletOptions.changePinCacheChoice();
}, },

View File

@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.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/widgets_keys.dart';
import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/common_elements.dart';
import 'package:gecko/screens/myWallets/wallets_home.dart'; import 'package:gecko/screens/myWallets/wallets_home.dart';
@ -54,7 +55,7 @@ Widget finishButton(BuildContext context) {
width: 380 * ratio, width: 380 * ratio,
height: 60 * ratio, height: 60 * ratio,
child: ElevatedButton( child: ElevatedButton(
key: const Key('goWalletHome'), key: keyGoWalletsHome,
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
elevation: 4, elevation: 4,
primary: orangeC, primary: orangeC,

View File

@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.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/widgets_keys.dart';
import 'package:gecko/providers/generate_wallets.dart'; import 'package:gecko/providers/generate_wallets.dart';
import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/my_wallets.dart';
import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/common_elements.dart';
@ -80,7 +81,7 @@ class _ChooseChestState extends State<OnboardingStepFive> {
width: 380 * ratio, width: 380 * ratio,
height: 60 * ratio, height: 60 * ratio,
child: ElevatedButton( child: ElevatedButton(
key: const Key('generateMnemonic'), key: keyGenerateMnemonic,
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
elevation: 4, elevation: 4,
primary: const Color(0xffFFD58D), primary: const Color(0xffFFD58D),
@ -174,7 +175,7 @@ Widget arrayCell(dataWord) {
), ),
Text( Text(
dataWord.split(':')[1], dataWord.split(':')[1],
key: Key('word${dataWord.split(':')[0]}'), key: keyMnemonicWord(dataWord.split(':')[0]),
style: TextStyle(fontSize: 17 * ratio, color: Colors.black), style: TextStyle(fontSize: 17 * ratio, color: Colors.black),
), ),
]), ]),

View File

@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.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/widgets_keys.dart';
import 'package:gecko/providers/generate_wallets.dart'; import 'package:gecko/providers/generate_wallets.dart';
import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/common_elements.dart';
import 'package:gecko/screens/onBoarding/7.dart'; import 'package:gecko/screens/onBoarding/7.dart';
@ -66,7 +67,7 @@ class OnboardingStepSix extends StatelessWidget {
true), true),
SizedBox(height: isTall ? 70 : 20), SizedBox(height: isTall ? 70 : 20),
Text('${generateWalletProvider.nbrWord + 1}', Text('${generateWalletProvider.nbrWord + 1}',
key: const Key('askedWord'), key: keyAskedWord,
style: TextStyle( style: TextStyle(
fontSize: isTall ? 17 : 15, fontSize: isTall ? 17 : 15,
color: orangeC, color: orangeC,
@ -81,7 +82,7 @@ class OnboardingStepSix extends StatelessWidget {
)), )),
width: 430, width: 430,
child: TextFormField( child: TextFormField(
key: const Key('inputWord'), key: keyInputWord,
autofocus: true, autofocus: true,
enabled: !generateWalletProvider.isAskedWordValid, enabled: !generateWalletProvider.isAskedWordValid,
controller: wordController, controller: wordController,
@ -206,7 +207,7 @@ Widget arrayCell(dataWord) {
), ),
Text( Text(
dataWord.split(':')[1], dataWord.split(':')[1],
key: Key('word${dataWord.split(':')[0]}'), key: keyMnemonicWord(dataWord.split(':')[0]),
style: const TextStyle(fontSize: 20, color: Colors.black), style: const TextStyle(fontSize: 20, color: Colors.black),
), ),
]), ]),

View File

@ -3,6 +3,7 @@ import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.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/widgets_keys.dart';
import 'package:gecko/providers/generate_wallets.dart'; import 'package:gecko/providers/generate_wallets.dart';
import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/common_elements.dart';
import 'package:gecko/screens/onBoarding/10.dart'; import 'package:gecko/screens/onBoarding/10.dart';
@ -52,7 +53,7 @@ class OnboardingStepNine extends StatelessWidget {
alignment: Alignment.centerRight, alignment: Alignment.centerRight,
children: <Widget>[ children: <Widget>[
TextField( TextField(
key: const Key('generatedPin'), key: keyGeneratedPin,
enabled: false, enabled: false,
controller: generateWalletProvider.pin, controller: generateWalletProvider.pin,
maxLines: 1, maxLines: 1,
@ -79,7 +80,7 @@ class OnboardingStepNine extends StatelessWidget {
width: 380 * ratio, width: 380 * ratio,
height: 60 * ratio, height: 60 * ratio,
child: ElevatedButton( child: ElevatedButton(
key: const Key('changeSecretCode'), key: keyChangePin,
style: ElevatedButton.styleFrom( style: ElevatedButton.styleFrom(
elevation: 4, elevation: 4,
primary: const Color(0xffFFD58D), primary: const Color(0xffFFD58D),

View File

@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart';
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/widgets_keys.dart';
import 'package:gecko/providers/cesium_plus.dart'; import 'package:gecko/providers/cesium_plus.dart';
import 'package:gecko/models/g1_wallets_list.dart'; import 'package:gecko/models/g1_wallets_list.dart';
import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/duniter_indexer.dart';
@ -94,7 +95,7 @@ class SearchResultScreen extends StatelessWidget {
padding: padding:
const EdgeInsets.symmetric(horizontal: 5), const EdgeInsets.symmetric(horizontal: 5),
child: ListTile( child: ListTile(
key: Key('searchResult${keyID++}'), key: keySearchResult(keyID++),
horizontalTitleGap: 40, horizontalTitleGap: 40,
contentPadding: const EdgeInsets.all(5), contentPadding: const EdgeInsets.all(5),
leading: cesiumPlusProvider leading: cesiumPlusProvider

View File

@ -1,6 +1,7 @@
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/duniter_indexer.dart'; import 'package:gecko/providers/duniter_indexer.dart';
import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/my_wallets.dart';
import 'package:gecko/providers/settings_provider.dart'; import 'package:gecko/providers/settings_provider.dart';
@ -45,7 +46,7 @@ class SettingsScreen extends StatelessWidget {
width: buttonWidth, width: buttonWidth,
child: Center( child: Center(
child: InkWell( child: InkWell(
key: const Key('deleteAllWallets'), key: keyDeleteAllWallets,
onTap: () async { onTap: () async {
log.i('Oublier tous mes coffres'); log.i('Oublier tous mes coffres');
await _myWallets.deleteAllWallet(context); await _myWallets.deleteAllWallet(context);

View File

@ -5,6 +5,7 @@ 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/g1_wallets_list.dart'; import 'package:gecko/models/g1_wallets_list.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/cesium_plus.dart'; import 'package:gecko/providers/cesium_plus.dart';
import 'package:gecko/providers/home.dart'; import 'package:gecko/providers/home.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
@ -116,7 +117,7 @@ class WalletViewScreen extends StatelessWidget {
child: Material( child: Material(
color: yellowC, //const Color(0xffFFD58D), // button color color: yellowC, //const Color(0xffFFD58D), // button color
child: InkWell( child: InkWell(
key: const Key('viewHistory'), key: keyViewActivity,
splashColor: orangeC, // inkwell color splashColor: orangeC, // inkwell color
child: const Padding( child: const Padding(
padding: EdgeInsets.all(13), padding: EdgeInsets.all(13),
@ -206,7 +207,7 @@ class WalletViewScreen extends StatelessWidget {
color: color:
const Color(0xffFFD58D), // button color const Color(0xffFFD58D), // button color
child: InkWell( child: InkWell(
key: const Key('certify'), key: keyCertify,
splashColor: orangeC, // inkwell color splashColor: orangeC, // inkwell color
child: const Padding( child: const Padding(
padding: EdgeInsets.only(bottom: 0), padding: EdgeInsets.only(bottom: 0),
@ -290,7 +291,7 @@ class WalletViewScreen extends StatelessWidget {
child: Material( child: Material(
color: const Color(0xffFFD58D), // button color color: const Color(0xffFFD58D), // button color
child: InkWell( child: InkWell(
key: const Key('copyKey'), key: keyCopyAddress,
splashColor: orangeC, // inkwell color splashColor: orangeC, // inkwell color
child: const Padding( child: const Padding(
padding: EdgeInsets.all(20), padding: EdgeInsets.all(20),
@ -331,7 +332,7 @@ class WalletViewScreen extends StatelessWidget {
child: Material( child: Material(
color: orangeC, // button color color: orangeC, // button color
child: InkWell( child: InkWell(
key: const Key('pay'), key: keyPay,
splashColor: yellowC, splashColor: yellowC,
onTap: sub.nodeConnected onTap: sub.nodeConnected
? () { ? () {