diff --git a/android/app/build.gradle b/android/app/build.gradle index 523a291..861c0da 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -32,15 +32,15 @@ apply plugin: 'kotlin-android' apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle" android { - compileSdkVersion 33 + compileSdkVersion 34 compileOptions { - sourceCompatibility JavaVersion.VERSION_1_8 - targetCompatibility JavaVersion.VERSION_1_8 + sourceCompatibility JavaVersion.VERSION_11 + targetCompatibility JavaVersion.VERSION_11 } kotlinOptions { - jvmTarget = '1.8' + jvmTarget = '11' } sourceSets { @@ -50,7 +50,7 @@ android { defaultConfig { applicationId "io.beldex.master_node_monitor" minSdkVersion 23 - targetSdkVersion 33 + targetSdkVersion 34 versionCode flutterVersionCode.toInteger() versionName flutterVersionName } diff --git a/android/build.gradle b/android/build.gradle index 4256f91..81e2fff 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -1,12 +1,12 @@ buildscript { - ext.kotlin_version = '1.6.10' + ext.kotlin_version = '1.8.0' repositories { google() mavenCentral() } dependencies { - classpath 'com.android.tools.build:gradle:4.1.0' + classpath 'com.android.tools.build:gradle:7.1.3' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -26,6 +26,6 @@ subprojects { project.evaluationDependsOn(':app') } -task clean(type: Delete) { +tasks.register("clean", Delete) { delete rootProject.buildDir } diff --git a/android/gradle.properties b/android/gradle.properties index a673820..a3f33e5 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -1,4 +1,4 @@ org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true -android.enableR8=true +#android.enableR8=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index bc6a58a..b25f2ed 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Jun 23 08:50:38 CEST 2017 +#Thu Aug 01 17:17:25 IST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.7-all.zip diff --git a/assets/changelog.yml b/assets/changelog.yml index 16cd7cb..d565844 100644 --- a/assets/changelog.yml +++ b/assets/changelog.yml @@ -6,3 +6,9 @@ version: 1.0.1 changes: - Updated support for Android version 13 +- + version: 1.0.2 + changes: + - Targeted latest android version + - Minor bug fixes + - Updated google play core libraries diff --git a/assets/daemon_list.yml b/assets/daemon_list.yml index e0ce346..f62ae36 100644 --- a/assets/daemon_list.yml +++ b/assets/daemon_list.yml @@ -1,15 +1,9 @@ - uri: publicnode1.rpcnode.stream:29095 is_default: true -- - uri: explorer.beldex.io:19091 - is_default: false - uri: publicnode5.rpcnode.stream:29095 is_default: false -- - uri: mainnet.beldex.io:29095 - is_default: false - uri: publicnode2.rpcnode.stream:29095 is_default: false diff --git a/lib/generated/intl/messages_all.dart b/lib/generated/intl/messages_all.dart index 5e9098d..9934d37 100644 --- a/lib/generated/intl/messages_all.dart +++ b/lib/generated/intl/messages_all.dart @@ -11,6 +11,7 @@ import 'dart:async'; +import 'package:flutter/foundation.dart'; import 'package:intl/intl.dart'; import 'package:intl/message_lookup_by_library.dart'; import 'package:intl/src/intl_helpers.dart'; @@ -20,11 +21,11 @@ import 'messages_en.dart' as messages_en; typedef Future LibraryLoader(); Map _deferredLibraries = { - 'de': () => new Future.value(null), - 'en': () => new Future.value(null), + 'de': () => new SynchronousFuture(null), + 'en': () => new SynchronousFuture(null), }; -MessageLookupByLibrary _findExact(String localeName) { +MessageLookupByLibrary? _findExact(String localeName) { switch (localeName) { case 'de': return messages_de.messages; @@ -36,19 +37,18 @@ MessageLookupByLibrary _findExact(String localeName) { } /// User programs should call this before using [localeName] for messages. -Future initializeMessages(String localeName) async { +Future initializeMessages(String localeName) { var availableLocale = Intl.verifiedLocale( - localeName, - (locale) => _deferredLibraries[locale] != null, - onFailure: (_) => null); + localeName, (locale) => _deferredLibraries[locale] != null, + onFailure: (_) => null); if (availableLocale == null) { - return new Future.value(false); + return new SynchronousFuture(false); } var lib = _deferredLibraries[availableLocale]; - await (lib == null ? new Future.value(false) : lib()); + lib == null ? new SynchronousFuture(false) : lib(); initializeInternalMessageLookup(() => new CompositeMessageLookup()); messageLookup.addLocale(availableLocale, _findGeneratedMessagesFor); - return new Future.value(true); + return new SynchronousFuture(true); } bool _messagesExistFor(String locale) { @@ -59,9 +59,9 @@ bool _messagesExistFor(String locale) { } } -MessageLookupByLibrary _findGeneratedMessagesFor(String locale) { - var actualLocale = Intl.verifiedLocale(locale, _messagesExistFor, - onFailure: (_) => null); +MessageLookupByLibrary? _findGeneratedMessagesFor(String locale) { + var actualLocale = + Intl.verifiedLocale(locale, _messagesExistFor, onFailure: (_) => null); if (actualLocale == null) return null; return _findExact(actualLocale); } diff --git a/lib/generated/intl/messages_de.dart b/lib/generated/intl/messages_de.dart index fb93d24..b19169e 100644 --- a/lib/generated/intl/messages_de.dart +++ b/lib/generated/intl/messages_de.dart @@ -7,7 +7,8 @@ // ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new // ignore_for_file:prefer_single_quotes,comment_references, directives_ordering // ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes import 'package:intl/intl.dart'; import 'package:intl/message_lookup_by_library.dart'; @@ -19,114 +20,169 @@ typedef String MessageIfAbsent(String messageStr, List args); class MessageLookup extends MessageLookupByLibrary { String get localeName => 'de'; - static m0(networkSize, currentHeight) => "${networkSize} Nodes bei Höhe ${currentHeight}"; + static String m0(networkSize, currentHeight) => + "${networkSize} Nodes bei Höhe ${currentHeight}"; - static m1(title) => "${title} in die Zwischenablage kopiert"; + static String m1(title) => "${title} in die Zwischenablage kopiert"; - static m2(name) => "Für ${name} ist keine Route definiert"; + static String m2(name) => "Für ${name} ist keine Route definiert"; - static m3(nextReward) => "~ in ${nextReward} Blöcken"; + static String m3(nextReward) => "~ in ${nextReward} Blöcken"; - static m4(total) => "Alle ${total} Node(s) sind\nbetriebsbereit"; + static String m4(total) => "Alle ${total} Node(s) sind\nbetriebsbereit"; - static m5(healthyNodes, total) => "${healthyNodes} von ${total} Nodes\nsind betriebsbereit"; + static String m5(healthyNodes, total) => + "${healthyNodes} von ${total} Nodes\nsind betriebsbereit"; - static m6(minutes) => "vor ${minutes} Minuten"; + static String m6(minutes) => "vor ${minutes} Minuten"; final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "add_daemon" : MessageLookupByLibrary.simpleMessage("Daemon hinzufügen"), - "add_master_node" : MessageLookupByLibrary.simpleMessage("Master Node hinzufügen"), - "add_node_to_get_started" : MessageLookupByLibrary.simpleMessage("Füge einen Master Node hinzu um loszulegen."), - "address" : MessageLookupByLibrary.simpleMessage("Spender"), - "all_master_nodes" : m0, - "amount" : MessageLookupByLibrary.simpleMessage("Betrag"), - "awaiting_contributions" : MessageLookupByLibrary.simpleMessage("Warten auf Beiträge"), - "blocks" : MessageLookupByLibrary.simpleMessage("Blöcke"), - "checkYourInternetConnection" : MessageLookupByLibrary.simpleMessage("Check your internet connection"), - "checkpoints" : MessageLookupByLibrary.simpleMessage("Checkpoint Blöcke"), - "contributors" : MessageLookupByLibrary.simpleMessage("Beiträger"), - "copied_to_clipboard" : m1, - "daemon_address" : MessageLookupByLibrary.simpleMessage("Daemon Adresse"), - "daemon_port" : MessageLookupByLibrary.simpleMessage("Daemon Port"), - "dashboard_order_by_name" : MessageLookupByLibrary.simpleMessage("Name"), - "dashboard_order_by_next_reward" : MessageLookupByLibrary.simpleMessage("Nächste Belohnung"), - "delete_master_node" : MessageLookupByLibrary.simpleMessage("Master Node löschen"), - "earned_downtime_blocks" : MessageLookupByLibrary.simpleMessage("Verdiente Downtime Blöcke"), - "enterAPublicKey" : MessageLookupByLibrary.simpleMessage("Enter a public key"), - "enterAValidPublicKey" : MessageLookupByLibrary.simpleMessage("Enter a valid public key"), - "error_name_taken" : MessageLookupByLibrary.simpleMessage("Du hast bereits einen Node mit dem Namen"), - "error_public_key_too_long" : MessageLookupByLibrary.simpleMessage("Öffentlicher Schlüssel zu lang"), - "error_public_key_too_short" : MessageLookupByLibrary.simpleMessage("Öffentlicher Schlüssel zu kurz"), - "error_router_no_route" : m2, - "error_text_daemon_address" : MessageLookupByLibrary.simpleMessage("Bitte gebe eine valide iPv4 Adresse oder Domain Name ein."), - "error_text_daemon_port" : MessageLookupByLibrary.simpleMessage("Der Daemon Port kann nur Nummern zwischen 0 und 65535 beinhalten."), - "error_you_are_already_monitoring" : MessageLookupByLibrary.simpleMessage("Du überwachst diesen Node bereits"), - "estimated_reward_block" : m3, - "health_all_nodes" : m4, - "health_no_nodes" : MessageLookupByLibrary.simpleMessage("Kein Node ist\nbetriebsbereit!"), - "health_out_of_nodes" : m5, - "help" : MessageLookupByLibrary.simpleMessage("Help"), - "hours" : MessageLookupByLibrary.simpleMessage("Stunden"), - "last_reward" : MessageLookupByLibrary.simpleMessage("Letzte\nBelohung"), - "last_reward_height" : MessageLookupByLibrary.simpleMessage("Letzte Belohungs Höhe"), - "last_uptime_proof" : MessageLookupByLibrary.simpleMessage("Letzter Uptime Proof"), - "lokinet_router" : MessageLookupByLibrary.simpleMessage("Belnet\nRouter"), - "master_node_operator" : MessageLookupByLibrary.simpleMessage("Node Operator"), - "master_node_version" : MessageLookupByLibrary.simpleMessage("Node Version"), - "minutes_ago" : m6, - "month_april" : MessageLookupByLibrary.simpleMessage("April"), - "month_august" : MessageLookupByLibrary.simpleMessage("August"), - "month_december" : MessageLookupByLibrary.simpleMessage("Dezember"), - "month_february" : MessageLookupByLibrary.simpleMessage("Februar"), - "month_january" : MessageLookupByLibrary.simpleMessage("Januar"), - "month_july" : MessageLookupByLibrary.simpleMessage("Juli"), - "month_june" : MessageLookupByLibrary.simpleMessage("Juni"), - "month_march" : MessageLookupByLibrary.simpleMessage("März"), - "month_may" : MessageLookupByLibrary.simpleMessage("Mai"), - "month_november" : MessageLookupByLibrary.simpleMessage("November"), - "month_october" : MessageLookupByLibrary.simpleMessage("Oktober"), - "month_september" : MessageLookupByLibrary.simpleMessage("September"), - "more" : MessageLookupByLibrary.simpleMessage("More\nInfo"), - "name" : MessageLookupByLibrary.simpleMessage("Name"), - "next_reward" : MessageLookupByLibrary.simpleMessage("Nächste Belohnung:"), - "ok" : MessageLookupByLibrary.simpleMessage("OK"), - "pleaseEnterAName" : MessageLookupByLibrary.simpleMessage("Please enter a name"), - "pleaseEnterAValidDaemon" : MessageLookupByLibrary.simpleMessage("Please enter a valid daemon"), - "please_select" : MessageLookupByLibrary.simpleMessage("Bitte auswählen:"), - "pos" : MessageLookupByLibrary.simpleMessage("POS Blöcke"), - "public_ip" : MessageLookupByLibrary.simpleMessage("IP Adresse"), - "public_key" : MessageLookupByLibrary.simpleMessage("Öffentlicher Schlüssel"), - "registration_height" : MessageLookupByLibrary.simpleMessage("Registrierungs Höhe"), - "registration_hf_version" : MessageLookupByLibrary.simpleMessage("Registrierte Hardfork Version"), - "save_master_node" : MessageLookupByLibrary.simpleMessage("Master Node speichern"), - "settings_daemon" : MessageLookupByLibrary.simpleMessage("Daemon"), - "settings_dark_theme" : MessageLookupByLibrary.simpleMessage("Dunkles Farbschema"), - "settings_language" : MessageLookupByLibrary.simpleMessage("Sprache"), - "settings_light_theme" : MessageLookupByLibrary.simpleMessage("Helles Farbschema"), - "settings_master_nodes" : MessageLookupByLibrary.simpleMessage("Master Nodes"), - "settings_order_by" : MessageLookupByLibrary.simpleMessage("Sortierung"), - "settings_title_app" : MessageLookupByLibrary.simpleMessage("App"), - "settings_title_general" : MessageLookupByLibrary.simpleMessage("Generelle Einstellungen"), - "software_versions" : MessageLookupByLibrary.simpleMessage("Node / Storage Server / Belnet Version"), - "state_height" : MessageLookupByLibrary.simpleMessage("Letzte Zustandsänderung Höhe"), - "storage_server" : MessageLookupByLibrary.simpleMessage("Storage\nServer"), - "success_saved_node" : MessageLookupByLibrary.simpleMessage("Node gespeichert"), - "swarm_id" : MessageLookupByLibrary.simpleMessage("Swarm ID"), - "termsAndConditions" : MessageLookupByLibrary.simpleMessage("Terms and Conditions"), - "termsConditions" : MessageLookupByLibrary.simpleMessage("Terms & amp; Bedingungen"), - "title_add_daemon" : MessageLookupByLibrary.simpleMessage("Daemon hinzufügen"), - "title_add_master_node" : MessageLookupByLibrary.simpleMessage("Master Node hinzufügen"), - "title_changelog" : MessageLookupByLibrary.simpleMessage("Changelog"), - "title_dashboard" : MessageLookupByLibrary.simpleMessage("Dashboard"), - "title_edit_daemons" : MessageLookupByLibrary.simpleMessage("Daemons bearbeiten"), - "title_edit_master_node" : MessageLookupByLibrary.simpleMessage("Master Node bearbeiten"), - "title_edit_master_nodes" : MessageLookupByLibrary.simpleMessage("Master Nodes bearbeiten"), - "title_faq" : MessageLookupByLibrary.simpleMessage("FAQ"), - "title_settings" : MessageLookupByLibrary.simpleMessage("Einstellungen"), - "uptime_proof" : MessageLookupByLibrary.simpleMessage("Uptime Proof"), - "welcome" : MessageLookupByLibrary.simpleMessage("Willkommen,\nBeldex Master Node Monitor"), - "welcome_first_line" : MessageLookupByLibrary.simpleMessage("Hier kannst du die Master Nodes überwachen, die du bereibst oder zu den du beiträgst."), - "your_master_nodes" : MessageLookupByLibrary.simpleMessage("Deine Master Nodes") - }; + static Map _notInlinedMessages(_) => { + "add_daemon": MessageLookupByLibrary.simpleMessage("Daemon hinzufügen"), + "add_master_node": + MessageLookupByLibrary.simpleMessage("Master Node hinzufügen"), + "add_node_to_get_started": MessageLookupByLibrary.simpleMessage( + "Füge einen Master Node hinzu um loszulegen."), + "address": MessageLookupByLibrary.simpleMessage("Spender"), + "all_master_nodes": m0, + "amount": MessageLookupByLibrary.simpleMessage("Betrag"), + "awaiting_contributions": + MessageLookupByLibrary.simpleMessage("Warten auf Beiträge"), + "blocks": MessageLookupByLibrary.simpleMessage("Blöcke"), + "checkYourInternetConnection": MessageLookupByLibrary.simpleMessage( + "Check your internet connection"), + "checkpoints": + MessageLookupByLibrary.simpleMessage("Checkpoint Blöcke"), + "contributors": MessageLookupByLibrary.simpleMessage("Beiträger"), + "copied_to_clipboard": m1, + "daemon_address": + MessageLookupByLibrary.simpleMessage("Daemon Adresse"), + "daemon_port": MessageLookupByLibrary.simpleMessage("Daemon Port"), + "daemons": MessageLookupByLibrary.simpleMessage("Dämonen"), + "dashboard_order_by_name": MessageLookupByLibrary.simpleMessage("Name"), + "dashboard_order_by_next_reward": + MessageLookupByLibrary.simpleMessage("Nächste Belohnung"), + "delete_master_node": + MessageLookupByLibrary.simpleMessage("Master Node löschen"), + "earned_downtime_blocks": + MessageLookupByLibrary.simpleMessage("Verdiente Downtime Blöcke"), + "enterAPublicKey": + MessageLookupByLibrary.simpleMessage("Enter a public key"), + "enterAValidPublicKey": + MessageLookupByLibrary.simpleMessage("Enter a valid public key"), + "error_name_taken": MessageLookupByLibrary.simpleMessage( + "Du hast bereits einen Node mit dem Namen"), + "error_public_key_too_long": MessageLookupByLibrary.simpleMessage( + "Öffentlicher Schlüssel zu lang"), + "error_public_key_too_short": MessageLookupByLibrary.simpleMessage( + "Öffentlicher Schlüssel zu kurz"), + "error_router_no_route": m2, + "error_text_daemon_address": MessageLookupByLibrary.simpleMessage( + "Bitte gebe eine valide iPv4 Adresse oder Domain Name ein."), + "error_text_daemon_port": MessageLookupByLibrary.simpleMessage( + "Der Daemon Port kann nur Nummern zwischen 0 und 65535 beinhalten."), + "error_you_are_already_monitoring": + MessageLookupByLibrary.simpleMessage( + "Du überwachst diesen Node bereits"), + "estimated_reward_block": m3, + "health_all_nodes": m4, + "health_no_nodes": MessageLookupByLibrary.simpleMessage( + "Kein Node ist\nbetriebsbereit!"), + "health_out_of_nodes": m5, + "help": MessageLookupByLibrary.simpleMessage("Help"), + "hours": MessageLookupByLibrary.simpleMessage("Stunden"), + "last_reward": MessageLookupByLibrary.simpleMessage("Letzte\nBelohung"), + "last_reward_height": + MessageLookupByLibrary.simpleMessage("Letzte Belohungs Höhe"), + "last_uptime_proof": + MessageLookupByLibrary.simpleMessage("Letzter Uptime Proof"), + "lokinet_router": + MessageLookupByLibrary.simpleMessage("Belnet\nRouter"), + "master_node_operator": + MessageLookupByLibrary.simpleMessage("Node Operator"), + "master_node_version": + MessageLookupByLibrary.simpleMessage("Node Version"), + "minutes_ago": m6, + "month_april": MessageLookupByLibrary.simpleMessage("April"), + "month_august": MessageLookupByLibrary.simpleMessage("August"), + "month_december": MessageLookupByLibrary.simpleMessage("Dezember"), + "month_february": MessageLookupByLibrary.simpleMessage("Februar"), + "month_january": MessageLookupByLibrary.simpleMessage("Januar"), + "month_july": MessageLookupByLibrary.simpleMessage("Juli"), + "month_june": MessageLookupByLibrary.simpleMessage("Juni"), + "month_march": MessageLookupByLibrary.simpleMessage("März"), + "month_may": MessageLookupByLibrary.simpleMessage("Mai"), + "month_november": MessageLookupByLibrary.simpleMessage("November"), + "month_october": MessageLookupByLibrary.simpleMessage("Oktober"), + "month_september": MessageLookupByLibrary.simpleMessage("September"), + "more": MessageLookupByLibrary.simpleMessage("More\nInfo"), + "name": MessageLookupByLibrary.simpleMessage("Name"), + "next_reward": + MessageLookupByLibrary.simpleMessage("Nächste Belohnung:"), + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "pleaseEnterAName": + MessageLookupByLibrary.simpleMessage("Please enter a name"), + "pleaseEnterAValidDaemon": + MessageLookupByLibrary.simpleMessage("Please enter a valid daemon"), + "please_select": + MessageLookupByLibrary.simpleMessage("Bitte auswählen:"), + "pos": MessageLookupByLibrary.simpleMessage("POS Blöcke"), + "public_ip": MessageLookupByLibrary.simpleMessage("IP Adresse"), + "public_key": + MessageLookupByLibrary.simpleMessage("Öffentlicher Schlüssel"), + "registration_height": + MessageLookupByLibrary.simpleMessage("Registrierungs Höhe"), + "registration_hf_version": MessageLookupByLibrary.simpleMessage( + "Registrierte Hardfork Version"), + "save_master_node": + MessageLookupByLibrary.simpleMessage("Master Node speichern"), + "settings_daemon": MessageLookupByLibrary.simpleMessage("Daemon"), + "settings_dark_theme": + MessageLookupByLibrary.simpleMessage("Dunkles Farbschema"), + "settings_language": MessageLookupByLibrary.simpleMessage("Sprache"), + "settings_light_theme": + MessageLookupByLibrary.simpleMessage("Helles Farbschema"), + "settings_master_nodes": + MessageLookupByLibrary.simpleMessage("Master Nodes"), + "settings_order_by": MessageLookupByLibrary.simpleMessage("Sortierung"), + "settings_title_app": MessageLookupByLibrary.simpleMessage("App"), + "settings_title_general": + MessageLookupByLibrary.simpleMessage("Generelle Einstellungen"), + "software_versions": MessageLookupByLibrary.simpleMessage( + "Node / Storage Server / Belnet Version"), + "state_height": MessageLookupByLibrary.simpleMessage( + "Letzte Zustandsänderung Höhe"), + "storage_server": + MessageLookupByLibrary.simpleMessage("Storage\nServer"), + "success_saved_node": + MessageLookupByLibrary.simpleMessage("Node gespeichert"), + "swarm_id": MessageLookupByLibrary.simpleMessage("Swarm ID"), + "termsAndConditions": + MessageLookupByLibrary.simpleMessage("Terms and Conditions"), + "termsConditions": + MessageLookupByLibrary.simpleMessage("Terms & amp; Bedingungen"), + "theDaemonIsAlreadyExists": MessageLookupByLibrary.simpleMessage( + "Der Daemon ist bereits vorhanden"), + "title_add_daemon": + MessageLookupByLibrary.simpleMessage("Daemon hinzufügen"), + "title_add_master_node": + MessageLookupByLibrary.simpleMessage("Master Node hinzufügen"), + "title_changelog": MessageLookupByLibrary.simpleMessage("Changelog"), + "title_dashboard": MessageLookupByLibrary.simpleMessage("Dashboard"), + "title_edit_daemons": + MessageLookupByLibrary.simpleMessage("Daemons bearbeiten"), + "title_edit_master_node": + MessageLookupByLibrary.simpleMessage("Master Node bearbeiten"), + "title_edit_master_nodes": + MessageLookupByLibrary.simpleMessage("Master Nodes bearbeiten"), + "title_faq": MessageLookupByLibrary.simpleMessage("FAQ"), + "title_settings": MessageLookupByLibrary.simpleMessage("Einstellungen"), + "uptime_proof": MessageLookupByLibrary.simpleMessage("Uptime Proof"), + "welcome": MessageLookupByLibrary.simpleMessage( + "Willkommen,\nBeldex Master Node Monitor"), + "welcome_first_line": MessageLookupByLibrary.simpleMessage( + "Hier kannst du die Master Nodes überwachen, die du bereibst oder zu den du beiträgst."), + "your_master_nodes": + MessageLookupByLibrary.simpleMessage("Deine Master Nodes") + }; } diff --git a/lib/generated/intl/messages_en.dart b/lib/generated/intl/messages_en.dart index 97c16e8..82aefc2 100644 --- a/lib/generated/intl/messages_en.dart +++ b/lib/generated/intl/messages_en.dart @@ -7,7 +7,8 @@ // ignore_for_file:unnecessary_brace_in_string_interps, unnecessary_new // ignore_for_file:prefer_single_quotes,comment_references, directives_ordering // ignore_for_file:annotate_overrides,prefer_generic_function_type_aliases -// ignore_for_file:unused_import, file_names +// ignore_for_file:unused_import, file_names, avoid_escaping_inner_quotes +// ignore_for_file:unnecessary_string_interpolations, unnecessary_string_escapes import 'package:intl/intl.dart'; import 'package:intl/message_lookup_by_library.dart'; @@ -19,118 +20,170 @@ typedef String MessageIfAbsent(String messageStr, List args); class MessageLookup extends MessageLookupByLibrary { String get localeName => 'en'; - static m0(networkSize, currentHeight) => "${networkSize} nodes at height ${currentHeight}"; + static String m0(networkSize, currentHeight) => + "${networkSize} nodes at height ${currentHeight}"; - static m1(title) => "Copied ${title} to clipboard"; + static String m1(title) => "Copied ${title} to clipboard"; - static m2(name) => "No route defined for ${name}"; + static String m2(name) => "No route defined for ${name}"; - static m7(unlockBlock) => "in ${unlockBlock} blocks"; + static String m7(unlockBlock) => "in ${unlockBlock} blocks"; - static m3(nextReward) => "~ in ${nextReward} blocks"; + static String m3(nextReward) => "~ in ${nextReward} blocks"; - static m4(total) => "All ${total} nodes operational"; + static String m4(total) => "All ${total} nodes operational"; - static m5(healthyNodes, total) => "${healthyNodes} out of ${total} nodes\nare operational"; + static String m5(healthyNodes, total) => + "${healthyNodes} out of ${total} nodes\nare operational"; - static m6(minutes) => "${minutes} minutes ago"; + static String m6(minutes) => "${minutes} minutes ago"; final messages = _notInlinedMessages(_notInlinedMessages); - static _notInlinedMessages(_) => { - "add_daemon" : MessageLookupByLibrary.simpleMessage("Add Daemon"), - "add_master_node" : MessageLookupByLibrary.simpleMessage("Add a Master Node"), - "add_node_to_get_started" : MessageLookupByLibrary.simpleMessage("Add a Master Node below to get started."), - "address" : MessageLookupByLibrary.simpleMessage("Staker"), - "all_master_nodes" : m0, - "amount" : MessageLookupByLibrary.simpleMessage("Amount"), - "awaiting_contributions" : MessageLookupByLibrary.simpleMessage("Awaiting Contributions"), - "blocks" : MessageLookupByLibrary.simpleMessage("blocks"), - "checkYourInternetConnection" : MessageLookupByLibrary.simpleMessage("Check your internet connection"), - "checkpoints" : MessageLookupByLibrary.simpleMessage("Checkpoints"), - "contributors" : MessageLookupByLibrary.simpleMessage("Contributors"), - "copied_to_clipboard" : m1, - "daemon_address" : MessageLookupByLibrary.simpleMessage("Daemon Address"), - "daemon_port" : MessageLookupByLibrary.simpleMessage("Daemon Port"), - "dashboard_order_by_name" : MessageLookupByLibrary.simpleMessage("Name"), - "dashboard_order_by_next_reward" : MessageLookupByLibrary.simpleMessage("Next Reward"), - "delete_master_node" : MessageLookupByLibrary.simpleMessage("Delete Master Node"), - "earned_downtime_blocks" : MessageLookupByLibrary.simpleMessage("Earned Downtime Blocks"), - "enterAPublicKey" : MessageLookupByLibrary.simpleMessage("Enter a public key"), - "enterAValidPublicKey" : MessageLookupByLibrary.simpleMessage("Enter a valid public key"), - "error_name_taken" : MessageLookupByLibrary.simpleMessage("You already have a node with that name"), - "error_public_key_too_long" : MessageLookupByLibrary.simpleMessage("Public Key too long"), - "error_public_key_too_short" : MessageLookupByLibrary.simpleMessage("Public Key too short"), - "error_router_no_route" : m2, - "error_text_daemon_address" : MessageLookupByLibrary.simpleMessage("Please enter a valid iPv4 address or domain name"), - "error_text_daemon_port" : MessageLookupByLibrary.simpleMessage("Daemon port can only contain numbers between 0 and 65535"), - "error_you_are_already_monitoring" : MessageLookupByLibrary.simpleMessage("You are already monitoring that node"), - "estimated_node_unlock" : m7, - "estimated_reward_block" : m3, - "health_all_nodes" : m4, - "health_no_nodes" : MessageLookupByLibrary.simpleMessage("No nodes are operational!"), - "health_out_of_nodes" : m5, - "help" : MessageLookupByLibrary.simpleMessage("Help"), - "hours" : MessageLookupByLibrary.simpleMessage("hours"), - "last_reward" : MessageLookupByLibrary.simpleMessage("Last\nReward"), - "last_reward_height" : MessageLookupByLibrary.simpleMessage("Last Reward Height"), - "last_uptime_proof" : MessageLookupByLibrary.simpleMessage("Last Uptime Proof"), - "lokinet_router" : MessageLookupByLibrary.simpleMessage("Belnet\nRouter"), - "master_node_operator" : MessageLookupByLibrary.simpleMessage("Node Operator"), - "master_node_version" : MessageLookupByLibrary.simpleMessage("Node Version"), - "minutes_ago" : m6, - "month_april" : MessageLookupByLibrary.simpleMessage("April"), - "month_august" : MessageLookupByLibrary.simpleMessage("August"), - "month_december" : MessageLookupByLibrary.simpleMessage("December"), - "month_february" : MessageLookupByLibrary.simpleMessage("February"), - "month_january" : MessageLookupByLibrary.simpleMessage("January"), - "month_july" : MessageLookupByLibrary.simpleMessage("July"), - "month_june" : MessageLookupByLibrary.simpleMessage("June"), - "month_march" : MessageLookupByLibrary.simpleMessage("March"), - "month_may" : MessageLookupByLibrary.simpleMessage("May"), - "month_november" : MessageLookupByLibrary.simpleMessage("November"), - "month_october" : MessageLookupByLibrary.simpleMessage("October"), - "month_september" : MessageLookupByLibrary.simpleMessage("September"), - "more" : MessageLookupByLibrary.simpleMessage("More\nInfo"), - "name" : MessageLookupByLibrary.simpleMessage("Name"), - "next_reward" : MessageLookupByLibrary.simpleMessage("Next Reward:"), - "ok" : MessageLookupByLibrary.simpleMessage("OK"), - "pleaseEnterAName" : MessageLookupByLibrary.simpleMessage("Please enter a name"), - "pleaseEnterAValidDaemon" : MessageLookupByLibrary.simpleMessage("Please enter a valid daemon"), - "please_select" : MessageLookupByLibrary.simpleMessage("Please select:"), - "pos" : MessageLookupByLibrary.simpleMessage("POS"), - "public_ip" : MessageLookupByLibrary.simpleMessage("IP Address"), - "public_key" : MessageLookupByLibrary.simpleMessage("Public Key"), - "registration_height" : MessageLookupByLibrary.simpleMessage("Registration Height"), - "registration_hf_version" : MessageLookupByLibrary.simpleMessage("Registration Hardfork Version"), - "save_master_node" : MessageLookupByLibrary.simpleMessage("Save Master Node"), - "settings_daemon" : MessageLookupByLibrary.simpleMessage("Daemon"), - "settings_dark_theme" : MessageLookupByLibrary.simpleMessage("Dark Theme"), - "settings_language" : MessageLookupByLibrary.simpleMessage("Language"), - "settings_light_theme" : MessageLookupByLibrary.simpleMessage("Light Theme"), - "settings_master_nodes" : MessageLookupByLibrary.simpleMessage("Master Nodes"), - "settings_order_by" : MessageLookupByLibrary.simpleMessage("Order Nodes by"), - "settings_title_app" : MessageLookupByLibrary.simpleMessage("App"), - "settings_title_general" : MessageLookupByLibrary.simpleMessage("General"), - "software_versions" : MessageLookupByLibrary.simpleMessage("Node / Storage Server / Belnet Version"), - "state_height" : MessageLookupByLibrary.simpleMessage("Last State Change Height"), - "storage_server" : MessageLookupByLibrary.simpleMessage("Storage\nServer"), - "success_saved_node" : MessageLookupByLibrary.simpleMessage("Node successfully saved"), - "swarm_id" : MessageLookupByLibrary.simpleMessage("Swarm ID"), - "termsAndConditions" : MessageLookupByLibrary.simpleMessage("Terms and Conditions"), - "termsConditions" : MessageLookupByLibrary.simpleMessage("Terms & Conditions"), - "title_add_daemon" : MessageLookupByLibrary.simpleMessage("Add Daemon"), - "title_add_master_node" : MessageLookupByLibrary.simpleMessage("Add Master Node"), - "title_changelog" : MessageLookupByLibrary.simpleMessage("Changelog"), - "title_dashboard" : MessageLookupByLibrary.simpleMessage("Dashboard"), - "title_edit_daemons" : MessageLookupByLibrary.simpleMessage("Edit Daemons"), - "title_edit_master_node" : MessageLookupByLibrary.simpleMessage("Edit Master Node"), - "title_edit_master_nodes" : MessageLookupByLibrary.simpleMessage("Edit Master Nodes"), - "title_faq" : MessageLookupByLibrary.simpleMessage("FAQ"), - "title_settings" : MessageLookupByLibrary.simpleMessage("Settings"), - "unlocking_node" : MessageLookupByLibrary.simpleMessage("Node is unlocking"), - "uptime_proof" : MessageLookupByLibrary.simpleMessage("Uptime proof"), - "welcome" : MessageLookupByLibrary.simpleMessage("Welcome,\nBeldex Master Node Monitor"), - "welcome_first_line" : MessageLookupByLibrary.simpleMessage("Here you can watch Master Nodes you run or contribute to."), - "your_master_nodes" : MessageLookupByLibrary.simpleMessage("Your Master Nodes") - }; + static Map _notInlinedMessages(_) => { + "add_daemon": MessageLookupByLibrary.simpleMessage("Add Daemon"), + "add_master_node": + MessageLookupByLibrary.simpleMessage("Add a Master Node"), + "add_node_to_get_started": MessageLookupByLibrary.simpleMessage( + "Add a Master Node below to get started."), + "address": MessageLookupByLibrary.simpleMessage("Staker"), + "all_master_nodes": m0, + "amount": MessageLookupByLibrary.simpleMessage("Amount"), + "awaiting_contributions": + MessageLookupByLibrary.simpleMessage("Awaiting Contributions"), + "blocks": MessageLookupByLibrary.simpleMessage("blocks"), + "checkYourInternetConnection": MessageLookupByLibrary.simpleMessage( + "Check your internet connection"), + "checkpoints": MessageLookupByLibrary.simpleMessage("Checkpoints"), + "contributors": MessageLookupByLibrary.simpleMessage("Contributors"), + "copied_to_clipboard": m1, + "daemon_address": + MessageLookupByLibrary.simpleMessage("Daemon Address"), + "daemon_port": MessageLookupByLibrary.simpleMessage("Daemon Port"), + "daemons": MessageLookupByLibrary.simpleMessage("Daemons"), + "dashboard_order_by_name": MessageLookupByLibrary.simpleMessage("Name"), + "dashboard_order_by_next_reward": + MessageLookupByLibrary.simpleMessage("Next Reward"), + "delete_master_node": + MessageLookupByLibrary.simpleMessage("Delete Master Node"), + "earned_downtime_blocks": + MessageLookupByLibrary.simpleMessage("Earned Downtime Blocks"), + "enterAPublicKey": + MessageLookupByLibrary.simpleMessage("Enter a public key"), + "enterAValidPublicKey": + MessageLookupByLibrary.simpleMessage("Enter a valid public key"), + "error_name_taken": MessageLookupByLibrary.simpleMessage( + "You already have a node with that name"), + "error_public_key_too_long": + MessageLookupByLibrary.simpleMessage("Public Key too long"), + "error_public_key_too_short": + MessageLookupByLibrary.simpleMessage("Public Key too short"), + "error_router_no_route": m2, + "error_text_daemon_address": MessageLookupByLibrary.simpleMessage( + "Please enter a valid iPv4 address or domain name"), + "error_text_daemon_port": MessageLookupByLibrary.simpleMessage( + "Daemon port can only contain numbers between 0 and 65535"), + "error_you_are_already_monitoring": + MessageLookupByLibrary.simpleMessage( + "You are already monitoring that node"), + "estimated_node_unlock": m7, + "estimated_reward_block": m3, + "health_all_nodes": m4, + "health_no_nodes": + MessageLookupByLibrary.simpleMessage("No nodes are operational!"), + "health_out_of_nodes": m5, + "help": MessageLookupByLibrary.simpleMessage("Help"), + "hours": MessageLookupByLibrary.simpleMessage("hours"), + "last_reward": MessageLookupByLibrary.simpleMessage("Last\nReward"), + "last_reward_height": + MessageLookupByLibrary.simpleMessage("Last Reward Height"), + "last_uptime_proof": + MessageLookupByLibrary.simpleMessage("Last Uptime Proof"), + "lokinet_router": + MessageLookupByLibrary.simpleMessage("Belnet\nRouter"), + "master_node_operator": + MessageLookupByLibrary.simpleMessage("Node Operator"), + "master_node_version": + MessageLookupByLibrary.simpleMessage("Node Version"), + "minutes_ago": m6, + "month_april": MessageLookupByLibrary.simpleMessage("April"), + "month_august": MessageLookupByLibrary.simpleMessage("August"), + "month_december": MessageLookupByLibrary.simpleMessage("December"), + "month_february": MessageLookupByLibrary.simpleMessage("February"), + "month_january": MessageLookupByLibrary.simpleMessage("January"), + "month_july": MessageLookupByLibrary.simpleMessage("July"), + "month_june": MessageLookupByLibrary.simpleMessage("June"), + "month_march": MessageLookupByLibrary.simpleMessage("March"), + "month_may": MessageLookupByLibrary.simpleMessage("May"), + "month_november": MessageLookupByLibrary.simpleMessage("November"), + "month_october": MessageLookupByLibrary.simpleMessage("October"), + "month_september": MessageLookupByLibrary.simpleMessage("September"), + "more": MessageLookupByLibrary.simpleMessage("More\nInfo"), + "name": MessageLookupByLibrary.simpleMessage("Name"), + "next_reward": MessageLookupByLibrary.simpleMessage("Next Reward:"), + "ok": MessageLookupByLibrary.simpleMessage("OK"), + "pleaseEnterAName": + MessageLookupByLibrary.simpleMessage("Please enter a name"), + "pleaseEnterAValidDaemon": + MessageLookupByLibrary.simpleMessage("Please enter a valid daemon"), + "please_select": MessageLookupByLibrary.simpleMessage("Please select:"), + "pos": MessageLookupByLibrary.simpleMessage("POS"), + "public_ip": MessageLookupByLibrary.simpleMessage("IP Address"), + "public_key": MessageLookupByLibrary.simpleMessage("Public Key"), + "registration_height": + MessageLookupByLibrary.simpleMessage("Registration Height"), + "registration_hf_version": MessageLookupByLibrary.simpleMessage( + "Registration Hardfork Version"), + "save_master_node": + MessageLookupByLibrary.simpleMessage("Save Master Node"), + "settings_daemon": MessageLookupByLibrary.simpleMessage("Daemon"), + "settings_dark_theme": + MessageLookupByLibrary.simpleMessage("Dark Theme"), + "settings_language": MessageLookupByLibrary.simpleMessage("Language"), + "settings_light_theme": + MessageLookupByLibrary.simpleMessage("Light Theme"), + "settings_master_nodes": + MessageLookupByLibrary.simpleMessage("Master Nodes"), + "settings_order_by": + MessageLookupByLibrary.simpleMessage("Order Nodes by"), + "settings_title_app": MessageLookupByLibrary.simpleMessage("App"), + "settings_title_general": + MessageLookupByLibrary.simpleMessage("General"), + "software_versions": MessageLookupByLibrary.simpleMessage( + "Node / Storage Server / Belnet Version"), + "state_height": + MessageLookupByLibrary.simpleMessage("Last State Change Height"), + "storage_server": + MessageLookupByLibrary.simpleMessage("Storage\nServer"), + "success_saved_node": + MessageLookupByLibrary.simpleMessage("Node successfully saved"), + "swarm_id": MessageLookupByLibrary.simpleMessage("Swarm ID"), + "termsAndConditions": + MessageLookupByLibrary.simpleMessage("Terms and Conditions"), + "termsConditions": + MessageLookupByLibrary.simpleMessage("Terms & Conditions"), + "theDaemonIsAlreadyExists": MessageLookupByLibrary.simpleMessage( + "The Daemon is already exists"), + "title_add_daemon": MessageLookupByLibrary.simpleMessage("Add Daemon"), + "title_add_master_node": + MessageLookupByLibrary.simpleMessage("Add Master Node"), + "title_changelog": MessageLookupByLibrary.simpleMessage("Changelog"), + "title_dashboard": MessageLookupByLibrary.simpleMessage("Dashboard"), + "title_edit_daemons": + MessageLookupByLibrary.simpleMessage("Edit Daemons"), + "title_edit_master_node": + MessageLookupByLibrary.simpleMessage("Edit Master Node"), + "title_edit_master_nodes": + MessageLookupByLibrary.simpleMessage("Edit Master Nodes"), + "title_faq": MessageLookupByLibrary.simpleMessage("FAQ"), + "title_settings": MessageLookupByLibrary.simpleMessage("Settings"), + "unlocking_node": + MessageLookupByLibrary.simpleMessage("Node is unlocking"), + "uptime_proof": MessageLookupByLibrary.simpleMessage("Uptime proof"), + "welcome": MessageLookupByLibrary.simpleMessage( + "Welcome,\nBeldex Master Node Monitor"), + "welcome_first_line": MessageLookupByLibrary.simpleMessage( + "Here you can watch Master Nodes you run or contribute to."), + "your_master_nodes": + MessageLookupByLibrary.simpleMessage("Your Master Nodes") + }; } diff --git a/lib/generated/l10n.dart b/lib/generated/l10n.dart index d1bce08..2ae73fb 100644 --- a/lib/generated/l10n.dart +++ b/lib/generated/l10n.dart @@ -10,28 +10,43 @@ import 'intl/messages_all.dart'; // ignore_for_file: non_constant_identifier_names, lines_longer_than_80_chars // ignore_for_file: join_return_with_assignment, prefer_final_in_for_each -// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: avoid_redundant_argument_values, avoid_escaping_inner_quotes class S { S(); - - static S current; - - static const AppLocalizationDelegate delegate = - AppLocalizationDelegate(); + + static S? _current; + + static S get current { + assert(_current != null, + 'No instance of S was loaded. Try to initialize the S delegate before accessing S.current.'); + return _current!; + } + + static const AppLocalizationDelegate delegate = AppLocalizationDelegate(); static Future load(Locale locale) { - final name = (locale.countryCode?.isEmpty ?? false) ? locale.languageCode : locale.toString(); - final localeName = Intl.canonicalizedLocale(name); + final name = (locale.countryCode?.isEmpty ?? false) + ? locale.languageCode + : locale.toString(); + final localeName = Intl.canonicalizedLocale(name); return initializeMessages(localeName).then((_) { Intl.defaultLocale = localeName; - S.current = S(); - - return S.current; + final instance = S(); + S._current = instance; + + return instance; }); - } + } static S of(BuildContext context) { + final instance = S.maybeOf(context); + assert(instance != null, + 'No instance of S present in the widget tree. Did you add S.delegate in localizationsDelegates?'); + return instance!; + } + + static S? maybeOf(BuildContext context) { return Localizations.of(context, S); } @@ -984,6 +999,26 @@ class S { args: [], ); } + + /// `Daemons` + String get daemons { + return Intl.message( + 'Daemons', + name: 'daemons', + desc: '', + args: [], + ); + } + + /// `The Daemon is already exists` + String get theDaemonIsAlreadyExists { + return Intl.message( + 'The Daemon is already exists', + name: 'theDaemonIsAlreadyExists', + desc: '', + args: [], + ); + } } class AppLocalizationDelegate extends LocalizationsDelegate { @@ -1004,13 +1039,11 @@ class AppLocalizationDelegate extends LocalizationsDelegate { bool shouldReload(AppLocalizationDelegate old) => false; bool _isSupported(Locale locale) { - if (locale != null) { - for (var supportedLocale in supportedLocales) { - if (supportedLocale.languageCode == locale.languageCode) { - return true; - } + for (var supportedLocale in supportedLocales) { + if (supportedLocale.languageCode == locale.languageCode) { + return true; } } return false; } -} \ No newline at end of file +} diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb index 7c9c9bb..af7263f 100644 --- a/lib/l10n/intl_de.arb +++ b/lib/l10n/intl_de.arb @@ -102,5 +102,7 @@ "enterAPublicKey": "Enter a public key", "enterAValidPublicKey": "Enter a valid public key", "pleaseEnterAValidDaemon": "Please enter a valid daemon", - "checkYourInternetConnection": "Check your internet connection" + "checkYourInternetConnection": "Check your internet connection", + "daemons": "Dämonen", + "theDaemonIsAlreadyExists": "Der Daemon ist bereits vorhanden" } diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index cf52b05..6787089 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -104,5 +104,7 @@ "enterAPublicKey": "Enter a public key", "enterAValidPublicKey": "Enter a valid public key", "pleaseEnterAValidDaemon": "Please enter a valid daemon", - "checkYourInternetConnection": "Check your internet connection" + "checkYourInternetConnection": "Check your internet connection", + "daemons": "Daemons", + "theDaemonIsAlreadyExists": "The Daemon is already exists" } diff --git a/lib/main.dart b/lib/main.dart index 569b69c..b0391fa 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; import 'package:flutter_localizations/flutter_localizations.dart'; @@ -12,13 +14,12 @@ import 'package:master_node_monitor/src/utils/default_settings_migration.dart'; import 'package:master_node_monitor/src/utils/language.dart'; import 'package:master_node_monitor/src/utils/network_service.dart'; import 'package:master_node_monitor/src/utils/router/beldex_router.dart'; -import 'package:master_node_monitor/src/utils/theme/palette.dart'; import 'package:master_node_monitor/src/utils/theme/theme_changer.dart'; import 'package:master_node_monitor/src/utils/theme/themes.dart'; -import 'package:native_updater/native_updater.dart'; import 'package:path_provider/path_provider.dart'; import 'package:provider/provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; +import 'package:upgrader/upgrader.dart'; import 'generated/l10n.dart'; @@ -38,7 +39,7 @@ void main() async { final settingsStore = await SettingsStoreBase.load(sharedPreferences, daemons); - final nodeSyncStore = NodeSyncStore(masterNodes, settingsStore); + final nodeSyncStore = NodeSyncStore(masterNodes: masterNodes, settingsStore: settingsStore); final networkService = NetworkService().controller.stream; @@ -53,7 +54,7 @@ void main() async { Provider(create: (_) => sharedPreferences), Provider(create: (_) => settingsStore), Provider(create: (_) => nodeSyncStore), - StreamProvider(create: (_) => networkService) + StreamProvider(create: (_) => networkService, initialData: NetworkStatus.online) ], child: BeldexMasterNodeApp())); } @@ -71,10 +72,10 @@ class _BeldexMasterNodeAppState extends State { @override void initState() { super.initState(); - checkVersion(context); + //checkVersion(context); } - Future checkVersion(BuildContext context) async { + /*Future checkVersion(BuildContext context) async { Future.delayed(Duration.zero, () { NativeUpdater.displayUpdateAlert( @@ -88,7 +89,7 @@ class _BeldexMasterNodeAppState extends State { iOSAlertTitle: 'Mandatory Update', ); }); - } + }*/ @override Widget build(BuildContext context) { @@ -130,6 +131,12 @@ class MaterialAppWithTheme extends StatelessWidget { locale: Locale(currentLanguage.currentLanguage), onGenerateRoute: (settings) => BeldexRouter.generateRoute( settings, sharedPreferences, settingsStore), - home: isSetup ? WelcomePage() : DashboardPage()); + home: UpgradeAlert( + showLater: false, + showIgnore: false, + dialogStyle: Platform.isIOS + ? UpgradeDialogStyle.cupertino + : UpgradeDialogStyle.material, + child: isSetup ? WelcomePage() : DashboardPage())); } } diff --git a/lib/src/beldex/daemon.dart b/lib/src/beldex/daemon.dart index c4c97a9..b1ae622 100644 --- a/lib/src/beldex/daemon.dart +++ b/lib/src/beldex/daemon.dart @@ -29,7 +29,7 @@ class Daemon extends HiveObject { } Future> sendRPCRequest(String method, - {Map params}) async { + {Map? params}) async { Map resultBody; final requestBody = params != null diff --git a/lib/src/beldex/daemon_list.dart b/lib/src/beldex/daemon_list.dart index 4a498d0..15ba66a 100644 --- a/lib/src/beldex/daemon_list.dart +++ b/lib/src/beldex/daemon_list.dart @@ -7,13 +7,13 @@ Future> loadDefaultNodes() async { final nodesRaw = await rootBundle.loadString('assets/daemon_list.yml'); final nodes = loadYaml(nodesRaw) as YamlList; - return nodes.map((dynamic raw) { + final n = []; + nodes.forEach((dynamic raw) { if (raw is Map) { - return Daemon.fromMap(raw); + n.add(Daemon.fromMap(raw)); } - - return null; - }).toList(); + }); + return n; } Future resetToDefault(Box nodeSource) async { diff --git a/lib/src/beldex/master_node.dart b/lib/src/beldex/master_node.dart index 0db32f4..e9b7a8e 100644 --- a/lib/src/beldex/master_node.dart +++ b/lib/src/beldex/master_node.dart @@ -5,7 +5,7 @@ part 'master_node.g.dart'; @HiveType(typeId: 1) class MasterNode extends HiveObject { - MasterNode(this.name, this.publicKey); + MasterNode({required this.name, required this.publicKey}); MasterNode.fromMap(Map map) : name = (map['name'] ?? '') as String, @@ -20,25 +20,25 @@ class MasterNode extends HiveObject { String publicKey; @HiveField(2) - String operatorAddress; + String? operatorAddress; @HiveField(3) - int registrationHeight; + int registrationHeight = 0; @HiveField(4) - int registrationHfVersion; + int registrationHfVersion = 0; @HiveField(5) - String nodeVersion; + String? nodeVersion; @HiveField(6) - String ipAddress; + String? ipAddress; @HiveField(7) - String storageServerVersion; + String? storageServerVersion; @HiveField(8) - String lokinetVersion; + String? lokinetVersion; MasterNodeInfo get nodeInfo => MasterNodeInfo( operatorAddress, diff --git a/lib/src/beldex/master_node_status.dart b/lib/src/beldex/master_node_status.dart index b4dbfe1..5e96c31 100644 --- a/lib/src/beldex/master_node_status.dart +++ b/lib/src/beldex/master_node_status.dart @@ -57,10 +57,12 @@ class MasterNodeStatus { ]; for (final key in keys) { - try { - map[key] as int; - } catch (e) { - map[key] = (map[key] as double).truncate(); + if(map[key] != null) { + try { + map[key] as int?; + } catch (e) { + map[key] = (map[key] as double?)?.truncate(); + } } } @@ -104,8 +106,8 @@ class MasterNodeInfo { MasterNodeInfo.fromMap(Map map) : operatorAddress = map['operator_address'] as String, - registrationHeight = map['registration_height'] as int, - registrationHfVersion = map['registration_hf_version'] as int, + registrationHeight = (map['registration_height'] ?? 0) as int, + registrationHfVersion = (map['registration_hf_version'] ?? 0) as int, publicKey = map['master_node_pubkey'] as String, ipAddress = map['public_ip'] as String, nodeVersion = (map['master_node_version'] as List).join('.'), @@ -113,14 +115,14 @@ class MasterNodeInfo { (map['storage_server_version'] as List).join('.'), lokinetVersion = (map['belnet_version'] as List).join('.'); - final String operatorAddress; + final String? operatorAddress; final int registrationHeight; final int registrationHfVersion; final String publicKey; - final String ipAddress; - final String nodeVersion; - final String storageServerVersion; - final String lokinetVersion; + final String? ipAddress; + final String? nodeVersion; + final String? storageServerVersion; + final String? lokinetVersion; bool equals(MasterNodeInfo masterNodeInfo) { return masterNodeInfo.operatorAddress == operatorAddress && @@ -139,7 +141,7 @@ class StorageServerStatus { StorageServerStatus.fromMap(Map map) : isReachable = map['storage_server_reachable'] as bool, - timestamp = map['storage_server_reachable_timestamp'] as int; + timestamp = (map['storage_server_reachable_timestamp'] ?? 0) as int; final bool isReachable; final int timestamp; @@ -150,7 +152,7 @@ class LokinetRouterStatus { LokinetRouterStatus.fromMap(Map map) : isReachable = map['belnet_reachable'] as bool, - timestamp = map['belnet_router_reachable_timestamp'] as int; + timestamp = (map['belnet_router_reachable_timestamp'] ?? 0) as int; final bool isReachable; final int timestamp; diff --git a/lib/src/screens/add_new_daemon_page.dart b/lib/src/screens/add_new_daemon_page.dart index b31342b..90bc48f 100644 --- a/lib/src/screens/add_new_daemon_page.dart +++ b/lib/src/screens/add_new_daemon_page.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; import 'package:hive/hive.dart'; import 'package:master_node_monitor/generated/l10n.dart'; import 'package:master_node_monitor/src/beldex/daemon.dart'; @@ -45,9 +46,21 @@ class AddNewDaemonPageBodyState extends State { final daemon = Daemon(uri); bool daemonIsOnline = await daemon.isOnline(); if (daemonIsOnline) { - await daemonSource.add(daemon); - Navigator.of(context).pop(); - Navigator.of(context).pushNamed(BeldexRoutes.settingsDaemon); + final daemonList = daemonSource.values.toList(); + var status = false; + for(var i=0 ; i < daemonList.length;i++){ + if(daemonList[i].uri.contains(uri)){ + status = true; + } + } + if(!status){ + await daemonSource.add(daemon); + Navigator.of(context).pop(); + Navigator.of(context).pushNamed(BeldexRoutes.settingsDaemon); + }else{ + callCommonScaffoldMessenger(S.of(context).theDaemonIsAlreadyExists); + setLoading(false); + } } else { callCommonScaffoldMessenger(S.of(context).pleaseEnterAValidDaemon); setLoading(false); @@ -75,7 +88,7 @@ class AddNewDaemonPageBodyState extends State { backgroundColor: BeldexPalette.red)); } - String _validateNodeAddress(String value) { + String? _validateNodeAddress(String value) { const pattern = '^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\$|^[-0-9a-zA-Z.]{1,253}\$'; final isValid = RegExp(pattern).hasMatch(value); @@ -87,7 +100,7 @@ class AddNewDaemonPageBodyState extends State { } } - String _validateNodePort(String value) { + String? _validateNodePort(String value) { const pattern = '^[0-9]{1,5}'; final regExp = RegExp(pattern); bool isValid = false; @@ -110,7 +123,7 @@ class AddNewDaemonPageBodyState extends State { Future _onBackPressed() async { Navigator.of(context).pop(); Navigator.of(context).pushNamed(BeldexRoutes.settingsDaemon); - return null; + return true; } void setLoading(bool value) { @@ -169,21 +182,24 @@ class AddNewDaemonPageBodyState extends State { Padding( padding: EdgeInsets.only(top: 20), child: BeldexTextField( - backgroundColor: Theme.of(context).primaryTextTheme.overline.color, + backgroundColor: Theme.of(context).primaryTextTheme.overline!.color!, controller: _hostController, hintText: S.of(context).daemon_address, - validator: (value) => _validateNodeAddress(value), + validator: (value) => _validateNodeAddress(value!), ), ), Padding( padding: EdgeInsets.only(top: 20), child: BeldexTextField( - backgroundColor: Theme.of(context).primaryTextTheme.overline.color, + backgroundColor: Theme.of(context).primaryTextTheme.overline!.color!, controller: _portController, + inputFormatters: [ + FilteringTextInputFormatter.allow(RegExp("[0-9]")), + ], keyboardType: TextInputType.numberWithOptions( signed: false, decimal: false), hintText: S.of(context).daemon_port, - validator: (value) => _validateNodePort(value), + validator: (value) => _validateNodePort(value!), ), ), ]), @@ -195,13 +211,13 @@ class AddNewDaemonPageBodyState extends State { isLoading: isLoading, onPressed: () async { setLoading(true); - if (!_formKey.currentState.validate()) return; + if (!_formKey.currentState!.validate()) return; await _saveDaemon(daemonSource,networkStatus); }, text: S.of(context).add_daemon, - color: Theme.of(context).primaryTextTheme.button.backgroundColor, + color: Theme.of(context).primaryTextTheme.button!.backgroundColor!, borderColor: - Theme.of(context).primaryTextTheme.button.decorationColor), + Theme.of(context).primaryTextTheme.button!.decorationColor!), ) ], ), diff --git a/lib/src/screens/add_new_master_node_page.dart b/lib/src/screens/add_new_master_node_page.dart index 4d888f6..5a5004c 100644 --- a/lib/src/screens/add_new_master_node_page.dart +++ b/lib/src/screens/add_new_master_node_page.dart @@ -63,11 +63,11 @@ class AddNewMasterNodePageBodyState extends State { Future _saveMasterNode(Box masterNodeSource, SettingsStore settingsStore, NodeSyncStore nodeSyncStatus, NetworkStatus networkStatus) async { if(networkStatus == NetworkStatus.online) { var checkPublicKey = settingsStore.daemon != null - ? CheckMasterNode(settingsStore.daemon.uri, _publicKeyController.text) + ? CheckMasterNode(settingsStore.daemon!.uri, _publicKeyController.text) : CheckMasterNode("", _publicKeyController.text); bool validPublicKey = await checkPublicKey.isOnline(); if (validPublicKey) { - final masterNode = MasterNode(_nameController.text, _publicKeyController.text); + final masterNode = MasterNode(name: _nameController.text, publicKey: _publicKeyController.text); await masterNodeSource.add(masterNode); await nodeSyncStatus.sync(); ScaffoldMessenger.of(context).showSnackBar(SnackBar( @@ -177,13 +177,13 @@ class AddNewMasterNodePageBodyState extends State { Padding( padding: EdgeInsets.only(top: 20), child: BeldexTextField( - backgroundColor: Theme.of(context).primaryTextTheme.overline.color, + backgroundColor: Theme.of(context).primaryTextTheme.overline!.color!, controller: _nameController, hintText: S.of(context).name, + maxLength: 15, validator: (value) { - final isDuplicate = - _isDuplicateName(value, masterNodeSource); - if (value.isEmpty) { + final isDuplicate = _isDuplicateName(value!, masterNodeSource); + if (value.trim().isEmpty) { setLoading(false); return S.of(context).pleaseEnterAName; } @@ -200,7 +200,7 @@ class AddNewMasterNodePageBodyState extends State { Padding( padding: EdgeInsets.only(top: 20), child: BeldexTextField( - backgroundColor: Theme.of(context).primaryTextTheme.overline.color, + backgroundColor: Theme.of(context).primaryTextTheme.overline!.color!, controller: _publicKeyController, hintText: S.of(context).public_key, suffixIcon: IconButton( @@ -210,12 +210,12 @@ class AddNewMasterNodePageBodyState extends State { icon: Icon(Icons.content_paste_sharp), onPressed: () async { final clipboard = await Clipboard.getData('text/plain'); - if (clipboard.text != null) - _publicKeyController.text = clipboard.text; + if (clipboard?.text != null) + _publicKeyController.text = clipboard!.text!; }), validator: (value) { - final publicKey = value.trim(); - final validPublicKey = isValidPublicKey(publicKey); + final publicKey = value?.trim(); + final validPublicKey = isValidPublicKey(publicKey!); final isDuplicate = _isDuplicatePublicKey(publicKey, masterNodeSource); if (publicKey.isEmpty) { @@ -245,13 +245,13 @@ class AddNewMasterNodePageBodyState extends State { isLoading: isLoading, onPressed: () async { setLoading(true); - if (!_formKey.currentState.validate()) return; + if (!_formKey.currentState!.validate()) return; await _saveMasterNode(masterNodeSource,settingsStore,nodeSyncStatus,networkStatus); }, text: S.of(context).add_master_node, - color: Theme.of(context).primaryTextTheme.button.backgroundColor, + color: Theme.of(context).primaryTextTheme.button!.backgroundColor!, borderColor: - Theme.of(context).primaryTextTheme.button.decorationColor), + Theme.of(context).primaryTextTheme.button!.decorationColor!), ) ], ), diff --git a/lib/src/screens/change_language_page.dart b/lib/src/screens/change_language_page.dart index d9b7c3d..55e4b42 100644 --- a/lib/src/screens/change_language_page.dart +++ b/lib/src/screens/change_language_page.dart @@ -16,8 +16,7 @@ class ChangeLanguagePage extends BasePage { settingsStore.language = currentLanguage; final currentColor = Theme.of(context).selectedRowColor; - final notCurrentColor = - Theme.of(context).accentTextTheme.subtitle1.backgroundColor; + final notCurrentColor = Theme.of(context).textTheme.subtitle1?.backgroundColor; return Container( padding: EdgeInsets.only(top: 10.0, bottom: 10.0), @@ -37,7 +36,7 @@ class ChangeLanguagePage extends BasePage { style: TextStyle( fontSize: 16.0, color: - Theme.of(context).primaryTextTheme.headline6.color), + Theme.of(context).primaryTextTheme.headline6!.color), ), onTap: () async { if (!isCurrent) { diff --git a/lib/src/screens/changelog_page.dart b/lib/src/screens/changelog_page.dart index 42a1021..137be09 100644 --- a/lib/src/screens/changelog_page.dart +++ b/lib/src/screens/changelog_page.dart @@ -14,38 +14,48 @@ class ChangelogPage extends BasePage { Widget body(BuildContext context) { return FutureBuilder( builder: (context, snapshot) { - final changelogs = loadYaml(snapshot.data.toString()) as YamlList; + if(snapshot.data!=null) { + final changelogs = loadYaml(snapshot.data.toString()) as YamlList; - return ListView.separated( - itemBuilder: (BuildContext context, int index) { - final versionTitle = changelogs[index]['version'].toString(); - final versionChanges = changelogs[index]['changes'] as YamlList; - final versionChangesText = versionChanges - .map((dynamic element) => '- $element') - .join('\n'); + return ListView.separated( + itemBuilder: (BuildContext context, int index) { + final versionTitle = changelogs[index]['version'].toString(); + final versionChanges = changelogs[index]['changes'] as YamlList; + final versionChangesText = versionChanges + .map((dynamic element) => '- $element') + .join('\n'); - return Card( - color: Theme.of(context).cardColor, - child: ExpansionTile( - title: Text(versionTitle), - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Expanded( - child: Container( - padding: - EdgeInsets.only(left: 15.0, right: 15.0), - child: Text('$versionChangesText\n'))) - ], - ) - ], - ), - ); - }, - separatorBuilder: (_, __) => Divider( - color: Theme.of(context).dividerTheme.color, height: 1.0), - itemCount: changelogs == null ? 0 : changelogs.length); + return Card( + color: Theme + .of(context) + .cardColor, + child: ExpansionTile( + title: Text(versionTitle), + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Expanded( + child: Container( + padding: + EdgeInsets.only(left: 15.0, right: 15.0), + child: Text('$versionChangesText\n'))) + ], + ) + ], + ), + ); + }, + separatorBuilder: (_, __) => + Divider( + color: Theme + .of(context) + .dividerTheme + .color, height: 1.0), + itemCount: changelogs == null ? 0 : changelogs.length); + }else{ + return Container(); + } }, future: rootBundle.loadString(changelogPath)); } diff --git a/lib/src/screens/dashboard_page.dart b/lib/src/screens/dashboard_page.dart index 71d7b9e..3621205 100644 --- a/lib/src/screens/dashboard_page.dart +++ b/lib/src/screens/dashboard_page.dart @@ -67,7 +67,7 @@ class DashboardPage extends BasePage { nodeSyncStatus.sync(); }, child: Icon(Icons.sync, - color: Theme.of(context).primaryTextTheme.caption.color, + color: Theme.of(context).primaryTextTheme.caption!.color, size: 24), ); }), @@ -82,7 +82,7 @@ class DashboardPage extends BasePage { padding: EdgeInsets.all(0), onPressed: () => Navigator.of(context).pushNamed(BeldexRoutes.settings), child: Icon(Icons.settings_sharp, - color: Theme.of(context).primaryTextTheme.caption.color, + color: Theme.of(context).primaryTextTheme.caption!.color, size: 24)), ); } @@ -113,12 +113,11 @@ class DashboardPageBodyState extends State { Future _saveMasterNode(Box masterNodeSource, SettingsStore settingsStore, NodeSyncStore nodeSyncStatus, NetworkStatus networkStatus) async { if(networkStatus == NetworkStatus.online) { var checkPublicKey = settingsStore.daemon != null - ? CheckMasterNode(settingsStore.daemon.uri, _publicKeyController.text) + ? CheckMasterNode(settingsStore.daemon!.uri, _publicKeyController.text) : CheckMasterNode("", _publicKeyController.text); bool validPublicKey = await checkPublicKey.isOnline(); if (validPublicKey) { - final masterNode = MasterNode( - _nameController.text, _publicKeyController.text); + final masterNode = MasterNode(name: _nameController.text, publicKey: _publicKeyController.text); await masterNodeSource.add(masterNode); await nodeSyncStatus.sync(); ScaffoldMessenger.of(context).showSnackBar(SnackBar( @@ -141,6 +140,7 @@ class DashboardPageBodyState extends State { behavior: SnackBarBehavior.floating, backgroundColor: BeldexPalette .tealWithOpacity)); + setLoading(false); Navigator.of(context).pop(); _nameController.text = ""; _publicKeyController.text = ""; @@ -171,18 +171,19 @@ class DashboardPageBodyState extends State { behavior: SnackBarBehavior.floating, backgroundColor: BeldexPalette.red)); } + StateSetter? _setState; + bool isLoading = false; @override void dispose() { _nameController.dispose(); _publicKeyController.dispose(); + isLoading = false; super.dispose(); } - StateSetter _setState; - bool isLoading = false; void setLoading(bool value) { - _setState(() { + _setState!(() { isLoading = value; }); } @@ -235,7 +236,7 @@ class DashboardPageBodyState extends State { color: Theme .of(context) .primaryTextTheme - .caption + .caption! .color,)), ], ), @@ -252,16 +253,17 @@ class DashboardPageBodyState extends State { backgroundColor: Theme .of(context) .primaryTextTheme - .overline - .color, + .overline! + .color!, controller: _nameController, hintText: S .of(context) .name, + maxLength: 15, validator: (value) { final isDuplicate = - _isDuplicateName(value, masterNodeSource); - if (value.isEmpty) { + _isDuplicateName(value!, masterNodeSource); + if (value.trim().isEmpty) { setLoading(false); return S.of(context).pleaseEnterAName; } @@ -281,8 +283,8 @@ class DashboardPageBodyState extends State { backgroundColor: Theme .of(context) .primaryTextTheme - .overline - .color, + .overline! + .color!, controller: _publicKeyController, hintText: S .of(context) @@ -295,14 +297,14 @@ class DashboardPageBodyState extends State { onPressed: () async { final clipboard = await Clipboard.getData( 'text/plain'); - if (clipboard.text != null) + if (clipboard?.text != null) _publicKeyController.text = - clipboard.text; + clipboard!.text!; }), validator: (value) { - final publicKey = value.trim(); + final publicKey = value?.trim(); final validPublicKey = isValidPublicKey( - publicKey); + publicKey!); final isDuplicate = _isDuplicatePublicKey( publicKey, masterNodeSource); @@ -336,7 +338,7 @@ class DashboardPageBodyState extends State { isLoading: isLoading, onPressed: () async { setLoading(true); - if (!_formKey.currentState.validate()) return; + if (!_formKey.currentState!.validate()) return; await _saveMasterNode(masterNodeSource,settingsStore,nodeSyncStatus,networkStatus); }, text: S @@ -345,14 +347,14 @@ class DashboardPageBodyState extends State { color: Theme .of(context) .primaryTextTheme - .button - .backgroundColor, + .button! + .backgroundColor!, borderColor: Theme .of(context) .primaryTextTheme - .button - .decorationColor), + .button! + .decorationColor!), ) ], ), @@ -412,165 +414,151 @@ class DashboardPageBodyState extends State { } return ListView( - shrinkWrap: true, children: [ - Container( - height: MediaQuery.of(context).size.height, - child: Column( - //shrinkWrap: true, - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceAround, - children: [ - Container( - child: Column( - children: [ - Padding( - padding: EdgeInsets.only(top: 18, bottom: 28), - child: SizedBox( - height: 220.0, - child: Stack( - children: [ - Center( - child: Container( - width: 210, - height: 210, - child: Stack( - children: [ - Container( - width: 210, - height: 210, - margin: EdgeInsets.all(10), - child: PhysicalShape( - color: _isDarkTheme - ? Theme.of(context).backgroundColor - : Colors.white70, - shadowColor: - _isDarkTheme ? Colors.black45 : Colors.grey, - elevation: 13, - clipper: - ShapeBorderClipper(shape: CircleBorder()), - child: CircularProgressIndicator( - strokeWidth: 25, - value: 1, - valueColor: AlwaysStoppedAnimation( - Theme.of(context) - .primaryTextTheme - .bodyText1 - .color), - backgroundColor: Theme.of(context) + Column( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + Column( + children: [ + Padding( + padding: EdgeInsets.only(top: 18, bottom: 28), + child: SizedBox( + height: 220.0, + child: Stack( + children: [ + Center( + child: Container( + width: 210, + height: 210, + child: Stack( + children: [ + Container( + width: 210, + height: 210, + margin: EdgeInsets.all(10), + child: PhysicalShape( + color: _isDarkTheme + ? Theme.of(context).backgroundColor + : Colors.white70, + shadowColor: + _isDarkTheme ? Colors.black45 : Colors.grey, + elevation: 13, + clipper: + ShapeBorderClipper(shape: CircleBorder()), + child: CircularProgressIndicator( + strokeWidth: 25, + value: 1, + valueColor: AlwaysStoppedAnimation( + Theme.of(context) .primaryTextTheme - .bodyText1 - .color, - ), - )), - Center( - child: Container( - width: 190, - height: 190, - child: CircularProgressIndicator( - strokeWidth: 10, - value: operatorStatus.healthPercentage, - valueColor: AlwaysStoppedAnimation( - BeldexPalette.progressIndicator), - backgroundColor: BeldexPalette.red, - ), + .bodyText1! + .color!), + backgroundColor: Theme.of(context) + .primaryTextTheme + .bodyText1! + .color, ), + )), + Center( + child: Container( + width: 190, + height: 190, + child: CircularProgressIndicator( + strokeWidth: 10, + value: operatorStatus.healthPercentage, + valueColor: AlwaysStoppedAnimation( + BeldexPalette.progressIndicator), + backgroundColor: BeldexPalette.red, ), - ], + ), ), - ), + ], ), - Container( - child: Center( - child: Text(operatorStatusText, - textAlign: TextAlign.center, - style: TextStyle( - fontSize: 14.0, color: BeldexPalette.progressCenterText,fontWeight: FontWeight.bold)), - ), - ) - ], + ), ), - ), + Container( + child: Center( + child: Text(operatorStatusText, + textAlign: TextAlign.center, + style: TextStyle( + fontSize: 14.0, color: BeldexPalette.progressCenterText,fontWeight: FontWeight.bold)), + ), + ) + ], ), - Padding( - padding: EdgeInsets.only(bottom: 28), - child: Text( - S.of(context).all_master_nodes( - nodeSyncStatus.networkSize, nodeSyncStatus.currentHeight), - textAlign: TextAlign.center, - style: TextStyle(fontSize: 18.0, color: BeldexPalette.progressCenterText), - )), - ], + ), ), + Padding( + padding: EdgeInsets.only(bottom: 28), + child: Text( + S.of(context).all_master_nodes( + nodeSyncStatus.networkSize, nodeSyncStatus.currentHeight), + textAlign: TextAlign.center, + style: TextStyle(fontSize: 18.0, color: BeldexPalette.progressCenterText), + )), + ], + ), + Card( + color: Theme.of(context).cardColor, + margin: EdgeInsets.only(left: 10,right: 10), + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(10), ), - Expanded( - flex: 2, - child: Card( - color: Theme.of(context).cardColor, - margin: EdgeInsets.only(left: 10,right: 10), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.only(topLeft: Radius.circular(10),topRight: Radius.circular(10)), - ), - child: Column( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Container( - margin:EdgeInsets.only(left: 30,right: 25,top: 20,bottom: 20), - child: Row( - mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - RichText( - text: TextSpan( - children: [ - TextSpan(text: '${S.of(context).your_master_nodes} ', style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold,color: Theme.of(context).primaryTextTheme.caption.backgroundColor)), - TextSpan(text: '${ nodeSyncStatus.nodes != null - ? nodeSyncStatus.nodes.length - : 0}', style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold,color:Theme.of(context).primaryTextTheme.caption.color)), - ], - ), - ), - InkWell(onTap:(){ - showDialogBox(context,_nameController,masterNodeSource,nodeSyncStatus,_publicKeyController,_formKey,settingsStore); - },child: Icon(Icons.add_circle)) - ], + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + Container( + margin:EdgeInsets.only(left: 30,right: 25,top: 20,bottom: 20), + child: Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + RichText( + text: TextSpan( + children: [ + TextSpan(text: '${S.of(context).your_master_nodes} ', style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold,color: Theme.of(context).primaryTextTheme.caption!.backgroundColor)), + TextSpan(text: '${ nodeSyncStatus.nodes != null + ? nodeSyncStatus.nodes.length + : 0}', style: TextStyle(fontSize: 20,fontWeight: FontWeight.bold,color:Theme.of(context).primaryTextTheme.caption!.color)), + ], + ), ), - ), - Flexible( - child: ListView.builder( - shrinkWrap: true, - physics: ScrollPhysics(), - itemCount: nodeSyncStatus.nodes != null - ? nodeSyncStatus.nodes.length - : 0, - itemBuilder: (BuildContext context, int index) { - final nodeStatus = nodeSyncStatus.nodes[index]; - final masterNodeKey = nodeStatus.nodeInfo.publicKey; - final nodeSource = nodes.values.firstWhere((e) { - return e.publicKey == masterNodeKey; - }); - return MasterNodeCard( - nodeSource.name, - masterNodeKey, - nodeStatus.isUnlocking, - nodeStatus.active, - nodeStatus.storageServer.isReachable, - nodeStatus.lokinetRouter.isReachable, - nodeStatus.lastReward.blockHeight, - nodeStatus.earnedDowntimeBlocks, - nodeStatus.lastUptimeProof, - nodeStatus.contribution); - }), - ), - ], + InkWell(onTap:(){ + showDialogBox(context,_nameController,masterNodeSource,nodeSyncStatus,_publicKeyController,_formKey,settingsStore); + },child: Icon(Icons.add_circle)) + ], + ), ), - ), + Container( + margin:EdgeInsets.only(bottom: 150), + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + children: nodeSyncStatus.nodes.map((e) { + final nodeStatus = e;//nodeSyncStatus.nodes[index]; + final masterNodeKey = nodeStatus.nodeInfo.publicKey; + final nodeSource = nodes.values.firstWhere((e) { + return e.publicKey == masterNodeKey; + }); + return MasterNodeCard( + nodeSource.name, + masterNodeKey, + nodeStatus.isUnlocking, + nodeStatus.active, + nodeStatus.storageServer.isReachable, + nodeStatus.lokinetRouter.isReachable, + nodeStatus.lastReward.blockHeight, + nodeStatus.earnedDowntimeBlocks, + nodeStatus.lastUptimeProof, + nodeStatus.contribution); + }).toList() + ), + ), + ], ), - ], - ), + ), + ], ), - ], - ); + ]); }); } } diff --git a/lib/src/screens/details_master_node/page.dart b/lib/src/screens/details_master_node/page.dart index b768a46..2843704 100644 --- a/lib/src/screens/details_master_node/page.dart +++ b/lib/src/screens/details_master_node/page.dart @@ -17,7 +17,7 @@ import 'package:master_node_monitor/src/widgets/primary_button.dart'; import 'package:provider/provider.dart'; class DetailsMasterNodePage extends BasePage { - DetailsMasterNodePage(this.publicKey, {this.nodeName}); + DetailsMasterNodePage(this.publicKey, {required this.nodeName}); final String publicKey; final String nodeName; @@ -28,13 +28,14 @@ class DetailsMasterNodePage extends BasePage { String get title => this.nodeName; - void copyToClipboard(String title, String data) { - Clipboard.setData(ClipboardData(text: data)); - ScaffoldMessenger.of(scaffoldKey.currentContext).showSnackBar( + void copyToClipboard(String title, String? data) { + Clipboard.setData(ClipboardData(text: data!)); + ScaffoldMessenger.of(scaffoldKey.currentContext!).showSnackBar( SnackBar( content: Text(S.current.copied_to_clipboard(title)), backgroundColor: BeldexPalette.tealWithOpacity, duration: Duration(milliseconds: 1500), + behavior: SnackBarBehavior.floating, ), ); } @@ -79,7 +80,7 @@ class DetailsMasterNodePage extends BasePage { child: Padding( padding: EdgeInsets.only(left: 20, right: 20, bottom: 20), child: Card( - elevation: 10, + elevation: 5, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10.0)), child: Container( @@ -163,7 +164,7 @@ class DetailsMasterNodePage extends BasePage { NavListMultiHeader( S.of(context).earned_downtime_blocks, '${node.earnedDowntimeBlocks} / $DECOMMISSION_MAX_CREDIT (${estimateDowntimeHours(node.earnedDowntimeBlocks).toStringAsFixed(2)} ${S.of(context).hours})', - subtitleColor: estimateDowntimeHours(node.earnedDowntimeBlocks) < 2 ? Colors.red : null, + subtitleColor: estimateDowntimeHours(node.earnedDowntimeBlocks) < 2 ? Colors.red : Colors.transparent, ), if (node.active) Center( @@ -279,10 +280,7 @@ class DetailsMasterNodePage extends BasePage { '${contribution.contributors[index].address.toShortAddress()}', style: TextStyle( fontSize: 16, - color: Theme.of(context) - .primaryTextTheme - .headline5 - .color))); + color: Theme.of(context).primaryTextTheme.headline5?.color))); }, ), ListView.builder( @@ -297,10 +295,7 @@ class DetailsMasterNodePage extends BasePage { '${contribution.contributors[index].amount ~/ 1000000000} (${(contribution.contributors[index].amount / 100000000000).toStringAsFixed(2)}%)', style: TextStyle( fontSize: 16, - color: Theme.of(context) - .primaryTextTheme - .headline5 - .color))); + color: Theme.of(context).primaryTextTheme.headline5?.color))); }, ), ]) @@ -346,18 +341,19 @@ class DetailsMasterNodePage extends BasePage { ), ), ), - - Padding( - padding: EdgeInsets.only(top: 25, bottom: 25,left: 20,right: 20), - child: PrimaryButton( - onPressed: () { - Navigator.pushNamed(context, BeldexRoutes.editMasterNode, - arguments: EditMasterNodeArguments(publicKey, true)); - }, - text: S.of(context).title_edit_master_node, - color: Theme.of(context).primaryTextTheme.button.backgroundColor, - borderColor: Theme.of(context).primaryTextTheme.button.decorationColor, - textColor: Colors.white, + Center( + child: Padding( + padding: EdgeInsets.only(top: 25, bottom: 25,left: 20,right: 20), + child: PrimaryButton( + onPressed: () { + Navigator.pushNamed(context, BeldexRoutes.editMasterNode, + arguments: EditMasterNodeArguments(publicKey, true)); + }, + text: S.of(context).title_edit_master_node, + color: Theme.of(context).primaryTextTheme.button!.backgroundColor!, + borderColor: Theme.of(context).primaryTextTheme.button!.decorationColor!, + textColor: Colors.white, + ), ), ), ]); diff --git a/lib/src/screens/edit_daemons.dart b/lib/src/screens/edit_daemons.dart index e6a7512..2a6aeb4 100644 --- a/lib/src/screens/edit_daemons.dart +++ b/lib/src/screens/edit_daemons.dart @@ -14,7 +14,7 @@ import 'package:provider/provider.dart'; class EditDaemonsPage extends BasePage { @override - String get title => S.current.title_edit_daemons; + String get title => S.current.daemons; @override Widget trailing(BuildContext context) { @@ -30,7 +30,7 @@ class EditDaemonsPage extends BasePage { color: Theme .of(context) .primaryTextTheme - .caption + .caption! .color, size: 24)), ); @@ -60,7 +60,7 @@ class EditDaemonsPage extends BasePage { return Observer(builder: (_) { final isCurrent = settingsStore.daemon == null ? false - : daemon.key == settingsStore.daemon.key; + : daemon.key == settingsStore.daemon?.key; final content = Container( child: ListTile( @@ -70,7 +70,7 @@ class EditDaemonsPage extends BasePage { fontSize: 16.0, color: Theme.of(context) .primaryTextTheme - .headline6 + .headline6! .color), ), trailing: FutureBuilder( @@ -95,13 +95,13 @@ class EditDaemonsPage extends BasePage { return isCurrent ? Card( color: isCurrent ? currentColor : notCurrentColor, - elevation: 10, + elevation: 1, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10) ), child: content) : Card( - elevation: 10, + elevation: 1, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10) ), diff --git a/lib/src/screens/edit_master_node_page.dart b/lib/src/screens/edit_master_node_page.dart index 5d2531e..7bd5d9c 100644 --- a/lib/src/screens/edit_master_node_page.dart +++ b/lib/src/screens/edit_master_node_page.dart @@ -14,7 +14,7 @@ import 'package:master_node_monitor/src/widgets/scrollable_with_bottom_section.d import 'package:provider/provider.dart'; class EditMasterNodePage extends BasePage { - EditMasterNodePage(this.publicKey, this.status); + EditMasterNodePage({required this.publicKey, required this.status}); final String publicKey; final bool status; @@ -28,22 +28,22 @@ class EditMasterNodePage extends BasePage { String get title => S.current.title_edit_master_node; @override - Widget body(BuildContext context) => EditMasterNodePageBody(this.publicKey,this.status); + Widget body(BuildContext context) => EditMasterNodePageBody(publicKey: this.publicKey,status: this.status); } class EditMasterNodePageBody extends StatefulWidget { - EditMasterNodePageBody(this.publicKey,this.status); + EditMasterNodePageBody({required this.publicKey,required this.status}); final String publicKey; final bool status; @override State createState() => - EditMasterNodePageBodyState(this.publicKey,this.status); + EditMasterNodePageBodyState(publicKey: this.publicKey,status: this.status); } class EditMasterNodePageBodyState extends State { - EditMasterNodePageBodyState(this.publicKey,this.status); + EditMasterNodePageBodyState({required this.publicKey,required this.status}); final String publicKey; final bool status; @@ -51,20 +51,20 @@ class EditMasterNodePageBodyState extends State { final _formKey = GlobalKey(); bool isLoading = false; - Box masterNodeSource; - MasterNode node; + Box? masterNodeSource; + MasterNode? node; - bool _isDuplicateName(String name) => - masterNodeSource.values.any((element) => element.name == name); + bool? _isDuplicateName(String name) => + masterNodeSource?.values.any((element) => element.name == name); @override void initState() { super.initState(); masterNodeSource = context.read>(); - node = masterNodeSource.values + node = masterNodeSource?.values .firstWhere((e) => e.publicKey == this.publicKey); - _nameController.text = node.name; + _nameController.text = node!.name; } @override @@ -74,14 +74,14 @@ class EditMasterNodePageBodyState extends State { } Future _saveMasterNode() async { - node.name = _nameController.text; - await node.save(); + node?.name = _nameController.text; + await node?.save(); } Future _deleteMasterNode(bool status, NodeSyncStore nodeSyncStore) async { - await node.delete(); + await node?.delete(); - if (masterNodeSource.isEmpty) + if (masterNodeSource!.isEmpty) Navigator.pushNamedAndRemoveUntil(context, BeldexRoutes.welcome, ModalRoute.withName(BeldexRoutes.dashboard)); else { @@ -124,7 +124,7 @@ class EditMasterNodePageBodyState extends State { style: TextStyle( fontSize: 18, decoration: TextDecoration.none, - color: Theme.of(context).primaryTextTheme.caption.color, + color: Theme.of(context).primaryTextTheme.caption!.color, ), ), ), @@ -138,10 +138,10 @@ class EditMasterNodePageBodyState extends State { Navigator.of(context).pop(); }, style: ButtonStyle( - backgroundColor: MaterialStateProperty.all(Theme.of(context).primaryTextTheme.headline3.backgroundColor), + backgroundColor: MaterialStateProperty.all(Theme.of(context).primaryTextTheme.headline3!.backgroundColor!), shape: MaterialStateProperty.all( RoundedRectangleBorder( - side: BorderSide(color: Theme.of(context).primaryTextTheme.headline3.backgroundColor), + side: BorderSide(color: Theme.of(context).primaryTextTheme.headline3!.backgroundColor!), borderRadius: BorderRadius.circular(10.0) )) ), @@ -150,7 +150,7 @@ class EditMasterNodePageBodyState extends State { child: Text("Cancel", style: TextStyle( fontSize: 20.0, - color: Theme.of(context).primaryTextTheme.headline3.color)), + color: Theme.of(context).primaryTextTheme.headline3!.color)), ), )), ButtonTheme( @@ -173,7 +173,7 @@ class EditMasterNodePageBodyState extends State { child: Text("Delete", style: TextStyle( fontSize: 20.0, - color: Theme.of(context).primaryTextTheme.button.color)), + color: Theme.of(context).primaryTextTheme.button!.color)), ), )), ], @@ -201,16 +201,17 @@ class EditMasterNodePageBodyState extends State { margin:EdgeInsets.only(top: 15,bottom: 10), alignment:AlignmentDirectional.centerStart,child: Text(S.of(context).name,style: TextStyle(fontSize:20.0,color: BeldexPalette.progressCenterText),)), BeldexTextField( - backgroundColor:Theme.of(context).primaryTextTheme.headline2.color, + backgroundColor:Theme.of(context).primaryTextTheme.headline2!.color!, controller: _nameController, hintText: S.of(context).name, + maxLength: 15, validator: (value) { - final isDuplicate = _isDuplicateName(value); - if (value.isEmpty) { + final isDuplicate = _isDuplicateName(value!); + if (value.trim().isEmpty) { setLoading(false); return S.of(context).pleaseEnterAName; } - else if (isDuplicate) { + else if (isDuplicate!) { setLoading(false); return S .of(context) @@ -234,7 +235,7 @@ class EditMasterNodePageBodyState extends State { publicKey,//publicKey.toShortAddress(20), style: TextStyle( fontSize: 20, - color: Theme.of(context).primaryTextTheme.headline5.color), + color: Theme.of(context).primaryTextTheme.headline5?.color), ) ], ), @@ -245,7 +246,6 @@ class EditMasterNodePageBodyState extends State { color: BeldexPalette.deleteButton, borderColor: BeldexPalette.deleteButton, textColor: Colors.white, - ), ]), ), @@ -254,7 +254,7 @@ class EditMasterNodePageBodyState extends State { isLoading:isLoading, onPressed: () async { setLoading(true); - if (!_formKey.currentState.validate()) return; + if (!_formKey.currentState!.validate()) return; await _saveMasterNode(); await nodeSyncStore.sync(); ScaffoldMessenger.of(context).showSnackBar(SnackBar( @@ -275,8 +275,8 @@ class EditMasterNodePageBodyState extends State { Navigator.pop(context); }, text: S.of(context).save_master_node, - color: Theme.of(context).primaryTextTheme.button.backgroundColor, - borderColor: Theme.of(context).primaryTextTheme.button.decorationColor), + color: Theme.of(context).primaryTextTheme.button!.backgroundColor!, + borderColor: Theme.of(context).primaryTextTheme.button!.decorationColor!), ); } } diff --git a/lib/src/screens/edit_master_nodes.dart b/lib/src/screens/edit_master_nodes.dart index 0c3eadf..98a3524 100644 --- a/lib/src/screens/edit_master_nodes.dart +++ b/lib/src/screens/edit_master_nodes.dart @@ -25,7 +25,7 @@ class EditMasterNodesPage extends BasePage { onPressed: () => Navigator.of(context).pushNamed(BeldexRoutes.addMasterNode,arguments: false), child: Icon(Icons.add_sharp, - color: Theme.of(context).primaryTextTheme.caption.color, + color: Theme.of(context).primaryTextTheme.caption!.color, size: 24)), ); } @@ -78,7 +78,7 @@ class EditMasterNodesPageBodyState extends State { style: TextStyle( fontSize: 18, decoration: TextDecoration.none, - color: Theme.of(context).primaryTextTheme.caption.color, + color: Theme.of(context).primaryTextTheme.caption!.color, ), ), ), @@ -92,10 +92,10 @@ class EditMasterNodesPageBodyState extends State { Navigator.of(context).pop(); }, style: ButtonStyle( - backgroundColor: MaterialStateProperty.all(Theme.of(context).primaryTextTheme.headline3.backgroundColor), + backgroundColor: MaterialStateProperty.all(Theme.of(context).primaryTextTheme.headline3!.backgroundColor!), shape: MaterialStateProperty.all( RoundedRectangleBorder( - side: BorderSide(color: Theme.of(context).primaryTextTheme.headline3.backgroundColor), + side: BorderSide(color: Theme.of(context).primaryTextTheme.headline3!.backgroundColor!), borderRadius: BorderRadius.circular(10.0) )) ), @@ -104,7 +104,7 @@ class EditMasterNodesPageBodyState extends State { child: Text("Cancel", style: TextStyle( fontSize: 20.0, - color: Theme.of(context).primaryTextTheme.headline3.color)), + color: Theme.of(context).primaryTextTheme.headline3!.color)), ), )), ButtonTheme( @@ -127,7 +127,7 @@ class EditMasterNodesPageBodyState extends State { child: Text("Delete", style: TextStyle( fontSize: 20.0, - color: Theme.of(context).primaryTextTheme.button.color)), + color: Theme.of(context).primaryTextTheme.button!.color)), ), )), ], @@ -165,7 +165,7 @@ class EditMasterNodesPageBodyState extends State { child: ListTile( leading: Icon(CupertinoIcons.chart_bar_fill,color: Theme.of(context) .primaryTextTheme - .headline6 + .headline6! .color,), trailing: InkWell( onTap: () { @@ -183,7 +183,7 @@ class EditMasterNodesPageBodyState extends State { fontWeight: FontWeight.bold, color: Theme.of(context) .primaryTextTheme - .headline6 + .headline6! .color), ), SizedBox(height: 10,), @@ -203,7 +203,7 @@ class EditMasterNodesPageBodyState extends State { return Card( color: Theme.of(context).cardColor, - elevation: 10, + elevation: 1, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(10) ), diff --git a/lib/src/screens/faq_page.dart b/lib/src/screens/faq_page.dart index b45393a..457bb7c 100644 --- a/lib/src/screens/faq_page.dart +++ b/lib/src/screens/faq_page.dart @@ -21,7 +21,7 @@ class FaqPage extends BasePage { final itemChild = faqItems[index]['answer'].toString(); return Theme( - data: Theme.of(context).copyWith(accentColor: Colors.green,textSelectionTheme: TextSelectionThemeData( + data: Theme.of(context).copyWith(hintColor: Colors.green,textSelectionTheme: TextSelectionThemeData( selectionColor: Colors.green )), child: Card( diff --git a/lib/src/screens/settings_page.dart b/lib/src/screens/settings_page.dart index e0b8cec..d7ac43d 100644 --- a/lib/src/screens/settings_page.dart +++ b/lib/src/screens/settings_page.dart @@ -23,11 +23,10 @@ class SettingsPage extends BasePage { Future _setDashboardOrderBy(BuildContext context) async { final settingsStore = context.read(); - final selectedDashboardOrderBy = - await presentPicker(context, DashboardOrderBy.values); + final selectedDashboardOrderBy = await presentPicker(context, DashboardOrderBy.values); if (selectedDashboardOrderBy != null) { - await settingsStore.setDashboardOrderBy(selectedDashboardOrderBy); + await settingsStore.setDashboardOrderBy(selectedDashboardOrderBy as DashboardOrderBy); } } @@ -43,18 +42,18 @@ class SettingsPage extends BasePage { Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Card( - elevation: 5, + elevation: 1, color: Theme.of(context).cardColor, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20.0)), child: Column( children: [ NavListTrailing( - leading: SvgPicture.asset('assets/images/daemon.svg',color: Theme.of(context).primaryTextTheme.headline6.color,width: 25,height: 25,), + leading: SvgPicture.asset('assets/images/daemon.svg',color: Theme.of(context).primaryTextTheme.headline6!.color,width: 25,height: 25,), text: S.of(context).settings_daemon, trailing: Observer(builder: (_) { return Text( - settingsStore.daemon == null ? '' : settingsStore.daemon.hostname.substring(0,11), + settingsStore.daemon == null ? '' : settingsStore.daemon!.hostname.substring(0,11), textAlign: TextAlign.right, style: TextStyle( fontSize: 16.0, @@ -66,13 +65,13 @@ class SettingsPage extends BasePage { Navigator.of(context).pushNamed(BeldexRoutes.settingsDaemon), ), NavListArrow( - leading: SvgPicture.asset('assets/images/master_nodes.svg',color: Theme.of(context).primaryTextTheme.headline6.color,width: 20,height: 20,), + leading: SvgPicture.asset('assets/images/master_nodes.svg',color: Theme.of(context).primaryTextTheme.headline6!.color,width: 20,height: 20,), text: S.of(context).settings_master_nodes, onTap: () => Navigator.of(context).pushNamed(BeldexRoutes.settingsMasterNode), ), NavListTrailing( - leading: SvgPicture.asset('assets/images/order.svg',color: Theme.of(context).primaryTextTheme.headline6.color,width: 20,height: 20,), + leading: SvgPicture.asset('assets/images/order.svg',color: Theme.of(context).primaryTextTheme.headline6!.color,width: 20,height: 20,), text: S.of(context).settings_order_by, trailing: Observer(builder: (_) { return Text( @@ -94,7 +93,7 @@ class SettingsPage extends BasePage { Padding( padding: EdgeInsets.only(left: 10, right: 10), child: Card( - elevation: 5, + elevation: 1, color: Theme.of(context).cardColor, shape: RoundedRectangleBorder( borderRadius: BorderRadius.circular(20.0)), @@ -102,7 +101,7 @@ class SettingsPage extends BasePage { children: [ Observer(builder: (_) { return NavListTrailing( - leading: SvgPicture.asset('assets/images/theme.svg',color: Theme.of(context).primaryTextTheme.headline6.color,width: 23,height: 23,), + leading: SvgPicture.asset('assets/images/theme.svg',color: Theme.of(context).primaryTextTheme.headline6!.color,width: 23,height: 23,), text: settingsStore.isDarkTheme ? S.of(context).settings_light_theme : S.of(context).settings_dark_theme, @@ -119,27 +118,27 @@ class SettingsPage extends BasePage { Navigator.of(context).pushNamed(BeldexRoutes.settingsLanguage), ),*/ NavListArrow( - leading: SvgPicture.asset('assets/images/change_log.svg',color: Theme.of(context).primaryTextTheme.headline6.color,width: 25,height: 25,), + leading: SvgPicture.asset('assets/images/change_log.svg',color: Theme.of(context).primaryTextTheme.headline6!.color,width: 25,height: 25,), text: S.of(context).title_changelog, onTap: () => Navigator.of(context).pushNamed(BeldexRoutes.settingsChangelog), ), NavListArrow( - leading: SvgPicture.asset('assets/images/faq.svg',color: Theme.of(context).primaryTextTheme.headline6.color,width: 25,height: 25,), + leading: SvgPicture.asset('assets/images/faq.svg',color: Theme.of(context).primaryTextTheme.headline6!.color,width: 25,height: 25,), text: S.of(context).title_faq, onTap: (){ Navigator.of(context).pushNamed(BeldexRoutes.faq); }, ), NavListArrow( - leading: SvgPicture.asset('assets/images/terms_and_conditions.svg',color: Theme.of(context).primaryTextTheme.headline6.color,width: 25,height: 25,), + leading: SvgPicture.asset('assets/images/terms_and_conditions.svg',color: Theme.of(context).primaryTextTheme.headline6!.color,width: 25,height: 25,), text: S.of(context).termsConditions, onTap: (){ Navigator.of(context).pushNamed(BeldexRoutes.termsAndConditions); }, ), NavListArrow( - leading: SvgPicture.asset('assets/images/help.svg',color: Theme.of(context).primaryTextTheme.headline6.color,width: 23,height: 23,), + leading: SvgPicture.asset('assets/images/help.svg',color: Theme.of(context).primaryTextTheme.headline6!.color,width: 23,height: 23,), text: S.of(context).help, onTap: (){ _launchUrl(Uri.parse('mailto:support@beldex.io')); @@ -151,7 +150,7 @@ class SettingsPage extends BasePage { ), Padding( padding: EdgeInsets.only(left: 35, top: 10), - child: Text("Version 1.0.1",style: TextStyle(fontSize: 16.0,color: BeldexPalette.progressCenterText),), + child: Text("Version 1.0.2",style: TextStyle(fontSize: 16.0,color: BeldexPalette.progressCenterText),), ) ], ); diff --git a/lib/src/screens/welcome_page.dart b/lib/src/screens/welcome_page.dart index bb9e112..1003a61 100644 --- a/lib/src/screens/welcome_page.dart +++ b/lib/src/screens/welcome_page.dart @@ -35,7 +35,7 @@ class WelcomePage extends StatelessWidget { style: TextStyle( fontSize: 30.0, fontWeight: FontWeight.bold, - color: Theme.of(context).primaryTextTheme.headline6.color + color: Theme.of(context).primaryTextTheme.headline6!.color ), textScaleFactor: textScaleFactor, textAlign: TextAlign.center, @@ -47,7 +47,7 @@ class WelcomePage extends StatelessWidget { S.of(context).welcome_first_line, style: TextStyle( fontSize: 22.0, - color:Theme.of(context).primaryTextTheme.subtitle2.color + color:Theme.of(context).primaryTextTheme.subtitle2!.color ), textScaleFactor: textScaleFactor, textAlign: TextAlign.center, @@ -58,7 +58,7 @@ class WelcomePage extends StatelessWidget { S.of(context).add_node_to_get_started, style: TextStyle( fontSize: 22.0, - color: Theme.of(context).primaryTextTheme.subtitle1.color, + color: Theme.of(context).primaryTextTheme.subtitle1!.color, ), textScaleFactor: textScaleFactor, textAlign: TextAlign.center, @@ -75,9 +75,9 @@ class WelcomePage extends StatelessWidget { }, text: S.of(context).add_master_node, color: - Theme.of(context).primaryTextTheme.button.backgroundColor, + Theme.of(context).primaryTextTheme.button!.backgroundColor!, borderColor: - Theme.of(context).primaryTextTheme.button.decorationColor), + Theme.of(context).primaryTextTheme.button!.decorationColor!), ])) ]); } diff --git a/lib/src/stores/node_sync_store.dart b/lib/src/stores/node_sync_store.dart index a1e92b4..40711b1 100644 --- a/lib/src/stores/node_sync_store.dart +++ b/lib/src/stores/node_sync_store.dart @@ -9,17 +9,17 @@ part 'node_sync_store.g.dart'; class NodeSyncStore = NodeSyncStoreBase with _$NodeSyncStore; abstract class NodeSyncStoreBase with Store { - NodeSyncStoreBase(this._masterNodes, this._settingsStore) : isSyncing = true; + NodeSyncStoreBase({required this.masterNodes, required this.settingsStore}) : isSyncing = true; @action Future sync() async { isSyncing = true; final masterNodePublicKeys = - _masterNodes.values.map((e) => e.publicKey).toList(); + masterNodes.values.map((e) => e.publicKey).toList(); try { final resultData = - await _settingsStore.daemon.sendRPCRequest('get_master_nodes'); - final results = (resultData['result']['master_node_states'] as List); + await settingsStore.daemon?.sendRPCRequest('get_master_nodes'); + final results = (resultData!['result']['master_node_states'] as List); currentHeight = resultData['result']['height'] as int; networkSize = results.where((element) => element['active'] as bool).length; @@ -29,11 +29,11 @@ abstract class NodeSyncStoreBase with Store { nodes = []; for (final result in myNodes) { final masterNodeStatus = MasterNodeStatus.load(result); - final masterNode = _masterNodes.values.firstWhere((element) => + final masterNode = masterNodes.values.firstWhere((element) => element.publicKey == masterNodeStatus.nodeInfo.publicKey); if (!masterNode.nodeInfo.equals(masterNodeStatus.nodeInfo)) { masterNode.nodeInfo = masterNodeStatus.nodeInfo; - await _masterNodes.put(masterNode.key, masterNode); + await masterNodes.put(masterNode.key, masterNode); } nodes.add(masterNodeStatus); } @@ -70,15 +70,15 @@ abstract class NodeSyncStoreBase with Store { bool isSyncing; @observable - int currentHeight; + late int currentHeight; @observable - int networkSize; + late int networkSize; @observable - List nodes; + List nodes = []; - SettingsStore _settingsStore; + SettingsStore settingsStore; - Box _masterNodes; + Box masterNodes; } diff --git a/lib/src/stores/settings_store.dart b/lib/src/stores/settings_store.dart index 7ed5555..b023dda 100644 --- a/lib/src/stores/settings_store.dart +++ b/lib/src/stores/settings_store.dart @@ -12,8 +12,8 @@ part 'settings_store.g.dart'; class SettingsStore = SettingsStoreBase with _$SettingsStore; abstract class SettingsStoreBase with Store { - SettingsStoreBase(this._sharedPreferences, this._daemons, this.isDarkTheme, - this.languageCode, this.dashboardOrderBy); + SettingsStoreBase({required this.sharedPreferences, required this.daemons, required this.isDarkTheme, + required this.languageCode, required this.dashboardOrderBy}); static const currentNodeIdKey = 'current_node_id'; static const currentLanguageCodeKey = 'language_code'; @@ -28,12 +28,10 @@ abstract class SettingsStoreBase with Store { sharedPreferences.getString(currentLanguageCodeKey) ?? await Language.localeDetection(); - final savedDashboardOrderBy = DashboardOrderBy.parse( - sharedPreferences.getString(currentDashboardOrderBy)) ?? - DashboardOrderBy.NAME; + final savedDashboardOrderBy = DashboardOrderBy.parse(sharedPreferences.getString(currentDashboardOrderBy) ?? 'Name') ?? DashboardOrderBy.NAME; - final store = SettingsStore(sharedPreferences, daemons, savedDarkTheme, - savedLanguageCode, savedDashboardOrderBy); + final store = SettingsStore(sharedPreferences: sharedPreferences, daemons: daemons, isDarkTheme: savedDarkTheme, + languageCode: savedLanguageCode, dashboardOrderBy: savedDashboardOrderBy); store.loadSettings(); return store; @@ -46,53 +44,53 @@ abstract class SettingsStoreBase with Store { String languageCode; @observable - Daemon daemon; + Daemon? daemon; @observable DashboardOrderBy dashboardOrderBy; - Box _daemons; + Box daemons; - SharedPreferences _sharedPreferences; + SharedPreferences sharedPreferences; - ThemeChanger themeChanger; + ThemeChanger? themeChanger; - Language language; + Language? language; void loadSettings() { daemon = _fetchCurrentDaemon(); } - Daemon _fetchCurrentDaemon() { - final id = _sharedPreferences.getInt(currentNodeIdKey) ?? 0; - return _daemons.get(id); + Daemon? _fetchCurrentDaemon() { + final id = sharedPreferences.getInt(currentNodeIdKey) ?? 0; + return daemons.get(id); } @action Future toggleDarkTheme() async { isDarkTheme = !isDarkTheme; if (themeChanger != null) - themeChanger.theme = isDarkTheme ? Themes.darkTheme : Themes.lightTheme; - await _sharedPreferences.setBool(currentDarkThemeKey, isDarkTheme); + themeChanger?.theme = isDarkTheme ? Themes.darkTheme : Themes.lightTheme; + await sharedPreferences.setBool(currentDarkThemeKey, isDarkTheme); } @action Future setLanguageCode(String newLanguageCode) async { languageCode = newLanguageCode; - if (language != null) language.currentLanguage = languageCode; - await _sharedPreferences.setString(currentLanguageCodeKey, languageCode); + if (language != null) language?.currentLanguage = languageCode; + await sharedPreferences.setString(currentLanguageCodeKey, languageCode); } @action Future setDaemon(Daemon newDaemon) async { daemon = newDaemon; - await _sharedPreferences.setInt(currentNodeIdKey, daemon.key); + await sharedPreferences.setInt(currentNodeIdKey, daemon?.key); } @action Future setDashboardOrderBy(DashboardOrderBy newDashboardSortOrder) async { dashboardOrderBy = newDashboardSortOrder; - await _sharedPreferences.setString( + await sharedPreferences.setString( currentDashboardOrderBy, dashboardOrderBy.name); } } diff --git a/lib/src/utils/default_settings_migration.dart b/lib/src/utils/default_settings_migration.dart index 6c949e8..44554ca 100644 --- a/lib/src/utils/default_settings_migration.dart +++ b/lib/src/utils/default_settings_migration.dart @@ -42,8 +42,8 @@ Future defaultSettingsMigration(int version, } Future changeCurrentNodeToDefault( - {@required SharedPreferences sharedPreferences, - @required Box nodes}) async { + {required SharedPreferences sharedPreferences, + required Box nodes}) async { final timeZone = DateTime.now().timeZoneOffset.inHours; var nodeUri = ''; diff --git a/lib/src/utils/language.dart b/lib/src/utils/language.dart index a0ad447..8d1aaef 100644 --- a/lib/src/utils/language.dart +++ b/lib/src/utils/language.dart @@ -18,7 +18,7 @@ class Language with ChangeNotifier { static Future localeDetection() async { var locale = await Devicelocale.currentLocale; - locale = Intl.shortLocale(locale); + locale = Intl.shortLocale(locale!); return languages.keys.contains(locale) ? locale : 'en'; } diff --git a/lib/src/utils/router/beldex_router.dart b/lib/src/utils/router/beldex_router.dart index 32bf432..c8201df 100644 --- a/lib/src/utils/router/beldex_router.dart +++ b/lib/src/utils/router/beldex_router.dart @@ -35,8 +35,8 @@ class BeldexRouter { case BeldexRoutes.editMasterNode: return CupertinoPageRoute( builder: (_) { - EditMasterNodeArguments argument = args; - return EditMasterNodePage(argument.publicKey, argument.status);}); + EditMasterNodeArguments argument = args as EditMasterNodeArguments; + return EditMasterNodePage(publicKey: argument.publicKey, status: argument.status);}); case BeldexRoutes.addDaemon: return CupertinoPageRoute(builder: (_) => AddNewDaemonPage()); @@ -61,8 +61,8 @@ class BeldexRouter { case BeldexRoutes.detailsMasterNode: return CupertinoPageRoute(builder: (_) { - List args = settings.arguments; - String nodeName = args.length > 1 ? args[1] : null; + List args = settings.arguments as List; + String nodeName = args.length > 1 ? args[1] : ""; return DetailsMasterNodePage(args.first, nodeName: nodeName); }); @@ -77,7 +77,7 @@ class BeldexRouter { builder: (_) => Scaffold( body: Center( child: - Text(S.current.error_router_no_route(settings.name))), + Text(S.current.error_router_no_route(settings.name as Object))), )); } } diff --git a/lib/src/utils/theme/themes.dart b/lib/src/utils/theme/themes.dart index 7fb87eb..71a016b 100644 --- a/lib/src/utils/theme/themes.dart +++ b/lib/src/utils/theme/themes.dart @@ -38,32 +38,37 @@ class Themes { selectedRowColor: BeldexPalette.tealWithOpacity, dividerColor: Palette.lightGrey, dividerTheme: DividerThemeData(color: Palette.lightGrey), - accentTextTheme: TextTheme( + textTheme: TextTheme( headline6: TextStyle( - color: Colors.grey, backgroundColor: Palette.creamyGrey), + color: Colors.grey, + backgroundColor: Colors.transparent), caption: TextStyle( color: Palette.wildDarkBlue, - backgroundColor: Palette.brightBlue, + backgroundColor:Colors.transparent, decorationColor: Palette.cloudySky), button: TextStyle( - backgroundColor: Palette.indigo, + backgroundColor: Colors.transparent,//Palette.indigo, decorationColor: Palette.deepIndigo), subtitle2: TextStyle( - color: BeldexPalette.black, backgroundColor: Palette.lightLavender), + color: BeldexPalette.black, + backgroundColor: Colors.transparent), headline5: TextStyle( color: Palette.lightGrey2, - backgroundColor: Colors.white, + backgroundColor: Colors.transparent,//Colors.white, decorationColor: Palette.darkGrey, ), subtitle1: TextStyle( - color: Palette.lightBlue, backgroundColor: Palette.lightGrey2), + color: Palette.lightBlue, + backgroundColor: Colors.transparent//Palette.lightGrey2 + ), overline: TextStyle( color: BeldexPalette.black, - backgroundColor: BeldexPalette.blue, + backgroundColor: Colors.transparent, decorationColor: Palette.manatee)), buttonTheme: ButtonThemeData(buttonColor: Palette.darkGrey), primaryIconTheme: IconThemeData(color: Colors.white), - accentIconTheme: IconThemeData(color: Colors.white)); + //accentIconTheme: IconThemeData(color: Colors.white) + ); static final ThemeData darkTheme = ThemeData( fontFamily: 'Lato', @@ -98,34 +103,35 @@ class Themes { dividerColor: PaletteDark.darkThemeDarkGrey, dividerTheme: DividerThemeData(color: PaletteDark.darkThemeGreyWithOpacity), - accentTextTheme: TextTheme( + textTheme: TextTheme( headline6: TextStyle( color: PaletteDark.darkThemeTitle, - backgroundColor: PaletteDark.darkThemePinDigitButton), + backgroundColor: Colors.transparent), caption: TextStyle( color: PaletteDark.darkThemeTitleViolet, - backgroundColor: PaletteDark.darkThemeBlueButton, + backgroundColor: Colors.transparent, decorationColor: PaletteDark.darkThemeBlueButtonBorder), button: TextStyle( - backgroundColor: PaletteDark.darkThemeIndigoButton, + backgroundColor: Colors.transparent,//PaletteDark.darkThemeIndigoButton, decorationColor: PaletteDark.darkThemeIndigoButtonBorder), subtitle2: TextStyle( - color: PaletteDark.wildDarkBlueWithOpacity, + color: Colors.transparent, backgroundColor: PaletteDark.darkThemeDarkGrey), headline5: TextStyle( color: PaletteDark.darkThemeBlack, - backgroundColor: PaletteDark.darkThemeMidGrey, + backgroundColor: Colors.transparent,//PaletteDark.darkThemeMidGrey, decorationColor: PaletteDark.darkThemeDarkGrey, ), subtitle1: TextStyle( color: Palette.wildDarkBlue, - backgroundColor: PaletteDark.darkThemeMidGrey), + backgroundColor: Colors.transparent//PaletteDark.darkThemeMidGrey + ), overline: TextStyle( color: PaletteDark.darkThemeTitle, - backgroundColor: PaletteDark.darkThemeGrey, + backgroundColor: Colors.transparent, decorationColor: PaletteDark.darkThemeTitle)), buttonTheme: ButtonThemeData(buttonColor: PaletteDark.darkThemePinButton), primaryIconTheme: IconThemeData(color: PaletteDark.darkThemeViolet), - accentIconTheme: - IconThemeData(color: PaletteDark.darkThemeIndigoButtonBorder)); + //accentIconTheme: IconThemeData(color: PaletteDark.darkThemeIndigoButtonBorder) + ); } diff --git a/lib/src/widgets/base_page.dart b/lib/src/widgets/base_page.dart index 88cfe0f..9832d0a 100644 --- a/lib/src/widgets/base_page.dart +++ b/lib/src/widgets/base_page.dart @@ -11,7 +11,7 @@ import 'beldex/beldex_app_bar.dart'; enum AppBarStyle { regular, withShadow } abstract class BasePage extends StatelessWidget { - String get title => null; + String? get title => null; bool get isModalBackButton => false; @@ -27,8 +27,8 @@ abstract class BasePage extends StatelessWidget { final GlobalKey scaffoldKey = new GlobalKey(); - Widget leading(BuildContext context) { - if (ModalRoute.of(context).isFirst) { + Widget? leading(BuildContext context) { + if (ModalRoute.of(context)!.isFirst) { return null; } @@ -50,21 +50,23 @@ abstract class BasePage extends StatelessWidget { ); } - Widget middle(BuildContext context) { + Widget? middle(BuildContext context) { return title == null ? null : Text( - title, + title!, style: TextStyle( fontSize: 25.0, fontWeight: FontWeight.bold, - color: Theme.of(context).primaryTextTheme.headline6.color), + color: Theme.of(context).primaryTextTheme.headline6!.color), ); } - Widget trailing(BuildContext context) => null; + Widget? trailing(BuildContext context) => SizedBox( + width: 30,); - Widget floatingActionButton(BuildContext context) => null; + Widget? floatingActionButton(BuildContext context) => SizedBox( + width: 30,); ObstructingPreferredSizeWidget appBar(BuildContext context) { final _themeChanger = Provider.of(context); @@ -73,30 +75,30 @@ abstract class BasePage extends StatelessWidget { switch (appBarStyle) { case AppBarStyle.regular: return BeldexAppBar( + leading(context)!, + middle(context)!, + trailing(context)!, context: context, - leading: leading(context), - middle: middle(context), - trailing: trailing(context), backgroundColor: _isDarkTheme ? Theme.of(context).backgroundColor : backgroundColor); case AppBarStyle.withShadow: return BeldexAppBar.withShadow( + leading(context)!, + middle(context)!, + trailing(context)!, context: context, - leading: leading(context), - middle: middle(context), - trailing: trailing(context), backgroundColor: _isDarkTheme ? Theme.of(context).backgroundColor : backgroundColor); default: return BeldexAppBar( + leading(context)!, + middle(context)!, + trailing(context)!, context: context, - leading: leading(context), - middle: middle(context), - trailing: trailing(context), backgroundColor: _isDarkTheme ? Theme.of(context).backgroundColor : backgroundColor); @@ -105,7 +107,7 @@ abstract class BasePage extends StatelessWidget { Widget body(BuildContext context); - Widget bottomNavigationBar(BuildContext context) => null; + Widget? bottomNavigationBar(BuildContext context) => null; @override Widget build(BuildContext context) { diff --git a/lib/src/widgets/beldex/beldex_app_bar.dart b/lib/src/widgets/beldex/beldex_app_bar.dart index 212c053..b382c7c 100644 --- a/lib/src/widgets/beldex/beldex_app_bar.dart +++ b/lib/src/widgets/beldex/beldex_app_bar.dart @@ -7,11 +7,11 @@ import 'package:provider/provider.dart'; class BeldexAppBar extends StatelessWidget implements ObstructingPreferredSizeWidget { factory BeldexAppBar( - {BuildContext context, Widget leading, Widget middle, Widget trailing, - Color backgroundColor}) { + {required BuildContext context, + required Color backgroundColor}) { final _themeChanger = Provider.of(context); final _isDarkTheme = _themeChanger.theme == Themes.darkTheme; @@ -25,11 +25,11 @@ class BeldexAppBar extends StatelessWidget } factory BeldexAppBar.withShadow( - {BuildContext context, Widget leading, Widget middle, Widget trailing, - Color backgroundColor}) { + {required BuildContext context, + required Color backgroundColor}) { final _themeChanger = Provider.of(context); final _isDarkTheme = _themeChanger.theme == Themes.darkTheme; @@ -57,18 +57,18 @@ class BeldexAppBar extends StatelessWidget {this.leading, this.middle, this.trailing, - this.backgroundColor, + required this.backgroundColor, this.decoration, this.height = _height}); static const _originalHeight = 44.0; // iOS nav bar height static const _height = 60.0; - final Widget leading; - final Widget middle; - final Widget trailing; + final Widget? leading; + final Widget? middle; + final Widget? trailing; final Color backgroundColor; - final BoxDecoration decoration; + final BoxDecoration? decoration; final double height; @override diff --git a/lib/src/widgets/beldex/beldex_dialog.dart b/lib/src/widgets/beldex/beldex_dialog.dart index 72803ab..206aefe 100644 --- a/lib/src/widgets/beldex/beldex_dialog.dart +++ b/lib/src/widgets/beldex/beldex_dialog.dart @@ -3,7 +3,7 @@ import 'dart:ui'; import 'package:flutter/material.dart'; Future showBeldexDialog(BuildContext context, Widget child, - {void Function(BuildContext context) onDismiss}) { + {required void Function(BuildContext context) onDismiss}) { return showDialog( builder: (_) => BeldexDialog(body: child, onDismiss: onDismiss), context: context, @@ -11,16 +11,16 @@ Future showBeldexDialog(BuildContext context, Widget child, } class BeldexDialog extends StatelessWidget { - BeldexDialog({this.body, this.onDismiss}); + BeldexDialog({required this.body, this.onDismiss}); - final void Function(BuildContext context) onDismiss; + final void Function(BuildContext context)? onDismiss; final Widget body; void _onDismiss(BuildContext context) { if (onDismiss == null) { Navigator.of(context).pop(); } else { - onDismiss(context); + onDismiss!(context); } } diff --git a/lib/src/widgets/beldex/beldex_text_field.dart b/lib/src/widgets/beldex/beldex_text_field.dart index 83c83ea..e96b8d0 100644 --- a/lib/src/widgets/beldex/beldex_text_field.dart +++ b/lib/src/widgets/beldex/beldex_text_field.dart @@ -5,26 +5,28 @@ import 'package:master_node_monitor/src/utils/theme/palette.dart'; class BeldexTextField extends StatelessWidget { BeldexTextField( {this.enabled = true, - this.hintText, + required this.hintText, this.keyboardType, - this.controller, + required this.controller, this.validator, this.inputFormatters, this.prefixIcon, this.suffixIcon, this.focusNode, - this.backgroundColor}); + required this.backgroundColor, + this.maxLength}); final bool enabled; final String hintText; - final TextInputType keyboardType; + final TextInputType? keyboardType; final TextEditingController controller; - final String Function(String) validator; - final List inputFormatters; - final Widget prefixIcon; - final Widget suffixIcon; - final FocusNode focusNode; + final String? Function(String?)? validator; + final List? inputFormatters; + final Widget? prefixIcon; + final Widget? suffixIcon; + final FocusNode? focusNode; final Color backgroundColor; + final int? maxLength; @override Widget build(BuildContext context) { @@ -35,9 +37,10 @@ class BeldexTextField extends StatelessWidget { focusNode: focusNode, style: TextStyle( fontSize: 18.0, - color: Theme.of(context).accentTextTheme.overline.color), + color: Theme.of(context).textTheme.overline!.color), keyboardType: keyboardType, inputFormatters: inputFormatters, + maxLength: maxLength, decoration: InputDecoration( filled: true, fillColor: backgroundColor, @@ -63,7 +66,8 @@ class BeldexTextField extends StatelessWidget { focusedErrorBorder: OutlineInputBorder( borderRadius: BorderRadius.circular(10), borderSide: BorderSide(color: BeldexPalette.red, width: 1.0)), - errorStyle: TextStyle(color: BeldexPalette.red)), + errorStyle: TextStyle(color: BeldexPalette.red), + counterText: ""), validator: validator); } } diff --git a/lib/src/widgets/master_node_card.dart b/lib/src/widgets/master_node_card.dart index 06ab19c..69576dc 100644 --- a/lib/src/widgets/master_node_card.dart +++ b/lib/src/widgets/master_node_card.dart @@ -73,7 +73,7 @@ class _MasterNodeCardState extends State { : SvgPicture.asset('assets/images/deactivate.svg',width: 30,height: 30,));//Icon(Icons.error_sharp, color: BeldexPalette.red, size: 30) return Card( - color: active ? Theme.of(context).primaryTextTheme.bodyText2.color : Theme.of(context).primaryTextTheme.headline1.color, + color: active ? Theme.of(context).primaryTextTheme.bodyText2!.color : Theme.of(context).primaryTextTheme.headline1!.color, child: ExpansionTile( leading: Padding(padding: EdgeInsets.all(5), child: statusIcon), trailing: Icon( @@ -81,7 +81,7 @@ class _MasterNodeCardState extends State { ? Icons.keyboard_arrow_up_sharp : Icons.keyboard_arrow_down_sharp, size: 30, - color: Theme.of(context).primaryTextTheme.caption.color), + color: Theme.of(context).primaryTextTheme.caption!.color), onExpansionChanged: (bool expanded) { setState(() => _tileExpanded = expanded); }, @@ -91,7 +91,7 @@ class _MasterNodeCardState extends State { style: TextStyle( fontSize: 18, fontWeight: FontWeight.normal, - color: Theme.of(context).primaryTextTheme.caption.color)), + color: Theme.of(context).primaryTextTheme.caption!.color)), ), subtitle: Padding( padding: EdgeInsets.only(top: 7.0,bottom: 7.0), @@ -121,7 +121,7 @@ class _MasterNodeCardState extends State { child: Center( child: Text('$lastRewardBlockHeight', textAlign: TextAlign.center, - style: TextStyle(fontSize: 20)), + style: TextStyle(fontSize: 16)), )) ]), ), @@ -147,7 +147,7 @@ class _MasterNodeCardState extends State { isStorageServerReachable ? Icons.check_circle_sharp : Icons.error_sharp, - size: 30), + size: 22), )) ])), ), @@ -172,7 +172,7 @@ class _MasterNodeCardState extends State { isLokinetRouterReachable ? Icons.check_circle_sharp : Icons.error_sharp, - size: 30), + size: 22), )) ])), ), @@ -200,7 +200,7 @@ class _MasterNodeCardState extends State { Expanded( flex: 1, child: Center( - child: SvgPicture.asset('assets/images/more.svg',color:Theme.of(context).primaryTextTheme.headline5.color,width: 25,height: 25,), + child: SvgPicture.asset('assets/images/more.svg',color:Theme.of(context).primaryTextTheme.headline5!.color,width: 25,height: 25,), )) ]), )), diff --git a/lib/src/widgets/nav/nav_list_arrow.dart b/lib/src/widgets/nav/nav_list_arrow.dart index a4d9dda..929f85d 100644 --- a/lib/src/widgets/nav/nav_list_arrow.dart +++ b/lib/src/widgets/nav/nav_list_arrow.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:master_node_monitor/src/widgets/nav/nav_list_trailing.dart'; class NavListArrow extends StatelessWidget { - NavListArrow({this.text, this.leading, this.onTap}); + NavListArrow({required this.text, required this.leading, required this.onTap}); final String text; final Widget leading; @@ -14,7 +14,7 @@ class NavListArrow extends StatelessWidget { leading: leading, text: text, trailing: Icon(Icons.arrow_forward_ios_sharp, - color: Theme.of(context).primaryTextTheme.headline6.color, + color: Theme.of(context).primaryTextTheme.headline6!.color, size: 20), onTap: onTap); } diff --git a/lib/src/widgets/nav/nav_list_multiheader.dart b/lib/src/widgets/nav/nav_list_multiheader.dart index 582a0ae..21beea5 100644 --- a/lib/src/widgets/nav/nav_list_multiheader.dart +++ b/lib/src/widgets/nav/nav_list_multiheader.dart @@ -10,10 +10,10 @@ class NavListMultiHeader extends StatelessWidget { final String title; final String subtitle; - final VoidCallback onTap; + final VoidCallback? onTap; final bool forceSmallText; - final Color titleColor; - final Color subtitleColor; + final Color? titleColor; + final Color? subtitleColor; Color get _titleColor => titleColor ?? BeldexPalette.progressCenterText; @@ -41,7 +41,7 @@ class NavListMultiHeader extends StatelessWidget { style: TextStyle( fontSize: subtitleSize, color: subtitleColor ?? - Theme.of(context).primaryTextTheme.headline5.color), + Theme.of(context).primaryTextTheme.headline5!.color), ) ], ), diff --git a/lib/src/widgets/nav/nav_list_trailing.dart b/lib/src/widgets/nav/nav_list_trailing.dart index 8abd999..ff6f845 100644 --- a/lib/src/widgets/nav/nav_list_trailing.dart +++ b/lib/src/widgets/nav/nav_list_trailing.dart @@ -1,12 +1,12 @@ import 'package:flutter/material.dart'; class NavListTrailing extends StatelessWidget { - NavListTrailing({this.text, this.leading, this.onTap, this.trailing}); + NavListTrailing({required this.text, required this.leading, this.onTap, required this.trailing}); final String text; final Widget leading; final Widget trailing; - final GestureTapCallback onTap; + final GestureTapCallback? onTap; @override Widget build(BuildContext context) { @@ -18,7 +18,7 @@ class NavListTrailing extends StatelessWidget { style: TextStyle( fontSize: 18.0, fontWeight: FontWeight.bold, - color: Theme.of(context).primaryTextTheme.headline6.color)), + color: Theme.of(context).primaryTextTheme.headline6!.color)), trailing: trailing, onTap: onTap, ), diff --git a/lib/src/widgets/present_picker.dart b/lib/src/widgets/present_picker.dart index 66a8e2e..62003c7 100644 --- a/lib/src/widgets/present_picker.dart +++ b/lib/src/widgets/present_picker.dart @@ -5,7 +5,7 @@ import 'package:master_node_monitor/src/widgets/beldex/beldex_dialog.dart'; import 'primary_button.dart'; -Future presentPicker( +Future? presentPicker( BuildContext context, List list) async { var _value = list[0]; @@ -26,7 +26,7 @@ Future presentPicker( fontSize: 25, fontWeight: FontWeight.bold, decoration: TextDecoration.none, - color: Theme.of(context).primaryTextTheme.caption.color, + color: Theme.of(context).primaryTextTheme.caption!.color, ), ), ), @@ -38,7 +38,7 @@ Future presentPicker( borderRadius: BorderRadius.circular(10) ), child: CupertinoPicker( - backgroundColor: Theme.of(context).primaryTextTheme.overline.color, + backgroundColor: Theme.of(context).primaryTextTheme.overline!.color, itemExtent: 45.0, onSelectedItemChanged: (int index) => _value = list[index], children: List.generate( @@ -49,7 +49,7 @@ Future presentPicker( style: TextStyle( color: Theme.of(context) .primaryTextTheme - .caption + .caption! .color, ), ), @@ -61,9 +61,9 @@ Future presentPicker( PrimaryButton( text: "Okay", color: - Theme.of(context).primaryTextTheme.button.backgroundColor, + Theme.of(context).primaryTextTheme.button!.backgroundColor!, borderColor: - Theme.of(context).primaryTextTheme.button.decorationColor, + Theme.of(context).primaryTextTheme.button!.decorationColor!, onPressed: () => Navigator.of(context).pop(_value), ) ], diff --git a/lib/src/widgets/primary_button.dart b/lib/src/widgets/primary_button.dart index 8f708f2..d7cba64 100644 --- a/lib/src/widgets/primary_button.dart +++ b/lib/src/widgets/primary_button.dart @@ -5,18 +5,18 @@ import 'package:master_node_monitor/src/utils/theme/palette.dart'; class PrimaryButton extends StatelessWidget { const PrimaryButton( - {@required this.onPressed, - @required this.text, - @required this.color, - @required this.borderColor, + {required this.onPressed, + required this.text, + required this.color, + required this.borderColor, this.textColor, this.isDisabled = false, this.onDisabledPressed}); final VoidCallback onPressed; - final VoidCallback onDisabledPressed; + final VoidCallback? onDisabledPressed; final Color color; - final Color textColor; + final Color? textColor; final Color borderColor; final String text; final bool isDisabled; @@ -24,17 +24,19 @@ class PrimaryButton extends StatelessWidget { @override Widget build(BuildContext context) { final textColor = - this.textColor ?? Theme.of(context).primaryTextTheme.button.color; + this.textColor ?? Theme.of(context).primaryTextTheme.button!.color; return ButtonTheme( minWidth: double.infinity, height: 56.0, - child: FlatButton( + child: TextButton( onPressed: isDisabled ? onDisabledPressed : onPressed, - color: isDisabled ? Colors.transparent : color, - shape: RoundedRectangleBorder( - side: BorderSide(color: borderColor), - borderRadius: BorderRadius.circular(10.0)), + style: TextButton.styleFrom( + shape: RoundedRectangleBorder( + side: BorderSide(color: borderColor), + borderRadius: BorderRadius.circular(10.0)), + backgroundColor: isDisabled ? Colors.transparent : color, + ), child: Text(text, style: TextStyle( fontSize: 20.0, @@ -45,10 +47,10 @@ class PrimaryButton extends StatelessWidget { class LoadingPrimaryButton extends StatelessWidget { const LoadingPrimaryButton( - {@required this.onPressed, - @required this.text, - @required this.color, - @required this.borderColor, + {required this.onPressed, + required this.text, + required this.color, + required this.borderColor, this.isDisabled = false, this.isLoading = false}); @@ -64,45 +66,47 @@ class LoadingPrimaryButton extends StatelessWidget { return ButtonTheme( minWidth: double.infinity, height: 56.0, - child: FlatButton( + child: TextButton( onPressed: (isLoading || isDisabled) ? null : onPressed, - color: color, - shape: RoundedRectangleBorder( - side: BorderSide(color: borderColor), - borderRadius: BorderRadius.circular(10.0)), + style: TextButton.styleFrom( + shape: RoundedRectangleBorder( + side: BorderSide(color: borderColor), + borderRadius: BorderRadius.circular(10.0)), + backgroundColor: color, + ), child: isLoading ? CupertinoActivityIndicator(animating: true) : Text(text, style: TextStyle( fontSize: 16.0, - color: Theme.of(context).primaryTextTheme.button.color)), + color: Theme.of(context).primaryTextTheme.button!.color)), )); } } class PrimaryIconButton extends StatelessWidget { const PrimaryIconButton({ - @required this.onPressed, - @required this.text, - @required this.color, + required this.onPressed, + required this.text, + required this.color, this.textColor, - @required this.borderColor, - @required this.iconColor, - @required this.iconBackgroundColor, + required this.borderColor, + this.iconColor, + this.iconBackgroundColor, }); final VoidCallback onPressed; final Color color; - final Color textColor; + final Color? textColor; final Color borderColor; - final Color iconColor; - final Color iconBackgroundColor; + final Color? iconColor; + final Color? iconBackgroundColor; final String text; @override Widget build(BuildContext context) { final textColor = - this.textColor ?? Theme.of(context).primaryTextTheme.button.color; + this.textColor ?? Theme.of(context).primaryTextTheme.button!.color; return ButtonTheme( minWidth: double.infinity, diff --git a/lib/src/widgets/scrollable_with_bottom_section.dart b/lib/src/widgets/scrollable_with_bottom_section.dart index adfbcc1..85e08d1 100644 --- a/lib/src/widgets/scrollable_with_bottom_section.dart +++ b/lib/src/widgets/scrollable_with_bottom_section.dart @@ -3,15 +3,15 @@ import 'package:flutter/material.dart'; class ScrollableWithBottomSection extends StatefulWidget { ScrollableWithBottomSection( - {this.content, - this.bottomSection, + {required this.content, + required this.bottomSection, this.contentPadding, this.bottomSectionPadding}); final Widget content; final Widget bottomSection; - final EdgeInsets contentPadding; - final EdgeInsets bottomSectionPadding; + final EdgeInsets? contentPadding; + final EdgeInsets? bottomSectionPadding; @override ScrollableWithBottomSectionState createState() => diff --git a/lib/src/widgets/spinner.dart b/lib/src/widgets/spinner.dart index 223eac9..41aecf0 100644 --- a/lib/src/widgets/spinner.dart +++ b/lib/src/widgets/spinner.dart @@ -5,8 +5,8 @@ class Spinner extends StatefulWidget { final Duration duration; const Spinner({ - Key key, - @required this.icon, + Key? key, + required this.icon, this.duration = const Duration(milliseconds: 1800), }) : super(key: key); @@ -15,8 +15,8 @@ class Spinner extends StatefulWidget { } class _SpinnerState extends State with SingleTickerProviderStateMixin { - AnimationController _controller; - Widget _child; + AnimationController? _controller; + Widget? _child; @override void initState() { @@ -31,14 +31,14 @@ class _SpinnerState extends State with SingleTickerProviderStateMixin { @override void dispose() { - _controller.dispose(); + _controller?.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return RotationTransition( - turns: ReverseAnimation(_controller), + turns: ReverseAnimation(_controller!), child: _child, ); } diff --git a/lib/src/widgets/standard_switch.dart b/lib/src/widgets/standard_switch.dart index d2e8ffb..ed8ff2a 100644 --- a/lib/src/widgets/standard_switch.dart +++ b/lib/src/widgets/standard_switch.dart @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; class StandardSwitch extends StatefulWidget { - const StandardSwitch({@required this.value, @required this.onTaped}); + const StandardSwitch({required this.value, required this.onTaped}); final bool value; final VoidCallback onTaped; @@ -25,7 +25,7 @@ class StandardSwitchState extends State { decoration: BoxDecoration( color: Theme.of(context).toggleButtonsTheme.color, border: Border.all( - color: Theme.of(context).toggleButtonsTheme.borderColor), + color: Theme.of(context).toggleButtonsTheme.borderColor!), borderRadius: BorderRadius.all(Radius.circular(33.0))), child: Container( width: 25.0, diff --git a/pubspec.lock b/pubspec.lock index 23f059a..2d78145 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,273 +5,295 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - url: "https://pub.dartlang.org" + sha256: eb376e9acf6938204f90eb3b1f00b578640d3188b4c8a8ec054f9f479af8d051 + url: "https://pub.dev" source: hosted - version: "40.0.0" + version: "64.0.0" analyzer: dependency: transitive description: name: analyzer - url: "https://pub.dartlang.org" + sha256: "69f54f967773f6c26c7dcb13e93d7ccee8b17a641689da39e878d5cf13b06893" + url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "6.2.0" archive: dependency: transitive description: name: archive - url: "https://pub.dartlang.org" + sha256: cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d + url: "https://pub.dev" source: hosted - version: "3.3.1" + version: "3.6.1" args: dependency: transitive description: name: args - url: "https://pub.dartlang.org" + sha256: "7cf60b9f0cc88203c5a190b4cd62a99feea42759a7fa695010eb5de1c0b2252a" + url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.5.0" async: dependency: transitive description: name: async - url: "https://pub.dartlang.org" + sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" + url: "https://pub.dev" source: hosted - version: "2.8.2" + version: "2.11.0" boolean_selector: dependency: transitive description: name: boolean_selector - url: "https://pub.dartlang.org" + sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" build: dependency: transitive description: name: build - url: "https://pub.dartlang.org" + sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" + url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.4.1" build_config: dependency: transitive description: name: build_config - url: "https://pub.dartlang.org" + sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" build_daemon: dependency: transitive description: name: build_daemon - url: "https://pub.dartlang.org" + sha256: "0343061a33da9c5810b2d6cee51945127d8f4c060b7fbdd9d54917f0a3feaaa1" + url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "4.0.1" build_resolvers: dependency: "direct dev" description: name: build_resolvers - url: "https://pub.dartlang.org" + sha256: "339086358431fa15d7eca8b6a36e5d783728cf025e559b834f4609a1fcfb7b0a" + url: "https://pub.dev" source: hosted - version: "2.0.9" + version: "2.4.2" build_runner: dependency: "direct dev" description: name: build_runner - url: "https://pub.dartlang.org" + sha256: "3ac61a79bfb6f6cc11f693591063a7f19a7af628dc52f141743edac5c16e8c22" + url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.9" build_runner_core: dependency: transitive description: name: build_runner_core - url: "https://pub.dartlang.org" + sha256: "4ae8ffe5ac758da294ecf1802f2aff01558d8b1b00616aa7538ea9a8a5d50799" + url: "https://pub.dev" source: hosted - version: "7.2.3" + version: "7.3.0" built_collection: dependency: transitive description: name: built_collection - url: "https://pub.dartlang.org" + sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" + url: "https://pub.dev" source: hosted version: "5.1.1" built_value: dependency: transitive description: name: built_value - url: "https://pub.dartlang.org" + sha256: c7913a9737ee4007efedaffc968c049fd0f3d0e49109e778edc10de9426005cb + url: "https://pub.dev" source: hosted - version: "8.4.0" + version: "8.9.2" characters: dependency: transitive description: name: characters - url: "https://pub.dartlang.org" + sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" + url: "https://pub.dev" source: hosted - version: "1.2.0" - charcode: + version: "1.3.0" + checked_yaml: dependency: transitive description: - name: charcode - url: "https://pub.dartlang.org" + name: checked_yaml + sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff + url: "https://pub.dev" source: hosted - version: "1.3.1" - checked_yaml: + version: "2.0.3" + cli_util: dependency: transitive description: - name: checked_yaml - url: "https://pub.dartlang.org" + name: cli_util + sha256: c05b7406fdabc7a49a3929d4af76bcaccbbffcbcdcf185b082e1ae07da323d19 + url: "https://pub.dev" source: hosted - version: "2.0.1" + version: "0.4.1" clock: dependency: transitive description: name: clock - url: "https://pub.dartlang.org" + sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.1" code_builder: dependency: transitive description: name: code_builder - url: "https://pub.dartlang.org" + sha256: f692079e25e7869c14132d39f223f8eec9830eb76131925143b2129c4bb01b37 + url: "https://pub.dev" source: hosted - version: "4.1.0" + version: "4.10.0" collection: dependency: transitive description: name: collection - url: "https://pub.dartlang.org" + sha256: ee67cb0715911d28db6bf4af1026078bd6f0128b07a5f66fb2ed94ec6783c09a + url: "https://pub.dev" source: hosted - version: "1.15.0" + version: "1.18.0" connectivity_plus: dependency: "direct main" description: name: connectivity_plus - url: "https://pub.dartlang.org" + sha256: "224a77051d52a11fbad53dd57827594d3bd24f945af28bd70bab376d68d437f0" + url: "https://pub.dev" source: hosted - version: "2.3.9" - connectivity_plus_linux: - dependency: transitive - description: - name: connectivity_plus_linux - url: "https://pub.dartlang.org" - source: hosted - version: "1.3.1" - connectivity_plus_macos: - dependency: transitive - description: - name: connectivity_plus_macos - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.6" + version: "5.0.2" connectivity_plus_platform_interface: dependency: transitive description: name: connectivity_plus_platform_interface - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.2" - connectivity_plus_web: - dependency: transitive - description: - name: connectivity_plus_web - url: "https://pub.dartlang.org" + sha256: cf1d1c28f4416f8c654d7dc3cd638ec586076255d407cef3ddbdaf178272a71a + url: "https://pub.dev" source: hosted - version: "1.2.5" - connectivity_plus_windows: - dependency: transitive - description: - name: connectivity_plus_windows - url: "https://pub.dartlang.org" - source: hosted - version: "1.2.2" + version: "1.2.4" convert: dependency: transitive description: name: convert - url: "https://pub.dartlang.org" + sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" + url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.1.1" crypto: dependency: transitive description: name: crypto - url: "https://pub.dartlang.org" + sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab + url: "https://pub.dev" source: hosted - version: "3.0.2" + version: "3.0.3" + csslib: + dependency: transitive + description: + name: csslib + sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" + url: "https://pub.dev" + source: hosted + version: "1.0.0" cupertino_icons: dependency: "direct main" description: name: cupertino_icons - url: "https://pub.dartlang.org" + sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 + url: "https://pub.dev" source: hosted - version: "1.0.5" + version: "1.0.8" dart_style: dependency: transitive description: name: dart_style - url: "https://pub.dartlang.org" + sha256: "99e066ce75c89d6b29903d788a7bb9369cf754f7b24bf70bf4b6d6d6b26853b9" + url: "https://pub.dev" source: hosted - version: "2.2.3" + version: "2.3.6" dbus: dependency: transitive description: name: dbus - url: "https://pub.dartlang.org" + sha256: "365c771ac3b0e58845f39ec6deebc76e3276aa9922b0cc60840712094d9047ac" + url: "https://pub.dev" + source: hosted + version: "0.7.10" + device_info_plus: + dependency: transitive + description: + name: device_info_plus + sha256: "77f757b789ff68e4eaf9c56d1752309bd9f7ad557cb105b938a7f8eb89e59110" + url: "https://pub.dev" source: hosted - version: "0.7.3" + version: "9.1.2" + device_info_plus_platform_interface: + dependency: transitive + description: + name: device_info_plus_platform_interface + sha256: "282d3cf731045a2feb66abfe61bbc40870ae50a3ed10a4d3d217556c35c8c2ba" + url: "https://pub.dev" + source: hosted + version: "7.0.1" devicelocale: dependency: "direct main" description: name: devicelocale - url: "https://pub.dartlang.org" + sha256: "0812b66f9eac57bc55c6ed4c178e0779440aa4e4e7c7e32fe1db02a758501d0e" + url: "https://pub.dev" source: hosted - version: "0.5.0" + version: "0.7.1" fake_async: dependency: transitive description: name: fake_async - url: "https://pub.dartlang.org" + sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.1" ffi: dependency: transitive description: name: ffi - url: "https://pub.dartlang.org" + sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + url: "https://pub.dev" source: hosted - version: "1.2.1" + version: "2.1.0" file: dependency: transitive description: name: file - url: "https://pub.dartlang.org" + sha256: "5fc22d7c25582e38ad9a8515372cd9a93834027aacf1801cf01164dac0ffa08c" + url: "https://pub.dev" source: hosted - version: "6.1.2" + version: "7.0.0" fixnum: dependency: transitive description: name: fixnum - url: "https://pub.dartlang.org" + sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" + url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" - flutter_cupertino_localizations: - dependency: "direct main" - description: - name: flutter_cupertino_localizations - url: "https://pub.dartlang.org" - source: hosted - version: "1.0.1" flutter_launcher_icons: dependency: "direct dev" description: name: flutter_launcher_icons - url: "https://pub.dartlang.org" + sha256: "526faf84284b86a4cb36d20a5e45147747b7563d921373d4ee0559c54fcdbcea" + url: "https://pub.dev" source: hosted - version: "0.9.3" + version: "0.13.1" flutter_localizations: dependency: "direct main" description: flutter @@ -281,16 +303,18 @@ packages: dependency: "direct main" description: name: flutter_mobx - url: "https://pub.dartlang.org" + sha256: ce01a933f63fbd638b491042c55260db25d71d0d4c0f09bae1f8749552e26686 + url: "https://pub.dev" source: hosted - version: "2.0.2" + version: "2.0.4" flutter_svg: dependency: "direct main" description: name: flutter_svg - url: "https://pub.dartlang.org" + sha256: "7b4ca6cf3304575fe9c8ec64813c8d02ee41d2afe60bcfe0678bcb5375d596a2" + url: "https://pub.dev" source: hosted - version: "0.22.0" + version: "2.0.10+1" flutter_test: dependency: "direct dev" description: flutter @@ -305,380 +329,418 @@ packages: dependency: transitive description: name: frontend_server_client - url: "https://pub.dartlang.org" + sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 + url: "https://pub.dev" source: hosted - version: "2.1.3" + version: "4.0.0" glob: dependency: transitive description: name: glob - url: "https://pub.dartlang.org" + sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" graphs: dependency: transitive description: name: graphs - url: "https://pub.dartlang.org" + sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.3.1" hive: dependency: "direct main" description: name: hive - url: "https://pub.dartlang.org" + sha256: "8dcf6db979d7933da8217edcec84e9df1bdb4e4edc7fc77dbd5aa74356d6d941" + url: "https://pub.dev" source: hosted version: "2.2.3" hive_flutter: dependency: "direct main" description: name: hive_flutter - url: "https://pub.dartlang.org" + sha256: dca1da446b1d808a51689fb5d0c6c9510c0a2ba01e22805d492c73b68e33eecc + url: "https://pub.dev" source: hosted version: "1.1.0" hive_generator: dependency: "direct dev" description: name: hive_generator - url: "https://pub.dartlang.org" + sha256: "06cb8f58ace74de61f63500564931f9505368f45f98958bd7a6c35ba24159db4" + url: "https://pub.dev" + source: hosted + version: "2.0.1" + html: + dependency: transitive + description: + name: html + sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" + url: "https://pub.dev" source: hosted - version: "1.1.3" + version: "0.15.4" http: dependency: "direct main" description: name: http - url: "https://pub.dartlang.org" + sha256: a2bbf9d017fcced29139daa8ed2bba4ece450ab222871df93ca9eec6f80c34ba + url: "https://pub.dev" source: hosted - version: "0.13.5" + version: "1.2.0" http_multi_server: dependency: transitive description: name: http_multi_server - url: "https://pub.dartlang.org" + sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" + url: "https://pub.dev" source: hosted version: "3.2.1" http_parser: dependency: transitive description: name: http_parser - url: "https://pub.dartlang.org" + sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" + url: "https://pub.dev" source: hosted - version: "4.0.1" + version: "4.0.2" image: dependency: transitive description: name: image - url: "https://pub.dartlang.org" - source: hosted - version: "3.1.3" - in_app_update: - dependency: transitive - description: - name: in_app_update - url: "https://pub.dartlang.org" + sha256: "2237616a36c0d69aef7549ab439b833fb7f9fb9fc861af2cc9ac3eedddd69ca8" + url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "4.2.0" intl: dependency: "direct main" description: name: intl - url: "https://pub.dartlang.org" + sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" + url: "https://pub.dev" source: hosted - version: "0.17.0" + version: "0.18.1" io: dependency: transitive description: name: io - url: "https://pub.dartlang.org" + sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" + url: "https://pub.dev" source: hosted - version: "1.0.3" + version: "1.0.4" js: dependency: transitive description: name: js - url: "https://pub.dartlang.org" + sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 + url: "https://pub.dev" source: hosted - version: "0.6.3" + version: "0.6.7" json_annotation: dependency: transitive description: name: json_annotation - url: "https://pub.dartlang.org" + sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" + url: "https://pub.dev" source: hosted - version: "4.6.0" + version: "4.9.0" logging: dependency: transitive description: name: logging - url: "https://pub.dartlang.org" + sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.2.0" matcher: dependency: transitive description: name: matcher - url: "https://pub.dartlang.org" + sha256: "1803e76e6653768d64ed8ff2e1e67bea3ad4b923eb5c56a295c3e634bad5960e" + url: "https://pub.dev" source: hosted - version: "0.12.11" + version: "0.12.16" + material_color_utilities: + dependency: transitive + description: + name: material_color_utilities + sha256: "9528f2f296073ff54cb9fee677df673ace1218163c3bc7628093e7eed5203d41" + url: "https://pub.dev" + source: hosted + version: "0.5.0" meta: dependency: transitive description: name: meta - url: "https://pub.dartlang.org" + sha256: a6e590c838b18133bb482a2745ad77c5bb7715fb0451209e1a7567d416678b8e + url: "https://pub.dev" source: hosted - version: "1.7.0" + version: "1.10.0" mime: dependency: transitive description: name: mime - url: "https://pub.dartlang.org" + sha256: "2e123074287cc9fd6c09de8336dae606d1ddb88d9ac47358826db698c176a1f2" + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.5" mobx: dependency: "direct main" description: name: mobx - url: "https://pub.dartlang.org" + sha256: "63920b27b32ad1910adfe767ab1750e4c212e8923232a1f891597b362074ea5e" + url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.3.3+2" mobx_codegen: dependency: "direct dev" description: name: mobx_codegen - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.7" - native_updater: - dependency: "direct main" - description: - name: native_updater - url: "https://pub.dartlang.org" + sha256: "8e0d8653a0c720ad933cd8358f6f89f740ce89203657c13f25bea772ef1fff7c" + url: "https://pub.dev" source: hosted - version: "0.1.0" + version: "2.6.1" nested: dependency: transitive description: name: nested - url: "https://pub.dartlang.org" + sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" + url: "https://pub.dev" source: hosted version: "1.0.0" nm: dependency: transitive description: name: nm - url: "https://pub.dartlang.org" + sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" + url: "https://pub.dev" source: hosted version: "0.5.0" + os_detect: + dependency: transitive + description: + name: os_detect + sha256: faf3bcf39515e64da8ff76b2f2805b20a6ff47ae515393e535f8579ff91d6b7f + url: "https://pub.dev" + source: hosted + version: "2.0.1" package_config: dependency: transitive description: name: package_config - url: "https://pub.dartlang.org" + sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" + url: "https://pub.dev" source: hosted version: "2.1.0" - package_info: + package_info_plus: dependency: transitive description: - name: package_info - url: "https://pub.dartlang.org" + name: package_info_plus + sha256: "88bc797f44a94814f2213db1c9bd5badebafdfb8290ca9f78d4b9ee2a3db4d79" + url: "https://pub.dev" source: hosted - version: "2.0.2" - path: + version: "5.0.1" + package_info_plus_platform_interface: dependency: transitive description: - name: path - url: "https://pub.dartlang.org" + name: package_info_plus_platform_interface + sha256: "9bc8ba46813a4cc42c66ab781470711781940780fd8beddd0c3da62506d3a6c6" + url: "https://pub.dev" source: hosted - version: "1.8.0" - path_drawing: + version: "2.0.1" + path: dependency: transitive description: - name: path_drawing - url: "https://pub.dartlang.org" + name: path + sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + url: "https://pub.dev" source: hosted - version: "0.5.1+1" + version: "1.8.3" path_parsing: dependency: transitive description: name: path_parsing - url: "https://pub.dartlang.org" + sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf + url: "https://pub.dev" source: hosted - version: "0.2.1" + version: "1.0.1" path_provider: dependency: "direct main" description: name: path_provider - url: "https://pub.dartlang.org" + sha256: fec0d61223fba3154d87759e3cc27fe2c8dc498f6386c6d6fc80d1afdd1bf378 + url: "https://pub.dev" source: hosted - version: "2.0.11" + version: "2.1.4" path_provider_android: dependency: transitive description: name: path_provider_android - url: "https://pub.dartlang.org" + sha256: a248d8146ee5983446bf03ed5ea8f6533129a12b11f12057ad1b4a67a2b3b41d + url: "https://pub.dev" source: hosted - version: "2.0.17" - path_provider_ios: + version: "2.2.4" + path_provider_foundation: dependency: transitive description: - name: path_provider_ios - url: "https://pub.dartlang.org" + name: path_provider_foundation + sha256: "5a7999be66e000916500be4f15a3633ebceb8302719b47b9cc49ce924125350f" + url: "https://pub.dev" source: hosted - version: "2.0.11" + version: "2.3.2" path_provider_linux: dependency: transitive description: name: path_provider_linux - url: "https://pub.dartlang.org" + sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 + url: "https://pub.dev" source: hosted - version: "2.1.7" - path_provider_macos: - dependency: transitive - description: - name: path_provider_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.6" + version: "2.2.1" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - url: "https://pub.dartlang.org" + sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" + url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.1.2" path_provider_windows: dependency: transitive description: name: path_provider_windows - url: "https://pub.dartlang.org" + sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 + url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.3.0" petitparser: dependency: transitive description: name: petitparser - url: "https://pub.dartlang.org" + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 + url: "https://pub.dev" source: hosted - version: "4.4.0" + version: "6.0.2" platform: dependency: transitive description: name: platform - url: "https://pub.dartlang.org" + sha256: "9b71283fc13df574056616011fb138fd3b793ea47cc509c189a6c3fa5f8a1a65" + url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.1.5" plugin_platform_interface: dependency: transitive description: name: plugin_platform_interface - url: "https://pub.dartlang.org" + sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" + url: "https://pub.dev" source: hosted - version: "2.1.2" + version: "2.1.8" pool: dependency: transitive description: name: pool - url: "https://pub.dartlang.org" + sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" + url: "https://pub.dev" source: hosted version: "1.5.1" - process: - dependency: transitive - description: - name: process - url: "https://pub.dartlang.org" - source: hosted - version: "4.2.4" provider: dependency: "direct main" description: name: provider - url: "https://pub.dartlang.org" + sha256: c8a055ee5ce3fd98d6fc872478b03823ffdb448699c6ebdbbc71d59b596fd48c + url: "https://pub.dev" source: hosted - version: "6.0.3" + version: "6.1.2" pub_semver: dependency: transitive description: name: pub_semver - url: "https://pub.dartlang.org" + sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" pubspec_parse: dependency: transitive description: name: pubspec_parse - url: "https://pub.dartlang.org" + sha256: c799b721d79eb6ee6fa56f00c04b472dcd44a30d258fac2174a6ec57302678f8 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" shared_preferences: dependency: "direct main" description: name: shared_preferences - url: "https://pub.dartlang.org" + sha256: d3bbe5553a986e83980916ded2f0b435ef2e1893dfaa29d5a7a790d0eca12180 + url: "https://pub.dev" source: hosted - version: "2.0.15" + version: "2.2.3" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - url: "https://pub.dartlang.org" + sha256: "1ee8bf911094a1b592de7ab29add6f826a7331fb854273d55918693d5364a1f2" + url: "https://pub.dev" source: hosted - version: "2.0.12" - shared_preferences_ios: + version: "2.2.2" + shared_preferences_foundation: dependency: transitive description: - name: shared_preferences_ios - url: "https://pub.dartlang.org" + name: shared_preferences_foundation + sha256: "7708d83064f38060c7b39db12aefe449cb8cdc031d6062280087bc4cdb988f5c" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.3.5" shared_preferences_linux: dependency: transitive description: name: shared_preferences_linux - url: "https://pub.dartlang.org" + sha256: "2ba0510d3017f91655b7543e9ee46d48619de2a2af38e5c790423f7007c7ccc1" + url: "https://pub.dev" source: hosted - version: "2.1.1" - shared_preferences_macos: - dependency: transitive - description: - name: shared_preferences_macos - url: "https://pub.dartlang.org" - source: hosted - version: "2.0.4" + version: "2.4.0" shared_preferences_platform_interface: dependency: transitive description: name: shared_preferences_platform_interface - url: "https://pub.dartlang.org" + sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80" + url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.4.1" shared_preferences_web: dependency: transitive description: name: shared_preferences_web - url: "https://pub.dartlang.org" + sha256: "7b15ffb9387ea3e237bb7a66b8a23d2147663d391cafc5c8f37b2e7b4bde5d21" + url: "https://pub.dev" source: hosted - version: "2.0.4" + version: "2.2.2" shared_preferences_windows: dependency: transitive description: name: shared_preferences_windows - url: "https://pub.dartlang.org" + sha256: "398084b47b7f92110683cac45c6dc4aae853db47e470e5ddcd52cab7f7196ab2" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.4.0" shelf: dependency: transitive description: name: shelf - url: "https://pub.dartlang.org" + sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.4.1" shelf_web_socket: dependency: transitive description: name: shelf_web_socket - url: "https://pub.dartlang.org" + sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" + url: "https://pub.dev" source: hosted - version: "1.0.2" + version: "1.0.4" sky_engine: dependency: transitive description: flutter @@ -688,184 +750,266 @@ packages: dependency: transitive description: name: source_gen - url: "https://pub.dartlang.org" + sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" + url: "https://pub.dev" source: hosted - version: "1.2.2" + version: "1.5.0" source_helper: dependency: transitive description: name: source_helper - url: "https://pub.dartlang.org" + sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" + url: "https://pub.dev" source: hosted - version: "1.3.2" + version: "1.3.4" source_span: dependency: transitive description: name: source_span - url: "https://pub.dartlang.org" + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" + url: "https://pub.dev" source: hosted - version: "1.8.1" + version: "1.10.0" stack_trace: dependency: transitive description: name: stack_trace - url: "https://pub.dartlang.org" + sha256: "73713990125a6d93122541237550ee3352a2d84baad52d375a4cad2eb9b7ce0b" + url: "https://pub.dev" source: hosted - version: "1.10.0" + version: "1.11.1" stream_channel: dependency: transitive description: name: stream_channel - url: "https://pub.dartlang.org" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.2" stream_transform: dependency: transitive description: name: stream_transform - url: "https://pub.dartlang.org" + sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" + url: "https://pub.dev" source: hosted - version: "2.0.0" + version: "2.1.0" string_scanner: dependency: transitive description: name: string_scanner - url: "https://pub.dartlang.org" + sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.2.0" term_glyph: dependency: transitive description: name: term_glyph - url: "https://pub.dartlang.org" + sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 + url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.2.1" test_api: dependency: transitive description: name: test_api - url: "https://pub.dartlang.org" + sha256: "5c2f730018264d276c20e4f1503fd1308dfbbae39ec8ee63c5236311ac06954b" + url: "https://pub.dev" source: hosted - version: "0.4.3" + version: "0.6.1" timing: dependency: transitive description: name: timing - url: "https://pub.dartlang.org" + sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" + url: "https://pub.dev" source: hosted - version: "1.0.0" + version: "1.0.1" typed_data: dependency: transitive description: name: typed_data - url: "https://pub.dartlang.org" + sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c + url: "https://pub.dev" source: hosted - version: "1.3.0" + version: "1.3.2" + upgrader: + dependency: "direct main" + description: + name: upgrader + sha256: d45483694620883107c2f5ca1dff7cdd4237b16810337a9c9c234203eb79eb5f + url: "https://pub.dev" + source: hosted + version: "10.3.0" url_launcher: dependency: "direct main" description: name: url_launcher - url: "https://pub.dartlang.org" + sha256: "21b704ce5fa560ea9f3b525b43601c678728ba46725bab9b01187b4831377ed3" + url: "https://pub.dev" source: hosted - version: "6.1.5" + version: "6.3.0" url_launcher_android: dependency: transitive description: name: url_launcher_android - url: "https://pub.dartlang.org" + sha256: "17cd5e205ea615e2c6ea7a77323a11712dffa0720a8a90540db57a01347f9ad9" + url: "https://pub.dev" source: hosted - version: "6.0.17" + version: "6.3.2" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - url: "https://pub.dartlang.org" + sha256: "75bb6fe3f60070407704282a2d295630cab232991eb52542b18347a8a941df03" + url: "https://pub.dev" source: hosted - version: "6.0.17" + version: "6.2.4" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - url: "https://pub.dartlang.org" + sha256: ab360eb661f8879369acac07b6bb3ff09d9471155357da8443fd5d3cf7363811 + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.1.1" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - url: "https://pub.dartlang.org" + sha256: "9a1a42d5d2d95400c795b2914c36fdcb525870c752569438e4ebb09a2b5d90de" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.2.0" url_launcher_platform_interface: dependency: transitive description: name: url_launcher_platform_interface - url: "https://pub.dartlang.org" + sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.3.2" url_launcher_web: dependency: transitive description: name: url_launcher_web - url: "https://pub.dartlang.org" + sha256: fff0932192afeedf63cdd50ecbb1bc825d31aed259f02bb8dba0f3b729a5e88b + url: "https://pub.dev" source: hosted - version: "2.0.6" + version: "2.2.3" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - url: "https://pub.dartlang.org" + sha256: "49c10f879746271804767cb45551ec5592cdab00ee105c06dddde1a98f73b185" + url: "https://pub.dev" source: hosted - version: "3.0.1" + version: "3.1.2" + vector_graphics: + dependency: transitive + description: + name: vector_graphics + sha256: "32c3c684e02f9bc0afb0ae0aa653337a2fe022e8ab064bcd7ffda27a74e288e3" + url: "https://pub.dev" + source: hosted + version: "1.1.11+1" + vector_graphics_codec: + dependency: transitive + description: + name: vector_graphics_codec + sha256: c86987475f162fadff579e7320c7ddda04cd2fdeffbe1129227a85d9ac9e03da + url: "https://pub.dev" + source: hosted + version: "1.1.11+1" + vector_graphics_compiler: + dependency: transitive + description: + name: vector_graphics_compiler + sha256: "12faff3f73b1741a36ca7e31b292ddeb629af819ca9efe9953b70bd63fc8cd81" + url: "https://pub.dev" + source: hosted + version: "1.1.11+1" vector_math: dependency: transitive description: name: vector_math - url: "https://pub.dartlang.org" + sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" + url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.4" + version: + dependency: transitive + description: + name: version + sha256: "3d4140128e6ea10d83da32fef2fa4003fccbf6852217bb854845802f04191f94" + url: "https://pub.dev" + source: hosted + version: "3.0.2" watcher: dependency: transitive description: name: watcher - url: "https://pub.dartlang.org" + sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" + url: "https://pub.dev" source: hosted - version: "1.0.1" + version: "1.1.0" + web: + dependency: transitive + description: + name: web + sha256: afe077240a270dcfd2aafe77602b4113645af95d0ad31128cc02bce5ac5d5152 + url: "https://pub.dev" + source: hosted + version: "0.3.0" web_socket_channel: dependency: transitive description: name: web_socket_channel - url: "https://pub.dartlang.org" + sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b + url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.4.0" win32: dependency: transitive description: name: win32 - url: "https://pub.dartlang.org" + sha256: "464f5674532865248444b4c3daca12bd9bf2d7c47f759ce2617986e7229494a8" + url: "https://pub.dev" source: hosted - version: "2.5.2" + version: "5.2.0" + win32_registry: + dependency: transitive + description: + name: win32_registry + sha256: "41fd8a189940d8696b1b810efb9abcf60827b6cbfab90b0c43e8439e3a39d85a" + url: "https://pub.dev" + source: hosted + version: "1.1.2" xdg_directories: dependency: transitive description: name: xdg_directories - url: "https://pub.dartlang.org" + sha256: faea9dee56b520b55a566385b84f2e8de55e7496104adada9962e0bd11bcff1d + url: "https://pub.dev" source: hosted - version: "0.2.0+1" + version: "1.0.4" xml: dependency: transitive description: name: xml - url: "https://pub.dartlang.org" + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 + url: "https://pub.dev" source: hosted - version: "5.3.1" + version: "6.5.0" yaml: dependency: "direct main" description: name: yaml - url: "https://pub.dartlang.org" + sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" + url: "https://pub.dev" source: hosted - version: "3.1.1" + version: "3.1.2" sdks: - dart: ">=2.15.0 <3.0.0" - flutter: ">=2.8.1" + dart: ">=3.2.0 <4.0.0" + flutter: ">=3.16.0" diff --git a/pubspec.yaml b/pubspec.yaml index d9001d7..998f3fc 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -15,10 +15,10 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev # In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion. # Read more about iOS versioning at # https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html -version: 1.0.1+2 +version: 1.0.2+3 environment: - sdk: ">=2.7.0 <3.0.0" + sdk: ">=2.12.0 <4.0.0" flutter: ">=1.22.6" dependencies: @@ -26,35 +26,35 @@ dependencies: sdk: flutter flutter_localizations: sdk: flutter - flutter_cupertino_localizations: ^1.0.1 - intl: ^0.17.0 - devicelocale: ^0.5.0 - shared_preferences: ^2.0.8 - provider: ^6.0.1 - path_provider: ^2.0.5 - mobx: ^2.0.5 - flutter_mobx: 2.0.2 - hive: ^2.0.4 + #flutter_cupertino_localizations: ^1.0.1 + intl: any #^0.17.0 + devicelocale: ^0.7.0 + shared_preferences: ^2.0.13 + provider: ^6.0.2 + path_provider: ^2.0.9 + mobx: ^2.0.6 + flutter_mobx: 2.0.4 + hive: ^2.1.0 hive_flutter: ^1.1.0 - http: ^0.13.4 + http: ^1.1.0 yaml: ^3.1.0 # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.3 - flutter_svg: ^0.22.0 - url_launcher: ^6.0.3 - native_updater: ^0.1.0 - connectivity_plus: + flutter_svg: ^2.0.9 + url_launcher: ^6.0.20 + connectivity_plus: ^5.0.2 + upgrader: ^10.3.0 dev_dependencies: flutter_test: sdk: flutter - build_runner: ^2.1.4 - build_resolvers: ^2.0.4 - mobx_codegen: ^2.0.4 - hive_generator: ^1.1.1 - flutter_launcher_icons: ^0.9.2 + build_runner: ^2.1.8 + build_resolvers: ^2.0.6 + mobx_codegen: ^2.0.5+2 + hive_generator: ^2.0.0 + flutter_launcher_icons: ^0.13.1 flutter_icons: