Compare commits

..

3 Commits

Author SHA1 Message Date
guenoel 0cfd7ba2b0 refacto: headerprofileview 2022-11-17 15:43:49 +01:00
guenoel 2bf5adf049 refacto: walletname and bottomappbar 2022-11-16 18:10:38 +01:00
poka 57f5b5ddda refacto: widget choose_currency_unit 2022-11-16 16:57:33 +01:00
25 changed files with 569 additions and 487 deletions

View File

@ -125,7 +125,7 @@
"yesterday": "Yesterday", "yesterday": "Yesterday",
"thisWeek": "This week", "thisWeek": "This week",
"chestNotCompatibleMustReinstallGecko": "The version of your safes is no longer compatible with this version of Ğecko.\nAll your safes will be forgotten, you must import them again.", "chestNotCompatibleMustReinstallGecko": "The version of your safes is no longer compatible with this version of Ğecko.\nAll your safes will be forgotten, you must import them again.",
"notConnectedToInternet": "You are not connected to internet", "notConnectedToInternet": "You are note connected to internet",
"researchResults": "Results of your research", "researchResults": "Results of your research",
"resultsFor": "Results for ", "resultsFor": "Results for ",
"forgetAllMyChests": "Forget all my chests", "forgetAllMyChests": "Forget all my chests",
@ -137,7 +137,7 @@
"sending": "Sending...", "sending": "Sending...",
"propagating": "Propagating...", "propagating": "Propagating...",
"validating": "Validating...", "validating": "Validating...",
"anErrorOccurred": "An error occurred", "anErrorOccured": "An error occured",
"24hbetweenCerts": "You have to wait 24h between certs", "24hbetweenCerts": "You have to wait 24h between certs",
"canNotCertifySelf": "You can not certify yourself", "canNotCertifySelf": "You can not certify yourself",
"nameAlreadyExist": "This name is already taken", "nameAlreadyExist": "This name is already taken",

View File

@ -1,6 +1,6 @@
{ {
"searchWallet": "Buscar\nbilletera", "searchWallet": "Search\nwallet",
"manageWallets": "Gestionar\nbilleteras", "manageWallets": "Manage\nwallets",
"scanQRCode": "Escanear un\ncódigo QR", "scanQRCode": "Escanear un\ncódigo QR",
"wellConnectedToNode": "Estas bien conectada al nodo\n{}", "wellConnectedToNode": "Estas bien conectada al nodo\n{}",
"networkLost": "Se ha perdido la red...", "networkLost": "Se ha perdido la red...",
@ -13,20 +13,20 @@
"fastAppDescription": "La aplicación de pago {}\nmás rápida que un reptil de Vietnam", "fastAppDescription": "La aplicación de pago {}\nmás rápida que un reptil de Vietnam",
"createWallet": "Crear una billetera", "createWallet": "Crear una billetera",
"restoreWallet": "Restaurar mis billeteras", "restoreWallet": "Restaurar mis billeteras",
"parameters": "Parámetros", "parameters": "Parameters",
"chooseAnotherMnemonic": "Choose an other\nmnemonic sentence", "chooseAnotherMnemonic": "Choose an other\nmnemonic sentence",
"iNotedMyMnemonic": "He escrito mi frase", "iNotedMyMnemonic": "I wrote down my sentence",
"printMyMnemonic": "Print my mnemonic sentence", "printMyMnemonic": "Print my mnemonic sentence",
"manageChest": "Configure this chest", "manageChest": "Configure this chest",
"changeChest": "Change chest", "changeChest": "Change chest",
"geckoChest": "Ğecko chest", "geckoChest": "Ğecko chest",
"toUnlockEnterPassword": "To unlock your safe, enter your secret code, away from prying lizards:", "toUnlockEnterPassword": "To unlock your safe, enter your secret code, away from prying lizards:",
"rememberPassword": "Keep this code in memory for 15 minutes", "rememberPassword": "Keep this code in memory for 15 minutes",
"myRootWallet": "Mi billetera principal", "myRootWallet": "My root wallet",
"currentWallet": "My current chest", "currentWallet": "My current chest",
"wallet": "Billetera", "wallet": "Wallet",
"displayMnemonic": "Display my mnemonic sentence", "displayMnemonic": "Display my mnemonic sentence",
"changePassword": "Cambiar mi contraseña", "changePassword": "Change my password",
"createDerivation": "Create a new derivation", "createDerivation": "Create a new derivation",
"createCustomDerivation": "Create a new custom derivation", "createCustomDerivation": "Create a new custom derivation",
"deleteChest": "Delete this chest", "deleteChest": "Delete this chest",
@ -36,21 +36,21 @@
"selectMyChest": "Select my chest", "selectMyChest": "Select my chest",
"accessMyChest": "Access my chest", "accessMyChest": "Access my chest",
"manageMembership": "Manage my membership", "manageMembership": "Manage my membership",
"chooseThisWallet": "Elegir esta billetera", "chooseThisWallet": "Choose this wallet",
"thisWalletIsDefault": "This wallet is the default one", "thisWalletIsDefault": "This wallet is the default one",
"defineWalletAsDefault": "Define this as the default one", "defineWalletAsDefault": "Define this as the default one",
"displayActivity": "Display activity", "displayActivity": "Display activity",
"displayNActivity": "Display\nactivity", "displayNActivity": "Display\nactivity",
"memberValidated": "Miembro validado!", "memberValidated": "Validated member!",
"copyAddress": "Copiar\ndirección", "copyAddress": "Copy\naddress",
"copy": "Copiar", "copy": "Copy",
"thisAddressHasBeenCopiedToClipboard": "Esta dirección se ha copiado al cortapapeles", "thisAddressHasBeenCopiedToClipboard": "This address has been copied to clipboard",
"chooseWalletName": "Choose a new name\nfor your wallet:", "chooseWalletName": "Choose a new name\nfor your wallet:",
"choosePassword": "Choose a random password:", "choosePassword": "Choose a random password:",
"chooseDerivation": "Choose a derivation:", "chooseDerivation": "Choose a derivation:",
"validate": "Validar", "validate": "Validate",
"confirm": "Confirmar", "confirm": "Confirm",
"confirmPayment": "Confirmar pago", "confirmPayment": "Confirm payment",
"geckoGenerateYourWalletFromMnemonic": "Ğecko builds your wallet from a **restoration sentence**. It is a bit like the blueprint that builds your wallet.", "geckoGenerateYourWalletFromMnemonic": "Ğecko builds your wallet from a **restoration sentence**. It is a bit like the blueprint that builds your wallet.",
"keepThisMnemonicSecure": "Keep this sentence carefully, because without it Ğecko will not be able to rebuild your wallets the day you change your phone.", "keepThisMnemonicSecure": "Keep this sentence carefully, because without it Ğecko will not be able to rebuild your wallets the day you change your phone.",
"geckoGeneratedYourMnemonicKeepItSecret": "Ğecko generated your mnemonic successfully! Keep it secret, because anyone who knows it can access all your wallets.", "geckoGeneratedYourMnemonicKeepItSecret": "Ğecko generated your mnemonic successfully! Keep it secret, because anyone who knows it can access all your wallets.",
@ -63,7 +63,7 @@
"myPassword": "My password", "myPassword": "My password",
"thisPasswordProtectsYourWalletsInASecureChest": "This secret code protects your wallets in a safe **which only you have the code for**, so that your wallets cannot be used by others.", "thisPasswordProtectsYourWalletsInASecureChest": "This secret code protects your wallets in a safe **which only you have the code for**, so that your wallets cannot be used by others.",
"hereIsThePasswordKeepIt": "And here is your password!\n\nMemorize it or write it down, because you will be asked **every time** you want to make a payment on this device.", "hereIsThePasswordKeepIt": "And here is your password!\n\nMemorize it or write it down, because you will be asked **every time** you want to make a payment on this device.",
"chooseAnotherPassword": "Elige otra contraseña", "chooseAnotherPassword": "Choose an other password",
"iNotedMyPassword": "I noted my password", "iNotedMyPassword": "I noted my password",
"geckoWillCheckPassword": "Gecko will check with you if you have remembered your secret code.\n\n Type your secret code in the field below to check that you have written it down correctly.", "geckoWillCheckPassword": "Gecko will check with you if you have remembered your secret code.\n\n Type your secret code in the field below to check that you have written it down correctly.",
"yourChestAndWalletWereCreatedSuccessfully": "Super!\n\nYour chest and your first portfolio have been created with great success.\n\nCongratulations!", "yourChestAndWalletWereCreatedSuccessfully": "Super!\n\nYour chest and your first portfolio have been created with great success.\n\nCongratulations!",
@ -72,7 +72,7 @@
"areYouSureForgetAllChests": "Are you sure you want to forget all your chests?", "areYouSureForgetAllChests": "Are you sure you want to forget all your chests?",
"areYouSureToForgetWallet": "Are you sure you wan to forget the wallet \"{}\"?", "areYouSureToForgetWallet": "Are you sure you wan to forget the wallet \"{}\"?",
"areYouSureYouWantToCertify": "Are you sure you want to certify the address:\n\n{}", "areYouSureYouWantToCertify": "Are you sure you want to certify the address:\n\n{}",
"yes": "Si", "yes": "Yes",
"no": "No", "no": "No",
"keepYourMnemonicSecret": "Try to keep this phrase a secret, as it allows anyone who knows it to access all your wallets.", "keepYourMnemonicSecret": "Try to keep this phrase a secret, as it allows anyone who knows it to access all your wallets.",
"iGeneratedYourMnemonicKeepItSecret": "I've generated your restoration phrase!\n Try to keep it a secret, as it allows anyone who knows it to access all your portfolios.", "iGeneratedYourMnemonicKeepItSecret": "I've generated your restoration phrase!\n Try to keep it a secret, as it allows anyone who knows it to access all your portfolios.",
@ -82,96 +82,96 @@
"pasteFromClipboard": "Paste from\nclipboard", "pasteFromClipboard": "Paste from\nclipboard",
"restoreAChest": "Restore a chest", "restoreAChest": "Restore a chest",
"restoreThisChest": "Restore this chest", "restoreThisChest": "Restore this chest",
"continue": "Continuar", "continue": "Continue",
"itsTheGoodWord": "It's the good word!", "itsTheGoodWord": "It's the good word!",
"nthMnemonicWord": "word of your mnemonic", "nthMnemonicWord": "word of your mnemonic",
"1th": "Primera", "1th": "First",
"2th": "Segunda", "2th": "Second",
"3th": "Tercera", "3th": "Third",
"4th": "Cuarta", "4th": "Fourth",
"5th": "Quinta", "5th": "Fifth",
"6th": "Sexta", "6th": "Sixth",
"7th": "Séptima", "7th": "Seventh",
"8th": "Octava", "8th": "Eighth",
"9th": "Novena", "9th": "Ninth",
"10th": "Décima", "10th": "Tenth",
"11th": "Undécima", "11th": "Eleventh",
"12th": "Duodécima", "12th": "Twelfth",
"yourPasswordLengthIsX": "La longitud de tu contraseña es {}", "yourPasswordLengthIsX": "Your password length is {}",
"noIdentity": "No identity", "noIdentity": "No identity",
"identityCreated": "Identidad creada", "identityCreated": "Identity created",
"identityConfirmed": "Identidad confirmada", "identityConfirmed": "Identity confirmed",
"identityExpired": "Identitdad caducada", "identityExpired": "Identity expired",
"confirmYourIdentity": "Confirma tu identidad", "confirmYourIdentity": "Confirm your identity",
"noDuniterNodeAvailableTryLater": "No Duniter node available, please try again later", "noDuniterNodeAvailableTryLater": "No Duniter node available, please try again later",
"youAreConnectedToNode": "You are connected to node", "youAreConnectedToNode": "You are connected to node",
"accountActivity": "Actividad de la cuenta", "accountActivity": "Account activity",
"noNetworkNoHistory": "Network state does not allow\nto display account history", "noNetworkNoHistory": "Network state does not allow\nto display account history",
"noDataToDisplay": "No data to be displayed.", "noDataToDisplay": "No data to be displayed.",
"noTransactionToDisplay": "No transaction to display", "noTransactionToDisplay": "No transaction to display",
"month1": "Enero", "month1": "January",
"month2": "Febrero", "month2": "February",
"month3": "Marzo", "month3": "March",
"month4": "Abril", "month4": "April",
"month5": "Mayo", "month5": "May",
"month6": "Junio", "month6": "June",
"month7": "Julio", "month7": "July",
"month8": "Agosto", "month8": "August",
"month9": "Septiembre", "month9": "September",
"month10": "Octubre", "month10": "October",
"month11": "Noviembre", "month11": "November",
"month12": "Diciembre", "month12": "December",
"today": "Hoy", "today": "Today",
"yesterday": "Ayer", "yesterday": "Yesterday",
"thisWeek": "Esta semana", "thisWeek": "This week",
"chestNotCompatibleMustReinstallGecko": "The version of your safes is no longer compatible with this version of Ğecko.\nAll your safes will be forgotten, you must import them again.", "chestNotCompatibleMustReinstallGecko": "The version of your safes is no longer compatible with this version of Ğecko.\nAll your safes will be forgotten, you must import them again.",
"notConnectedToInternet": "No estas conectado a internet", "notConnectedToInternet": "You are note connected to internet",
"researchResults": "Results of your research", "researchResults": "Results of your research",
"resultsFor": "Results for ", "resultsFor": "Results for ",
"forgetAllMyChests": "Forget all my chests", "forgetAllMyChests": "Forget all my chests",
"transaction": "Transaccion", "transaction": "Transaction",
"certification": "Certificacion", "certification": "Certification",
"identityConfirm": "Identity confirmation", "identityConfirm": "Identity confirmation",
"revokeAdhesion": "Adhesion revocation", "revokeAdhesion": "Adhesion revocation",
"strangeTransaction": "Strange transaction", "strangeTransaction": "Strange transaction",
"sending": "Enviando...", "sending": "Sending...",
"propagating": "Propagando...", "propagating": "Propagating...",
"validating": "Validando...", "validating": "Validating...",
"anErrorOccurred": "Ocurrió un error", "anErrorOccured": "An error occured",
"24hbetweenCerts": "You have to wait 24h between certs", "24hbetweenCerts": "You have to wait 24h between certs",
"canNotCertifySelf": "You can not certify yourself", "canNotCertifySelf": "You can not certify yourself",
"nameAlreadyExist": "This name is already taken", "nameAlreadyExist": "This name is already taken",
"2GDtoKeepAlive": "You have to keep at least 2ĞD to keep your account alive", "2GDtoKeepAlive": "You have to keep at least 2ĞD to keep your account alive",
"youHaveToFeedThisAccountBeforeUsing": "You have to feed this account\nbefore using it.", "youHaveToFeedThisAccountBeforeUsing": "You have to feed this account\nbefore using it.",
"execTimeoutOver": "Execution timeout is over", "execTimeoutOver": "Execution timeout is over",
"seeAWallet": "Ver una billetera", "seeAWallet": "See a wallet",
"mustWaitXBeforeCertify": "Tienes que esperar\n{} antes de\nvolver a certificar", "mustWaitXBeforeCertify": "You have to wait\n{} before\ncertifying again",
"mustConfirmHisIdentity": "This person must confirm\nhis identity before can be\ncertified", "mustConfirmHisIdentity": "This person must confirm\nhis identity before can be\ncertified",
"canRenewCertInX": "You can renew\nthis certification\nin {}", "canRenewCertInX": "You can renew\nthis certification\nin {}",
"executeATransfer": "Execute a transfer", "executeATransfer": "Execute a transfer",
"executeTheTransfer": "Execute the transfer", "executeTheTransfer": "Execute the transfer",
"doATransfer" : "Execute a\ntransfer", "doATransfer" : "Execute a\ntransfer",
"seconds": "{} segundos", "seconds": "{} seconds",
"minutes": "{} minutos", "minutes": "{} minutes",
"hours": "{} horas {}", "hours": "{} hours {}",
"days": "{} dias", "days": "{} days",
"months": "{} meses", "months": "{} months",
"certify": "Certify", "certify": "Certify",
"from": "De:", "from": "From:",
"to": "A:", "to": "To:",
"amount": "Importe:", "amount": "Amount:",
"choiceOfSourceWallet": "Choose a source wallet", "choiceOfSourceWallet": "Choose a source wallet",
"extrinsicInProgress": "{} en progreso", "extrinsicInProgress": "{} in progress",
"extrinsicValidated": "{} validado !", "extrinsicValidated": "{} validated !",
"fromMinus": "de", "fromMinus": "from",
"toMinus": "a", "toMinus": "to",
"deleteThisWallet": "Delete this wallet", "deleteThisWallet": "Delete this wallet",
"cancel": "Cancelar", "cancel": "Cancel",
"inBlockchainResult": "In {} blockchain", "inBlockchainResult": "In {} blockchain",
"search": "Buscar", "search": "Search",
"currencyNode": "{} nodo :", "currencyNode": "{} node :",
"contactsManagementWithNbr": "Mis contactos ({})", "contactsManagementWithNbr": "My contacts ({})",
"contactsManagement": "Mis contactos", "contactsManagement": "My contacts",
"noContacts": "You don't have any contact", "noContacts": "You don't have any contact",
"addContact": "Add\nto contacts", "addContact": "Add\nto contacts",
"removeContact": "Remove\nthis contact", "removeContact": "Remove\nthis contact",
@ -183,17 +183,17 @@
"thisAccountIsEmpty": "This account is empty", "thisAccountIsEmpty": "This account is empty",
"youCannotMigrateIdentityToExistingIdentity": "You cannot migrate an identity\nto an account that already has an identity", "youCannotMigrateIdentityToExistingIdentity": "You cannot migrate an identity\nto an account that already has an identity",
"importOldAccount": "Import your old account", "importOldAccount": "Import your old account",
"enterCesiumId": "Ingrese su ID de Cesium", "enterCesiumId": "Enter your Cesium ID",
"enterCesiumPassword": "Ingrese su contraseña de Cesium", "enterCesiumPassword": "Enter your Cesium password",
"migrateAccount": "Migrate account", "migrateAccount": "Migrate account",
"migrateIdentity": "Migrate identity", "migrateIdentity": "Migrate identity",
"identityMigration": "Identity migration", "identityMigration": "Identity migration",
"areYouSureMigrateIdentity": "Are you sure you want to permanently migrate identity **{}** with balance of **{}** ?", "areYouSureMigrateIdentity": "Are you sure you want to permanently migrate identity **{}** with balance of **{}** ?",
"someoneCreatedYourIdentity": "Someone created your {} identity !", "someoneCreatedYourIdentity": "Someone created your {} identity !",
"confirmMyIdentity": "Confirmar mi identidad", "confirmMyIdentity": "Confirm my identity",
"revokeMyIdentity": "Revocar mi identidad", "revokeMyIdentity": "Revoke my identity",
"youCannotRevokeThisIdentity": "You cannot revoke this identity while\nit is member of the blacksmiths web", "youCannotRevokeThisIdentity": "You cannot revoke this identity while\nit is member of the blacksmiths web",
"showUdAmounts": "Show amounts in UD", "showUdAmounts": "Show amounts in UD",
"ud": "{}UD", "ud": "{}UD",
"chooseATargetWallet": "Elija una billetera de destino" "chooseATargetWallet": "Choose a target wallet"
} }

View File

@ -138,7 +138,7 @@
"sending": "Envoi en cours...", "sending": "Envoi en cours...",
"propagating": "En cours de propagation...", "propagating": "En cours de propagation...",
"validating": "En cours de validation...", "validating": "En cours de validation...",
"anErrorOccurred": "Une erreur s'est produite", "anErrorOccured": "Une erreur s'est produite",
"24hbetweenCerts": "Vous devez attendre 24h entre chaque certification", "24hbetweenCerts": "Vous devez attendre 24h entre chaque certification",
"canNotCertifySelf": "Vous ne pouvez pas vous certifier\nvous même ...", "canNotCertifySelf": "Vous ne pouvez pas vous certifier\nvous même ...",
"nameAlreadyExist": "Ce nom est déjà pris", "nameAlreadyExist": "Ce nom est déjà pris",

View File

@ -1,4 +1,3 @@
[ [
"wss://gdev.p2p.legal/ws",
"wss://gdev.librelois.fr/ws" "wss://gdev.librelois.fr/ws"
] ]

View File

@ -1,5 +1,4 @@
[ [
"https://gdev-indexer.p2p.legal",
"https://idx.gdev.cgeek.fr", "https://idx.gdev.cgeek.fr",
"https://duniter-indexer.coinduf.eu", "https://duniter-indexer.coinduf.eu",
"http://192.168.1.72:8080" "http://192.168.1.72:8080"

View File

@ -1,10 +1,9 @@
const String getNameByAddressQ = r''' const String getNameByAddressQ = r'''
query ($address: String!) { query ($address: String!) {
account_by_pk(pubkey: $address) { account_by_pk(id: $address) {
identity { identity {
name name
} }
pubkey
} }
} }
'''; ''';
@ -12,7 +11,7 @@ query ($address: String!) {
const String searchAddressByNameQ = r''' const String searchAddressByNameQ = r'''
query ($name: String!) { query ($name: String!) {
search_identity(args: {name: $name}) { search_identity(args: {name: $name}) {
pubkey id
name name
} }
} }
@ -22,8 +21,8 @@ const String getHistoryByAddressQ = r'''
query ($address: String!, $number: Int!, $cursor: String) { query ($address: String!, $number: Int!, $cursor: String) {
transaction_connection(where: transaction_connection(where:
{_or: [ {_or: [
{issuer_pubkey: {_eq: $address}}, {issuer_id: {_eq: $address}},
{receiver_pubkey: {_eq: $address}} {receiver_id: {_eq: $address}}
]}, ]},
order_by: {created_at: desc}, order_by: {created_at: desc},
first: $number, first: $number,
@ -32,8 +31,8 @@ query ($address: String!, $number: Int!, $cursor: String) {
node { node {
amount amount
created_at created_at
issuer_pubkey issuer_id
receiver_pubkey receiver_id
issuer { issuer {
identity { identity {
name name

View File

@ -14,6 +14,7 @@ import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallet_options.dart';
import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/providers/wallets_profiles.dart';
import 'package:gecko/screens/wallet_view.dart'; import 'package:gecko/screens/wallet_view.dart';
import 'package:gecko/widgets/wallet_name.dart';
import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:graphql_flutter/graphql_flutter.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:truncate/truncate.dart'; import 'package:truncate/truncate.dart';
@ -169,7 +170,8 @@ class DuniterIndexer with ChangeNotifier {
return const SizedBox(); return const SizedBox();
} else { } else {
if (canEdit) { if (canEdit) {
return walletOptions.walletName(context, wallet, size, color); return WalletName(
context: context, wallet: wallet, size: size, color: color);
} else { } else {
return walletOptions.walletNameController(context, wallet, size); return walletOptions.walletNameController(context, wallet, size);
} }
@ -221,7 +223,11 @@ class DuniterIndexer with ChangeNotifier {
return const SizedBox(); return const SizedBox();
} else { } else {
if (canEdit) { if (canEdit) {
return walletOptions.walletName(context, wallet, size, color); return WalletName(
context: context,
wallet: wallet,
size: size,
color: color);
} else { } else {
return walletOptions.walletNameController( return walletOptions.walletNameController(
context, wallet, size); context, wallet, size);
@ -301,12 +307,12 @@ class DuniterIndexer with ChangeNotifier {
Padding( Padding(
padding: const EdgeInsets.symmetric(horizontal: 5), padding: const EdgeInsets.symmetric(horizontal: 5),
child: ListTile( child: ListTile(
key: keySearchResult(profile['pubkey']), key: keySearchResult(profile['id']),
horizontalTitleGap: 40, horizontalTitleGap: 40,
contentPadding: const EdgeInsets.all(5), contentPadding: const EdgeInsets.all(5),
leading: cesiumPlusProvider.defaultAvatar(avatarSize), leading: cesiumPlusProvider.defaultAvatar(avatarSize),
title: Row(children: <Widget>[ title: Row(children: <Widget>[
Text(getShortPubkey(profile['pubkey']), Text(getShortPubkey(profile['id']),
style: const TextStyle( style: const TextStyle(
fontSize: 18, fontSize: 18,
fontFamily: 'Monospace', fontFamily: 'Monospace',
@ -321,7 +327,7 @@ class DuniterIndexer with ChangeNotifier {
Column( Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
balance(context, profile['pubkey'], 16), balance(context, profile['id'], 16),
]), ]),
]), ]),
), ),
@ -337,15 +343,14 @@ class DuniterIndexer with ChangeNotifier {
Navigator.push( Navigator.push(
context, context,
MaterialPageRoute(builder: (context) { MaterialPageRoute(builder: (context) {
walletsProfiles.address = profile['pubkey']; walletsProfiles.address = profile['id'];
return WalletViewScreen( return WalletViewScreen(
address: profile['pubkey'], address: profile['id'],
username: g1WalletsBox username: g1WalletsBox
.get(profile['pubkey']) .get(profile['id'])
?.id ?.id
?.username, ?.username,
avatar: avatar: g1WalletsBox.get(profile['id'])?.avatar,
g1WalletsBox.get(profile['pubkey'])?.avatar,
); );
}), }),
); );
@ -364,7 +369,7 @@ class DuniterIndexer with ChangeNotifier {
for (final trans in blockchainTX) { for (final trans in blockchainTX) {
final transaction = trans['node']; final transaction = trans['node'];
final direction = final direction =
transaction['issuer_pubkey'] != pubkey ? 'RECEIVED' : 'SENT'; transaction['issuer_id'] != pubkey ? 'RECEIVED' : 'SENT';
transBC.add(i); transBC.add(i);
transBC[i] = []; transBC[i] = [];
@ -372,10 +377,10 @@ class DuniterIndexer with ChangeNotifier {
final int amountBrut = transaction['amount']; final int amountBrut = transaction['amount'];
final double amount = removeDecimalZero(amountBrut / 100); final double amount = removeDecimalZero(amountBrut / 100);
if (direction == "RECEIVED") { if (direction == "RECEIVED") {
transBC[i].add(transaction['issuer_pubkey']); transBC[i].add(transaction['issuer_id']);
transBC[i].add(transaction['issuer']['identity']?['name'] ?? ''); transBC[i].add(transaction['issuer']['identity']?['name'] ?? '');
} else if (direction == "SENT") { } else if (direction == "SENT") {
transBC[i].add(transaction['receiver_pubkey']); transBC[i].add(transaction['receiver_id']);
transBC[i].add(transaction['receiver']['identity']?['name'] ?? ''); transBC[i].add(transaction['receiver']['identity']?['name'] ?? '');
} }
transBC[i].add(amount); transBC[i].add(amount);

View File

@ -10,15 +10,8 @@ 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/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/substrate_sdk.dart';
import 'package:gecko/providers/wallet_options.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/myWallets/wallets_home.dart';
import 'package:gecko/screens/search.dart';
import 'package:hive_flutter/hive_flutter.dart'; import 'package:hive_flutter/hive_flutter.dart';
import 'package:flutter/foundation.dart' show kDebugMode, kIsWeb; import 'package:flutter/foundation.dart' show kDebugMode, kIsWeb;
import 'package:path_provider/path_provider.dart' as pp; import 'package:path_provider/path_provider.dart' as pp;
@ -132,104 +125,6 @@ class HomeProvider with ChangeNotifier {
// volume: volume, mode: PlayerMode.LOW_LATENCY, stayAwake: false); // volume: volume, mode: PlayerMode.LOW_LATENCY, stayAwake: false);
// } // }
Widget bottomAppBar(BuildContext context) {
MyWalletsProvider myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false);
WalletsProfilesProvider historyProvider =
Provider.of<WalletsProfilesProvider>(context, listen: false);
final size = MediaQuery.of(context).size;
const bool showBottomBar = true;
return Visibility(
visible: showBottomBar,
child: Container(
color: yellowC,
width: size.width,
height: 80,
child:
// Stack(
// children: [
// // CustomPaint(
// // size: Size(size.width, 110),
// // painter: CustomRoundedButton(),
// // ),
Row(mainAxisAlignment: MainAxisAlignment.start, children: [
// SizedBox(width: 0),
const Spacer(),
const SizedBox(width: 11),
IconButton(
key: keyAppBarSearch,
iconSize: 40,
icon: const Image(image: AssetImage('assets/loupe-noire.png')),
onPressed: () {
Navigator.popUntil(
context,
ModalRoute.withName('/'),
);
Navigator.push(
context,
MaterialPageRoute(builder: (homeContext) {
return const SearchScreen();
}),
);
},
),
const SizedBox(width: 22),
const Spacer(),
IconButton(
key: keyAppBarQrcode,
iconSize: 70,
icon: const Image(image: AssetImage('assets/qrcode-scan.png')),
onPressed: () async {
Navigator.popUntil(
context,
ModalRoute.withName('/'),
);
historyProvider.scan(homeContext);
},
),
const Spacer(),
const SizedBox(width: 15),
IconButton(
key: keyAppBarChest,
iconSize: 60,
icon: const Image(image: AssetImage('assets/wallet.png')),
onPressed: () async {
WalletData? defaultWallet = myWalletProvider.getDefaultWallet();
String? pin;
if (myWalletProvider.pinCode == '') {
pin = await Navigator.push(
context,
MaterialPageRoute(
builder: (homeContext) {
return UnlockingWallet(wallet: defaultWallet);
},
),
);
}
if (pin != null || myWalletProvider.pinCode != '') {
Navigator.popUntil(
context,
ModalRoute.withName('/'),
);
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return const WalletsHome();
}),
);
}
},
),
const Spacer(),
]),
),
);
}
void reload() { void reload() {
notifyListeners(); notifyListeners();
} }

View File

@ -18,7 +18,6 @@ import 'package:gecko/screens/transaction_in_progress.dart';
import 'package:image_picker/image_picker.dart'; import 'package:image_picker/image_picker.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:image_cropper/image_cropper.dart'; import 'package:image_cropper/image_cropper.dart';
import 'package:truncate/truncate.dart';
class WalletOptionsProvider with ChangeNotifier { class WalletOptionsProvider with ChangeNotifier {
TextEditingController address = TextEditingController(); TextEditingController address = TextEditingController();
@ -504,26 +503,6 @@ class WalletOptionsProvider with ChangeNotifier {
]), ]),
); );
} }
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: <Widget>[
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,
),
]);
}
} }
Map<String, double> balanceCache = {}; Map<String, double> balanceCache = {};

View File

@ -1,20 +1,13 @@
import 'dart:io'; 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: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/substrate_sdk.dart';
import 'package:gecko/providers/wallet_options.dart';
import 'package:gecko/screens/common_elements.dart';
import 'package:gecko/screens/wallet_view.dart'; import 'package:gecko/screens/wallet_view.dart';
import 'package:jdenticon_dart/jdenticon_dart.dart'; import 'package:jdenticon_dart/jdenticon_dart.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
// import 'package:qrscan/qrscan.dart' as scanner; // import 'package:qrscan/qrscan.dart' as scanner;
import 'package:barcode_scan2/barcode_scan2.dart'; import 'package:barcode_scan2/barcode_scan2.dart';
import 'package:provider/provider.dart';
class WalletsProfilesProvider with ChangeNotifier { class WalletsProfilesProvider with ChangeNotifier {
WalletsProfilesProvider(this.address); WalletsProfilesProvider(this.address);
@ -129,102 +122,6 @@ class WalletsProfilesProvider with ChangeNotifier {
return _balance; return _balance;
} }
Widget headerProfileView(
BuildContext context, String address, String? username) {
const double avatarSize = 140;
WalletOptionsProvider walletOptions =
Provider.of<WalletOptionsProvider>(context, listen: false);
CesiumPlusProvider cesiumPlusProvider =
Provider.of<CesiumPlusProvider>(context, listen: false);
// SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
return Stack(children: <Widget>[
Consumer<SubstrateSdk>(builder: (context, sub, _) {
bool isAccountExist = balanceCache[address] != 0;
return Container(
height: 180,
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
isAccountExist ? yellowC : Colors.grey[400]!,
isAccountExist ? const Color(0xFFE7811A) : Colors.grey[600]!,
],
),
));
}),
Padding(
padding: const EdgeInsets.only(left: 30, right: 40),
child: Row(children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
height: 10,
color: yellowC, // Colors.grey[400],
),
Row(children: [
GestureDetector(
key: keyCopyAddress,
onTap: () {
Clipboard.setData(ClipboardData(text: address));
snackCopyKey(context);
},
child: Text(
getShortPubkey(address),
style: const TextStyle(
fontSize: 30,
fontWeight: FontWeight.w800,
),
),
),
]),
const SizedBox(height: 25),
balance(context, address, 22),
const SizedBox(height: 10),
walletOptions.idtyStatus(context, address,
isOwner: false, color: Colors.black),
getCerts(context, address, 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: <Widget>[
ClipOval(
child: cesiumPlusProvider.defaultAvatar(avatarSize),
),
const SizedBox(height: 25),
]),
]),
),
CommonElements().offlineInfo(context),
]);
}
bool isContact(String address) { bool isContact(String address) {
return contactsBox.containsKey(address); return contactsBox.containsKey(address);
} }

View File

@ -7,11 +7,11 @@ import 'package:gecko/models/queries_indexer.dart';
import 'package:gecko/models/widgets_keys.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/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/providers/wallets_profiles.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:gecko/screens/wallet_view.dart'; import 'package:gecko/screens/wallet_view.dart';
import 'package:gecko/widgets/bottom_app_bar.dart';
import 'package:gecko/widgets/header_profile_view.dart';
import 'package:graphql_flutter/graphql_flutter.dart'; import 'package:graphql_flutter/graphql_flutter.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -32,10 +32,6 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
WalletsProfilesProvider walletProfile =
Provider.of<WalletsProfilesProvider>(context, listen: false);
HomeProvider homeProvider =
Provider.of<HomeProvider>(context, listen: false);
return Scaffold( return Scaffold(
key: _scaffoldKey, key: _scaffoldKey,
@ -47,9 +43,10 @@ class ActivityScreen extends StatelessWidget with ChangeNotifier {
child: Text('accountActivity'.tr()), child: Text('accountActivity'.tr()),
), ),
), ),
bottomNavigationBar: homeProvider.bottomAppBar(context), bottomNavigationBar: BottomAppBarCustom(context: context),
body: Column(children: <Widget>[ body: Column(children: <Widget>[
walletProfile.headerProfileView(context, address, username), HeaderProfileView(
context: context, address: address, username: username),
historyQuery(context), historyQuery(context),
])); ]));
} }

View File

@ -8,7 +8,6 @@ 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/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/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';
@ -16,6 +15,7 @@ import 'package:gecko/screens/myWallets/change_pin.dart';
import 'package:gecko/screens/myWallets/custom_derivations.dart'; import 'package:gecko/screens/myWallets/custom_derivations.dart';
import 'package:gecko/screens/myWallets/show_seed.dart'; import 'package:gecko/screens/myWallets/show_seed.dart';
import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
import 'package:gecko/widgets/bottom_app_bar.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class ChestOptions extends StatelessWidget { class ChestOptions extends StatelessWidget {
@ -28,8 +28,6 @@ class ChestOptions extends StatelessWidget {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
ChestProvider chestProvider = ChestProvider chestProvider =
Provider.of<ChestProvider>(context, listen: false); Provider.of<ChestProvider>(context, listen: false);
HomeProvider homeProvider =
Provider.of<HomeProvider>(context, listen: false);
ChestData currentChest = chestBox.get(configBox.get('currentChest'))!; ChestData currentChest = chestBox.get(configBox.get('currentChest'))!;
@ -52,7 +50,7 @@ class ChestOptions extends StatelessWidget {
height: 22, height: 22,
child: Text(currentChest.name!), child: Text(currentChest.name!),
)), )),
bottomNavigationBar: homeProvider.bottomAppBar(context), bottomNavigationBar: BottomAppBarCustom(context: context),
body: Stack(children: [ body: Stack(children: [
Builder( Builder(
builder: (ctx) => SafeArea( builder: (ctx) => SafeArea(

View File

@ -5,7 +5,6 @@ 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/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/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:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
@ -15,6 +14,7 @@ import 'package:gecko/screens/common_elements.dart';
import 'package:gecko/screens/activity.dart'; import 'package:gecko/screens/activity.dart';
import 'package:gecko/screens/myWallets/manage_membership.dart'; import 'package:gecko/screens/myWallets/manage_membership.dart';
import 'package:gecko/screens/qrcode_fullscreen.dart'; import 'package:gecko/screens/qrcode_fullscreen.dart';
import 'package:gecko/widgets/bottom_app_bar.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:qr_flutter/qr_flutter.dart'; import 'package:qr_flutter/qr_flutter.dart';
@ -33,8 +33,6 @@ class WalletOptions extends StatelessWidget {
Provider.of<WalletsProfilesProvider>(context, listen: false); Provider.of<WalletsProfilesProvider>(context, listen: false);
MyWalletsProvider myWalletProvider = MyWalletsProvider myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false); Provider.of<MyWalletsProvider>(context, listen: false);
HomeProvider homeProvider =
Provider.of<HomeProvider>(context, listen: false);
DuniterIndexer duniterIndexer = DuniterIndexer duniterIndexer =
Provider.of<DuniterIndexer>(context, listen: false); Provider.of<DuniterIndexer>(context, listen: false);
@ -99,7 +97,7 @@ class WalletOptions extends StatelessWidget {
), ),
], ],
), ),
bottomNavigationBar: homeProvider.bottomAppBar(context), bottomNavigationBar: BottomAppBarCustom(context: context),
body: Stack(children: [ body: Stack(children: [
Builder( Builder(
builder: (ctx) => SafeArea( builder: (ctx) => SafeArea(

View File

@ -9,7 +9,6 @@ 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/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/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';
@ -22,6 +21,7 @@ import 'package:gecko/screens/myWallets/import_g1_v1.dart';
import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
import 'package:gecko/screens/myWallets/wallet_options.dart'; import 'package:gecko/screens/myWallets/wallet_options.dart';
import 'package:gecko/screens/wallet_view.dart'; import 'package:gecko/screens/wallet_view.dart';
import 'package:gecko/widgets/bottom_app_bar.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class WalletsHome extends StatelessWidget { class WalletsHome extends StatelessWidget {
@ -32,8 +32,6 @@ class WalletsHome extends StatelessWidget {
SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]); SystemChrome.setPreferredOrientations([DeviceOrientation.portraitUp]);
MyWalletsProvider myWalletProvider = MyWalletsProvider myWalletProvider =
Provider.of<MyWalletsProvider>(context); Provider.of<MyWalletsProvider>(context);
HomeProvider homeProvider =
Provider.of<HomeProvider>(context, listen: false);
final int currentChestNumber = myWalletProvider.getCurrentChest(); final int currentChestNumber = myWalletProvider.getCurrentChest();
final ChestData currentChest = chestBox.get(currentChestNumber)!; final ChestData currentChest = chestBox.get(currentChestNumber)!;
@ -66,7 +64,7 @@ class WalletsHome extends StatelessWidget {
backgroundColor: const Color(0xffFFD58D), backgroundColor: const Color(0xffFFD58D),
), ),
bottomNavigationBar: myWalletProvider.lastFlyBy == '' bottomNavigationBar: myWalletProvider.lastFlyBy == ''
? homeProvider.bottomAppBar(context) ? BottomAppBarCustom(context: context)
: dragInfo(context), : dragInfo(context),
body: SafeArea( body: SafeArea(
child: Stack(children: [ child: Stack(children: [

View File

@ -6,12 +6,12 @@ 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';
import 'package:gecko/providers/home.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';
import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/providers/wallets_profiles.dart';
import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/common_elements.dart';
import 'package:gecko/screens/wallet_view.dart'; import 'package:gecko/screens/wallet_view.dart';
import 'package:gecko/widgets/bottom_app_bar.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class ContactsScreen extends StatelessWidget { class ContactsScreen extends StatelessWidget {
@ -24,8 +24,6 @@ class ContactsScreen extends StatelessWidget {
Provider.of<CesiumPlusProvider>(context, listen: false); Provider.of<CesiumPlusProvider>(context, listen: false);
WalletsProfilesProvider walletsProfilesClass = WalletsProfilesProvider walletsProfilesClass =
Provider.of<WalletsProfilesProvider>(context, listen: true); Provider.of<WalletsProfilesProvider>(context, listen: true);
HomeProvider homeProvider =
Provider.of<HomeProvider>(context, listen: false);
DuniterIndexer duniterIndexer = DuniterIndexer duniterIndexer =
Provider.of<DuniterIndexer>(context, listen: false); Provider.of<DuniterIndexer>(context, listen: false);
@ -53,7 +51,7 @@ class ContactsScreen extends StatelessWidget {
'contactsManagementWithNbr'.tr(args: ['${myContacts.length}'])), 'contactsManagementWithNbr'.tr(args: ['${myContacts.length}'])),
), ),
), ),
bottomNavigationBar: homeProvider.bottomAppBar(context), bottomNavigationBar: BottomAppBarCustom(context: context),
body: SafeArea( body: SafeArea(
child: Stack(children: [ child: Stack(children: [
Padding( Padding(

View File

@ -6,13 +6,13 @@ 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';
import 'package:gecko/providers/home.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';
import 'package:gecko/providers/wallets_profiles.dart'; import 'package:gecko/providers/wallets_profiles.dart';
import 'package:gecko/providers/search.dart'; import 'package:gecko/providers/search.dart';
import 'package:gecko/screens/common_elements.dart'; import 'package:gecko/screens/common_elements.dart';
import 'package:gecko/screens/wallet_view.dart'; import 'package:gecko/screens/wallet_view.dart';
import 'package:gecko/widgets/bottom_app_bar.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
class SearchResultScreen extends StatelessWidget { class SearchResultScreen extends StatelessWidget {
@ -27,8 +27,6 @@ class SearchResultScreen extends StatelessWidget {
Provider.of<CesiumPlusProvider>(context, listen: false); Provider.of<CesiumPlusProvider>(context, listen: false);
WalletsProfilesProvider walletsProfilesClass = WalletsProfilesProvider walletsProfilesClass =
Provider.of<WalletsProfilesProvider>(context, listen: false); Provider.of<WalletsProfilesProvider>(context, listen: false);
HomeProvider homeProvider =
Provider.of<HomeProvider>(context, listen: false);
DuniterIndexer duniterIndexer = DuniterIndexer duniterIndexer =
Provider.of<DuniterIndexer>(context, listen: false); Provider.of<DuniterIndexer>(context, listen: false);
@ -44,7 +42,7 @@ class SearchResultScreen extends StatelessWidget {
child: Text('researchResults'.tr()), child: Text('researchResults'.tr()),
), ),
), ),
bottomNavigationBar: homeProvider.bottomAppBar(context), bottomNavigationBar: BottomAppBarCustom(context: context),
body: SafeArea( body: SafeArea(
child: Stack(children: [ child: Stack(children: [
Padding( Padding(

View File

@ -3,11 +3,11 @@ 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/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/my_wallets.dart'; import 'package:gecko/providers/my_wallets.dart';
import 'package:gecko/providers/settings_provider.dart'; import 'package:gecko/providers/settings_provider.dart';
import 'package:gecko/providers/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/globals.dart'; import 'package:gecko/globals.dart';
import 'package:gecko/widgets/choose_currency_unit.dart';
import 'package:polkawallet_sdk/api/types/networkParams.dart'; import 'package:polkawallet_sdk/api/types/networkParams.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
@ -48,7 +48,7 @@ class SettingsScreen extends StatelessWidget {
style: TextStyle(color: Colors.grey[500], fontSize: 22), style: TextStyle(color: Colors.grey[500], fontSize: 22),
), ),
const SizedBox(height: 20), const SizedBox(height: 20),
chooseCurrencyUnit(context), ChooseCurrencyUnit(context: context),
// SizedBox(height: isTall ? 80 : 120), // SizedBox(height: isTall ? 80 : 120),
const Spacer(), const Spacer(),
@ -79,36 +79,6 @@ class SettingsScreen extends StatelessWidget {
); );
} }
Widget chooseCurrencyUnit(BuildContext context) {
HomeProvider homeProvider =
Provider.of<HomeProvider>(context, listen: false);
return InkWell(
key: keyUdUnit,
onTap: () async {
await homeProvider.changeCurrencyUnit(context);
},
child: SizedBox(
height: 50,
child: Row(
children: [
const SizedBox(width: 12),
Text('showUdAmounts'.tr()),
const Spacer(),
Consumer<HomeProvider>(builder: (context, homeProvider, _) {
final bool isUdUnit = configBox.get('isUdUnit') ?? false;
return Icon(
isUdUnit ? Icons.check_box : Icons.check_box_outline_blank,
color: orangeC,
size: 32,
);
}),
const SizedBox(width: 30),
],
),
),
);
}
Widget duniterEndpointSelection(BuildContext context) { Widget duniterEndpointSelection(BuildContext context) {
SubstrateSdk sub = Provider.of<SubstrateSdk>(context, listen: false); SubstrateSdk sub = Provider.of<SubstrateSdk>(context, listen: false);
String? selectedDuniterEndpoint; String? selectedDuniterEndpoint;

View File

@ -103,7 +103,7 @@ class TransactionInProgress extends StatelessWidget {
'g1migration Bloc of last transaction: ${sub.blocNumber} --- $result'); 'g1migration Bloc of last transaction: ${sub.blocNumber} --- $result');
} else { } else {
isValid = false; isValid = false;
resultText = "${"anErrorOccurred".tr()}:\n"; resultText = "${"anErrorOccured".tr()}:\n";
final List exceptionSplit = result.split('Exception: '); final List exceptionSplit = result.split('Exception: ');
String exception; String exception;
if (exceptionSplit.length > 1) { if (exceptionSplit.length > 1) {

View File

@ -7,7 +7,6 @@ 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/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/substrate_sdk.dart'; import 'package:gecko/providers/substrate_sdk.dart';
import 'package:gecko/providers/wallet_options.dart'; import 'package:gecko/providers/wallet_options.dart';
import 'package:gecko/providers/my_wallets.dart'; import 'package:gecko/providers/my_wallets.dart';
@ -19,6 +18,8 @@ import 'package:gecko/screens/myWallets/choose_wallet.dart';
import 'package:gecko/screens/myWallets/unlocking_wallet.dart'; import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
import 'package:gecko/screens/qrcode_fullscreen.dart'; import 'package:gecko/screens/qrcode_fullscreen.dart';
import 'package:gecko/screens/transaction_in_progress.dart'; import 'package:gecko/screens/transaction_in_progress.dart';
import 'package:gecko/widgets/bottom_app_bar.dart';
import 'package:gecko/widgets/header_profile_view.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:qr_flutter/qr_flutter.dart'; import 'package:qr_flutter/qr_flutter.dart';
@ -41,8 +42,6 @@ class WalletViewScreen extends StatelessWidget {
Provider.of<CesiumPlusProvider>(context, listen: false); Provider.of<CesiumPlusProvider>(context, listen: false);
walletProfile.address = address; walletProfile.address = address;
SubstrateSdk sub = Provider.of<SubstrateSdk>(context, listen: false); SubstrateSdk sub = Provider.of<SubstrateSdk>(context, listen: false);
HomeProvider homeProvider =
Provider.of<HomeProvider>(context, listen: false);
MyWalletsProvider myWalletProvider = MyWalletsProvider myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false); Provider.of<MyWalletsProvider>(context, listen: false);
WalletData? defaultWallet = myWalletProvider.getDefaultWallet(); WalletData? defaultWallet = myWalletProvider.getDefaultWallet();
@ -104,10 +103,11 @@ class WalletViewScreen extends StatelessWidget {
child: Text('seeAWallet'.tr()), child: Text('seeAWallet'.tr()),
), ),
), ),
bottomNavigationBar: homeProvider.bottomAppBar(context), bottomNavigationBar: BottomAppBarCustom(context: context),
body: SafeArea( body: SafeArea(
child: Column(children: <Widget>[ child: Column(children: <Widget>[
walletProfile.headerProfileView(context, address, username), HeaderProfileView(
context: context, address: address, username: username),
SizedBox(height: isTall ? 10 : 0), SizedBox(height: isTall ? 10 : 0),
Row(mainAxisAlignment: MainAxisAlignment.spaceAround, children: [ Row(mainAxisAlignment: MainAxisAlignment.spaceAround, children: [
Column(children: <Widget>[ Column(children: <Widget>[

View File

@ -0,0 +1,120 @@
// ignore_for_file: use_build_context_synchronously
import 'package:flutter/material.dart';
import 'package:gecko/globals.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/wallets_profiles.dart';
import 'package:gecko/screens/myWallets/unlocking_wallet.dart';
import 'package:gecko/screens/myWallets/wallets_home.dart';
import 'package:gecko/screens/search.dart';
import 'package:provider/provider.dart';
class BottomAppBarCustom extends StatelessWidget {
const BottomAppBarCustom({
Key? key,
required this.context,
}) : super(key: key);
final BuildContext context;
@override
Widget build(BuildContext context) {
MyWalletsProvider myWalletProvider =
Provider.of<MyWalletsProvider>(context, listen: false);
WalletsProfilesProvider historyProvider =
Provider.of<WalletsProfilesProvider>(context, listen: false);
final size = MediaQuery.of(context).size;
const bool showBottomBar = true;
return Visibility(
visible: showBottomBar,
child: Container(
color: yellowC,
width: size.width,
height: 80,
child:
// Stack(
// children: [
// // CustomPaint(
// // size: Size(size.width, 110),
// // painter: CustomRoundedButton(),
// // ),
Row(mainAxisAlignment: MainAxisAlignment.start, children: [
// SizedBox(width: 0),
const Spacer(),
const SizedBox(width: 11),
IconButton(
key: keyAppBarSearch,
iconSize: 40,
icon: const Image(image: AssetImage('assets/loupe-noire.png')),
onPressed: () {
Navigator.popUntil(
context,
ModalRoute.withName('/'),
);
Navigator.push(
context,
MaterialPageRoute(builder: (homeContext) {
return const SearchScreen();
}),
);
},
),
const SizedBox(width: 22),
const Spacer(),
IconButton(
key: keyAppBarQrcode,
iconSize: 70,
icon: const Image(image: AssetImage('assets/qrcode-scan.png')),
onPressed: () async {
Navigator.popUntil(
context,
ModalRoute.withName('/'),
);
historyProvider.scan(homeContext);
},
),
const Spacer(),
const SizedBox(width: 15),
IconButton(
key: keyAppBarChest,
iconSize: 60,
icon: const Image(image: AssetImage('assets/wallet.png')),
onPressed: () async {
WalletData? defaultWallet = myWalletProvider.getDefaultWallet();
String? pin;
if (myWalletProvider.pinCode == '') {
pin = await Navigator.push(
context,
MaterialPageRoute(
builder: (homeContext) {
return UnlockingWallet(wallet: defaultWallet);
},
),
);
}
if (pin != null || myWalletProvider.pinCode != '') {
Navigator.popUntil(
context,
ModalRoute.withName('/'),
);
Navigator.push(
context,
MaterialPageRoute(builder: (context) {
return const WalletsHome();
}),
);
}
},
),
const Spacer(),
]),
),
);
}
}

View File

@ -0,0 +1,46 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/material.dart';
import 'package:gecko/globals.dart';
import 'package:gecko/models/widgets_keys.dart';
import 'package:gecko/providers/home.dart';
import 'package:provider/provider.dart';
class ChooseCurrencyUnit extends StatelessWidget {
const ChooseCurrencyUnit({
Key? key,
required this.context,
}) : super(key: key);
final BuildContext context;
@override
Widget build(BuildContext context) {
HomeProvider homeProvider =
Provider.of<HomeProvider>(context, listen: false);
return InkWell(
key: keyUdUnit,
onTap: () async {
await homeProvider.changeCurrencyUnit(context);
},
child: SizedBox(
height: 50,
child: Row(
children: [
const SizedBox(width: 12),
Text('showUdAmounts'.tr()),
const Spacer(),
Consumer<HomeProvider>(builder: (context, homeProvider, _) {
final bool isUdUnit = configBox.get('isUdUnit') ?? false;
return Icon(
isUdUnit ? Icons.check_box : Icons.check_box_outline_blank,
color: orangeC,
size: 32,
);
}),
const SizedBox(width: 30),
],
),
),
);
}
}

View File

@ -0,0 +1,119 @@
import 'package:flutter/material.dart';
import 'package:gecko/globals.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/common_elements.dart';
import 'package:provider/provider.dart';
import 'package:flutter/services.dart';
class HeaderProfileView extends StatelessWidget {
const HeaderProfileView({
Key? key,
required this.context,
required this.address,
required this.username,
}) : super(key: key);
final BuildContext context;
final String address;
final String? username;
@override
Widget build(BuildContext context) {
const double avatarSize = 140;
WalletOptionsProvider walletOptions =
Provider.of<WalletOptionsProvider>(context, listen: false);
CesiumPlusProvider cesiumPlusProvider =
Provider.of<CesiumPlusProvider>(context, listen: false);
// SubstrateSdk _sub = Provider.of<SubstrateSdk>(context, listen: false);
return Stack(children: <Widget>[
Consumer<SubstrateSdk>(builder: (context, sub, _) {
bool isAccountExist = balanceCache[address] != 0;
return Container(
height: 180,
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
isAccountExist ? yellowC : Colors.grey[400]!,
isAccountExist ? const Color(0xFFE7811A) : Colors.grey[600]!,
],
),
));
}),
Padding(
padding: const EdgeInsets.only(left: 30, right: 40),
child: Row(children: <Widget>[
Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
Container(
height: 10,
color: yellowC, // Colors.grey[400],
),
Row(children: [
GestureDetector(
key: keyCopyAddress,
onTap: () {
Clipboard.setData(ClipboardData(text: address));
snackCopyKey(context);
},
child: Text(
getShortPubkey(address),
style: const TextStyle(
fontSize: 30,
fontWeight: FontWeight.w800,
),
),
),
]),
const SizedBox(height: 25),
balance(context, address, 22),
const SizedBox(height: 10),
walletOptions.idtyStatus(context, address,
isOwner: false, color: Colors.black),
getCerts(context, address, 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: <Widget>[
ClipOval(
child: cesiumPlusProvider.defaultAvatar(avatarSize),
),
const SizedBox(height: 25),
]),
]),
),
CommonElements().offlineInfo(context),
]);
}
}

View File

@ -0,0 +1,39 @@
import 'package:gecko/globals.dart';
import 'package:flutter/material.dart';
import 'package:gecko/models/wallet_data.dart';
import 'package:truncate/truncate.dart';
class WalletName extends StatelessWidget {
const WalletName({
Key? key,
required this.context,
required this.wallet,
required this.size,
required this.color,
}) : super(key: key);
final BuildContext context;
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: <Widget>[
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,
),
]);
}
}

View File

@ -7,21 +7,21 @@ packages:
name: _fe_analyzer_shared name: _fe_analyzer_shared
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "50.0.0" version: "46.0.0"
analyzer: analyzer:
dependency: transitive dependency: transitive
description: description:
name: analyzer name: analyzer
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.2.0" version: "4.6.0"
analyzer_plugin: analyzer_plugin:
dependency: transitive dependency: transitive
description: description:
name: analyzer_plugin name: analyzer_plugin
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.11.2" version: "0.10.0"
ansicolor: ansicolor:
dependency: transitive dependency: transitive
description: description:
@ -105,14 +105,14 @@ packages:
name: build name: build
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.3.1" version: "2.3.0"
build_config: build_config:
dependency: transitive dependency: transitive
description: description:
name: build_config name: build_config
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.1" version: "1.1.0"
build_daemon: build_daemon:
dependency: transitive dependency: transitive
description: description:
@ -126,21 +126,21 @@ packages:
name: build_resolvers name: build_resolvers
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0" version: "2.0.9"
build_runner: build_runner:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: build_runner name: build_runner
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.3.2" version: "2.2.0"
build_runner_core: build_runner_core:
dependency: transitive dependency: transitive
description: description:
name: build_runner_core name: build_runner_core
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "7.2.7" version: "7.2.3"
built_collection: built_collection:
dependency: transitive dependency: transitive
description: description:
@ -154,7 +154,7 @@ packages:
name: built_value name: built_value
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "8.4.2" version: "8.4.1"
carousel_slider: carousel_slider:
dependency: "direct main" dependency: "direct main"
description: description:
@ -169,6 +169,13 @@ packages:
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.1" version: "1.2.1"
charcode:
dependency: transitive
description:
name: charcode
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
checked_yaml: checked_yaml:
dependency: transitive dependency: transitive
description: description:
@ -189,7 +196,7 @@ packages:
name: code_builder name: code_builder
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.3.0" version: "4.2.0"
collection: collection:
dependency: transitive dependency: transitive
description: description:
@ -203,7 +210,7 @@ packages:
name: connectivity_plus name: connectivity_plus
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.3.9" version: "2.3.6+1"
connectivity_plus_linux: connectivity_plus_linux:
dependency: transitive dependency: transitive
description: description:
@ -217,21 +224,21 @@ packages:
name: connectivity_plus_macos name: connectivity_plus_macos
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.6" version: "1.2.4"
connectivity_plus_platform_interface: connectivity_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: connectivity_plus_platform_interface name: connectivity_plus_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.3" version: "1.2.1"
connectivity_plus_web: connectivity_plus_web:
dependency: transitive dependency: transitive
description: description:
name: connectivity_plus_web name: connectivity_plus_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.2.5" version: "1.2.3"
connectivity_plus_windows: connectivity_plus_windows:
dependency: transitive dependency: transitive
description: description:
@ -245,14 +252,14 @@ packages:
name: convert name: convert
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.1.1" version: "3.0.2"
cross_file: cross_file:
dependency: transitive dependency: transitive
description: description:
name: cross_file name: cross_file
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.3.3+2" version: "0.3.3+1"
crypto: crypto:
dependency: transitive dependency: transitive
description: description:
@ -273,14 +280,14 @@ packages:
name: dart_code_metrics name: dart_code_metrics
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.0.1" version: "4.17.1"
dart_style: dart_style:
dependency: transitive dependency: transitive
description: description:
name: dart_style name: dart_style
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.2.4" version: "2.2.3"
dbus: dbus:
dependency: transitive dependency: transitive
description: description:
@ -414,7 +421,7 @@ packages:
name: flutter_markdown name: flutter_markdown
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.6.13" version: "0.6.10+5"
flutter_plugin_android_lifecycle: flutter_plugin_android_lifecycle:
dependency: transitive dependency: transitive
description: description:
@ -438,7 +445,7 @@ packages:
name: frontend_server_client name: frontend_server_client
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.2.0" version: "2.1.3"
fuchsia_remote_debug_protocol: fuchsia_remote_debug_protocol:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -471,56 +478,56 @@ packages:
name: gql name: gql
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.14.0" version: "0.13.1"
gql_dedupe_link: gql_dedupe_link:
dependency: transitive dependency: transitive
description: description:
name: gql_dedupe_link name: gql_dedupe_link
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.3+1" version: "2.0.2"
gql_error_link: gql_error_link:
dependency: transitive dependency: transitive
description: description:
name: gql_error_link name: gql_error_link
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.3+1" version: "0.2.2"
gql_exec: gql_exec:
dependency: transitive dependency: transitive
description: description:
name: gql_exec name: gql_exec
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.3" version: "0.4.0"
gql_http_link: gql_http_link:
dependency: transitive dependency: transitive
description: description:
name: gql_http_link name: gql_http_link
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.4.5" version: "0.4.2"
gql_link: gql_link:
dependency: transitive dependency: transitive
description: description:
name: gql_link name: gql_link
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.5.0+1" version: "0.4.2"
gql_transform_link: gql_transform_link:
dependency: transitive dependency: transitive
description: description:
name: gql_transform_link name: gql_transform_link
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.2.2+1" version: "0.2.2"
graphql: graphql:
dependency: transitive dependency: transitive
description: description:
name: graphql name: graphql
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.1.2-beta.5" version: "5.1.2-beta.4"
graphql_flutter: graphql_flutter:
dependency: "direct main" dependency: "direct main"
description: description:
@ -534,7 +541,7 @@ packages:
name: graphs name: graphs
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.2.0" version: "2.1.0"
hex: hex:
dependency: "direct main" dependency: "direct main"
description: description:
@ -562,7 +569,7 @@ packages:
name: html name: html
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.15.1" version: "0.15.0"
http: http:
dependency: transitive dependency: transitive
description: description:
@ -583,7 +590,7 @@ packages:
name: http_parser name: http_parser
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.0.2" version: "4.0.1"
http_server: http_server:
dependency: transitive dependency: transitive
description: description:
@ -597,42 +604,42 @@ packages:
name: icons_launcher name: icons_launcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.6" version: "2.0.5"
image: image:
dependency: transitive dependency: transitive
description: description:
name: image name: image
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.2.2" version: "3.2.0"
image_cropper: image_cropper:
dependency: "direct main" dependency: "direct main"
description: description:
name: image_cropper name: image_cropper
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.1" version: "3.0.0"
image_cropper_for_web: image_cropper_for_web:
dependency: transitive dependency: transitive
description: description:
name: image_cropper_for_web name: image_cropper_for_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.3" version: "1.0.2"
image_cropper_platform_interface: image_cropper_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: image_cropper_platform_interface name: image_cropper_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.3" version: "3.0.2"
image_picker: image_picker:
dependency: "direct main" dependency: "direct main"
description: description:
name: image_picker name: image_picker
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.8.6" version: "0.8.5+3"
image_picker_android: image_picker_android:
dependency: transitive dependency: transitive
description: description:
@ -646,21 +653,21 @@ packages:
name: image_picker_for_web name: image_picker_for_web
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.10" version: "2.1.8"
image_picker_ios: image_picker_ios:
dependency: transitive dependency: transitive
description: description:
name: image_picker_ios name: image_picker_ios
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.8.6+1" version: "0.8.6"
image_picker_platform_interface: image_picker_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: image_picker_platform_interface name: image_picker_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.6.2" version: "2.6.1"
integration_test: integration_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@ -721,14 +728,14 @@ packages:
name: json_annotation name: json_annotation
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "4.7.0" version: "4.6.0"
lints: lints:
dependency: transitive dependency: transitive
description: description:
name: lints name: lints
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.1" version: "2.0.0"
logger: logger:
dependency: "direct main" dependency: "direct main"
description: description:
@ -742,14 +749,14 @@ packages:
name: logging name: logging
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.1.0" version: "1.0.2"
markdown: markdown:
dependency: transitive dependency: transitive
description: description:
name: markdown name: markdown
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.1" version: "5.0.0"
matcher: matcher:
dependency: transitive dependency: transitive
description: description:
@ -784,7 +791,7 @@ packages:
name: mobx name: mobx
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.3" version: "2.0.7+5"
nested: nested:
dependency: transitive dependency: transitive
description: description:
@ -805,7 +812,7 @@ packages:
name: normalize name: normalize
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.7.2" version: "0.6.0+1"
package_config: package_config:
dependency: transitive dependency: transitive
description: description:
@ -819,14 +826,42 @@ packages:
name: package_info_plus name: package_info_plus
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.2" version: "1.4.3+1"
package_info_plus_linux:
dependency: transitive
description:
name: package_info_plus_linux
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.5"
package_info_plus_macos:
dependency: transitive
description:
name: package_info_plus_macos
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.0"
package_info_plus_platform_interface: package_info_plus_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: package_info_plus_platform_interface name: package_info_plus_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.1" version: "1.0.2"
package_info_plus_web:
dependency: transitive
description:
name: package_info_plus_web
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.5"
package_info_plus_windows:
dependency: transitive
description:
name: package_info_plus_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
path: path:
dependency: transitive dependency: transitive
description: description:
@ -854,7 +889,7 @@ packages:
name: path_provider_android name: path_provider_android
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.22" version: "2.0.20"
path_provider_ios: path_provider_ios:
dependency: transitive dependency: transitive
description: description:
@ -882,7 +917,7 @@ packages:
name: path_provider_platform_interface name: path_provider_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.5" version: "2.0.4"
path_provider_windows: path_provider_windows:
dependency: transitive dependency: transitive
description: description:
@ -903,49 +938,49 @@ packages:
name: pdf name: pdf
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.8.4" version: "3.8.3"
permission_handler: permission_handler:
dependency: "direct main" dependency: "direct main"
description: description:
name: permission_handler name: permission_handler
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "10.2.0" version: "10.0.0"
permission_handler_android: permission_handler_android:
dependency: transitive dependency: transitive
description: description:
name: permission_handler_android name: permission_handler_android
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "10.2.0" version: "10.0.0"
permission_handler_apple: permission_handler_apple:
dependency: transitive dependency: transitive
description: description:
name: permission_handler_apple name: permission_handler_apple
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "9.0.7" version: "9.0.4"
permission_handler_platform_interface: permission_handler_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: permission_handler_platform_interface name: permission_handler_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.9.0" version: "3.7.0"
permission_handler_windows: permission_handler_windows:
dependency: transitive dependency: transitive
description: description:
name: permission_handler_windows name: permission_handler_windows
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.1.2" version: "0.1.0"
petitparser: petitparser:
dependency: transitive dependency: transitive
description: description:
name: petitparser name: petitparser
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.1.0" version: "5.0.0"
pin_code_fields: pin_code_fields:
dependency: "direct main" dependency: "direct main"
description: description:
@ -973,7 +1008,7 @@ packages:
name: plugin_platform_interface name: plugin_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.3" version: "2.1.2"
pointycastle: pointycastle:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1024,21 +1059,14 @@ packages:
name: provider name: provider
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.0.4" version: "6.0.3"
pub_semver: pub_semver:
dependency: transitive dependency: transitive
description: description:
name: pub_semver name: pub_semver
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.3" version: "2.1.1"
pub_updater:
dependency: transitive
description:
name: pub_updater
url: "https://pub.dartlang.org"
source: hosted
version: "0.2.3"
pubspec_parse: pubspec_parse:
dependency: transitive dependency: transitive
description: description:
@ -1075,21 +1103,21 @@ packages:
name: rxdart name: rxdart
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "0.27.7" version: "0.27.5"
sentry: sentry:
dependency: transitive dependency: transitive
description: description:
name: sentry name: sentry
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.16.1" version: "6.9.1"
sentry_flutter: sentry_flutter:
dependency: "direct main" dependency: "direct main"
description: description:
name: sentry_flutter name: sentry_flutter
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "6.16.1" version: "6.9.1"
shared_preferences: shared_preferences:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1103,7 +1131,7 @@ packages:
name: shared_preferences_android name: shared_preferences_android
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.0.14" version: "2.0.13"
shared_preferences_ios: shared_preferences_ios:
dependency: transitive dependency: transitive
description: description:
@ -1152,14 +1180,14 @@ packages:
name: shelf name: shelf
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.4.0" version: "1.3.2"
shelf_web_socket: shelf_web_socket:
dependency: transitive dependency: transitive
description: description:
name: shelf_web_socket name: shelf_web_socket
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.3" version: "1.0.2"
sky_engine: sky_engine:
dependency: transitive dependency: transitive
description: flutter description: flutter
@ -1192,7 +1220,7 @@ packages:
name: stream_transform name: stream_transform
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.1.0" version: "2.0.0"
string_scanner: string_scanner:
dependency: transitive dependency: transitive
description: description:
@ -1262,7 +1290,7 @@ packages:
name: uuid name: uuid
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.0.7" version: "3.0.6"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
@ -1283,7 +1311,7 @@ packages:
name: watcher name: watcher
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.2" version: "1.0.1"
web_socket_channel: web_socket_channel:
dependency: transitive dependency: transitive
description: description:
@ -1311,28 +1339,28 @@ packages:
name: webview_flutter_android name: webview_flutter_android
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.10.4" version: "2.10.0"
webview_flutter_platform_interface: webview_flutter_platform_interface:
dependency: transitive dependency: transitive
description: description:
name: webview_flutter_platform_interface name: webview_flutter_platform_interface
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.9.5" version: "1.9.3"
webview_flutter_wkwebview: webview_flutter_wkwebview:
dependency: transitive dependency: transitive
description: description:
name: webview_flutter_wkwebview name: webview_flutter_wkwebview
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "2.9.5" version: "2.9.3"
win32: win32:
dependency: transitive dependency: transitive
description: description:
name: win32 name: win32
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "3.1.2" version: "3.0.0"
xdg_directories: xdg_directories:
dependency: transitive dependency: transitive
description: description:
@ -1355,5 +1383,5 @@ packages:
source: hosted source: hosted
version: "3.1.1" version: "3.1.1"
sdks: sdks:
dart: ">=2.18.0 <3.0.0" dart: ">=2.17.1 <3.0.0"
flutter: ">=3.0.0" flutter: ">=3.0.0"

View File

@ -5,7 +5,7 @@ description: Pay with G1.
# pub.dev using `pub publish`. This is preferred for private packages. # pub.dev using `pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 0.0.12+33 version: 0.0.11+32
environment: environment:
sdk: '>=2.12.0 <3.0.0' sdk: '>=2.12.0 <3.0.0'
@ -41,7 +41,7 @@ dependencies:
unorm_dart: ^0.2.0 unorm_dart: ^0.2.0
dio: ^4.0.4 dio: ^4.0.4
durt: ^0.1.6 durt: ^0.1.6
package_info_plus: ^3.0.2 package_info_plus: ^1.4.2
polkawallet_sdk: #^0.4.9 polkawallet_sdk: #^0.4.9
git: git:
# url: https://github.com/polkawallet-io/sdk.git # url: https://github.com/polkawallet-io/sdk.git
@ -67,7 +67,7 @@ dev_dependencies:
sdk: flutter sdk: flutter
integration_test: integration_test:
sdk: flutter sdk: flutter
dart_code_metrics: ^5.0.1 dart_code_metrics: ^4.17.1
flutter_icons: flutter_icons:
android: true android: true