From f47d1e71414c71ec38e5bdc60a4bcaddf2676e89 Mon Sep 17 00:00:00 2001 From: GT610 <79314033+GT-610@users.noreply.github.com> Date: Thu, 22 Jan 2026 12:03:08 +0800 Subject: [PATCH] fix(server): Add boundary check for editing host name (#1018) * feat(localization): Add validation prompt for invalid host formats Add validation for host formats, allowing only IPv4, IPv6, and domain name formats Add regular expression validation for host format on the server editing page Update multilingual files to add the invalidHostFormat field * chore: Update dependent package versions to the latest * fix(server edit): Update the hostname regular expression to support IPv6 zone identifiers Modify the regular expression for hostname validation to add support for IPv6 zone identifiers (such as %en0) --- lib/generated/l10n/l10n.dart | 6 + lib/generated/l10n/l10n_de.dart | 4 + lib/generated/l10n/l10n_en.dart | 4 + lib/generated/l10n/l10n_es.dart | 4 + lib/generated/l10n/l10n_fr.dart | 4 + lib/generated/l10n/l10n_id.dart | 4 + lib/generated/l10n/l10n_ja.dart | 4 + lib/generated/l10n/l10n_nl.dart | 4 + lib/generated/l10n/l10n_pt.dart | 4 + lib/generated/l10n/l10n_ru.dart | 4 + lib/generated/l10n/l10n_tr.dart | 4 + lib/generated/l10n/l10n_uk.dart | 4 + lib/generated/l10n/l10n_zh.dart | 6 + lib/l10n/app_en.arb | 1 + lib/l10n/app_uk.arb | 1 + lib/l10n/app_zh.arb | 1 + lib/l10n/app_zh_tw.arb | 1 + lib/view/page/server/edit/actions.dart | 8 + macos/Flutter/GeneratedPluginRegistrant.swift | 2 - pubspec.lock | 184 ++++++++++-------- 20 files changed, 176 insertions(+), 78 deletions(-) diff --git a/lib/generated/l10n/l10n.dart b/lib/generated/l10n/l10n.dart index e796c7be..3f8bd1ab 100644 --- a/lib/generated/l10n/l10n.dart +++ b/lib/generated/l10n/l10n.dart @@ -854,6 +854,12 @@ abstract class AppLocalizations { /// **'Invalid'** String get invalid; + /// No description provided for @invalidHostFormat. + /// + /// In en, this message translates to: + /// **'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'** + String get invalidHostFormat; + /// No description provided for @jumpServer. /// /// In en, this message translates to: diff --git a/lib/generated/l10n/l10n_de.dart b/lib/generated/l10n/l10n_de.dart index 5a378600..cd927af9 100644 --- a/lib/generated/l10n/l10n_de.dart +++ b/lib/generated/l10n/l10n_de.dart @@ -420,6 +420,10 @@ class AppLocalizationsDe extends AppLocalizations { @override String get invalid => 'Ungültig'; + @override + String get invalidHostFormat => + 'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'; + @override String get jumpServer => 'Server springen'; diff --git a/lib/generated/l10n/l10n_en.dart b/lib/generated/l10n/l10n_en.dart index 977c1a05..b39d0f65 100644 --- a/lib/generated/l10n/l10n_en.dart +++ b/lib/generated/l10n/l10n_en.dart @@ -418,6 +418,10 @@ class AppLocalizationsEn extends AppLocalizations { @override String get invalid => 'Invalid'; + @override + String get invalidHostFormat => + 'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'; + @override String get jumpServer => 'Jump server'; diff --git a/lib/generated/l10n/l10n_es.dart b/lib/generated/l10n/l10n_es.dart index ccc30449..dc4fba52 100644 --- a/lib/generated/l10n/l10n_es.dart +++ b/lib/generated/l10n/l10n_es.dart @@ -419,6 +419,10 @@ class AppLocalizationsEs extends AppLocalizations { @override String get invalid => 'Inválido'; + @override + String get invalidHostFormat => + 'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'; + @override String get jumpServer => 'Servidor de salto'; diff --git a/lib/generated/l10n/l10n_fr.dart b/lib/generated/l10n/l10n_fr.dart index e647ad80..519df294 100644 --- a/lib/generated/l10n/l10n_fr.dart +++ b/lib/generated/l10n/l10n_fr.dart @@ -420,6 +420,10 @@ class AppLocalizationsFr extends AppLocalizations { @override String get invalid => 'Invalide'; + @override + String get invalidHostFormat => + 'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'; + @override String get jumpServer => 'Aller au serveur'; diff --git a/lib/generated/l10n/l10n_id.dart b/lib/generated/l10n/l10n_id.dart index d1aa0409..623a3da7 100644 --- a/lib/generated/l10n/l10n_id.dart +++ b/lib/generated/l10n/l10n_id.dart @@ -418,6 +418,10 @@ class AppLocalizationsId extends AppLocalizations { @override String get invalid => 'Tidak valid'; + @override + String get invalidHostFormat => + 'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'; + @override String get jumpServer => 'Lompat server'; diff --git a/lib/generated/l10n/l10n_ja.dart b/lib/generated/l10n/l10n_ja.dart index cceb5609..ea593bcf 100644 --- a/lib/generated/l10n/l10n_ja.dart +++ b/lib/generated/l10n/l10n_ja.dart @@ -407,6 +407,10 @@ class AppLocalizationsJa extends AppLocalizations { @override String get invalid => '無効'; + @override + String get invalidHostFormat => + 'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'; + @override String get jumpServer => 'ジャンプサーバー'; diff --git a/lib/generated/l10n/l10n_nl.dart b/lib/generated/l10n/l10n_nl.dart index 911a8dfc..ab02bbd2 100644 --- a/lib/generated/l10n/l10n_nl.dart +++ b/lib/generated/l10n/l10n_nl.dart @@ -419,6 +419,10 @@ class AppLocalizationsNl extends AppLocalizations { @override String get invalid => 'Ongeldig'; + @override + String get invalidHostFormat => + 'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'; + @override String get jumpServer => 'Spring naar server'; diff --git a/lib/generated/l10n/l10n_pt.dart b/lib/generated/l10n/l10n_pt.dart index 66fdd64d..581c7e9b 100644 --- a/lib/generated/l10n/l10n_pt.dart +++ b/lib/generated/l10n/l10n_pt.dart @@ -418,6 +418,10 @@ class AppLocalizationsPt extends AppLocalizations { @override String get invalid => 'Inválido'; + @override + String get invalidHostFormat => + 'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'; + @override String get jumpServer => 'Servidor de salto'; diff --git a/lib/generated/l10n/l10n_ru.dart b/lib/generated/l10n/l10n_ru.dart index 42c79304..ecea0bb9 100644 --- a/lib/generated/l10n/l10n_ru.dart +++ b/lib/generated/l10n/l10n_ru.dart @@ -419,6 +419,10 @@ class AppLocalizationsRu extends AppLocalizations { @override String get invalid => 'Недействительный'; + @override + String get invalidHostFormat => + 'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'; + @override String get jumpServer => 'прыжковый сервер'; diff --git a/lib/generated/l10n/l10n_tr.dart b/lib/generated/l10n/l10n_tr.dart index 26cb5233..b106c547 100644 --- a/lib/generated/l10n/l10n_tr.dart +++ b/lib/generated/l10n/l10n_tr.dart @@ -418,6 +418,10 @@ class AppLocalizationsTr extends AppLocalizations { @override String get invalid => 'Geçersiz'; + @override + String get invalidHostFormat => + 'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.'; + @override String get jumpServer => 'Atlama sunucusu'; diff --git a/lib/generated/l10n/l10n_uk.dart b/lib/generated/l10n/l10n_uk.dart index 39fe3c94..0dc906d6 100644 --- a/lib/generated/l10n/l10n_uk.dart +++ b/lib/generated/l10n/l10n_uk.dart @@ -420,6 +420,10 @@ class AppLocalizationsUk extends AppLocalizations { @override String get invalid => 'Недійсний'; + @override + String get invalidHostFormat => + 'Недійсний формат хоста. Дозволено лише символи IPv4, IPv6 та домену.'; + @override String get jumpServer => 'Стрибковий Сервер'; diff --git a/lib/generated/l10n/l10n_zh.dart b/lib/generated/l10n/l10n_zh.dart index 3d38205b..959d68b0 100644 --- a/lib/generated/l10n/l10n_zh.dart +++ b/lib/generated/l10n/l10n_zh.dart @@ -401,6 +401,9 @@ class AppLocalizationsZh extends AppLocalizations { @override String get invalid => '无效'; + @override + String get invalidHostFormat => '主机格式无效,仅支持 IPv4、IPv6 和域名字符。'; + @override String get jumpServer => '跳板服务器'; @@ -1380,6 +1383,9 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get invalid => '無效'; + @override + String get invalidHostFormat => '主機格式無效,僅支援 IPv4、IPv6 和網域字元。'; + @override String get jumpServer => '跳板伺服器'; diff --git a/lib/l10n/app_en.arb b/lib/l10n/app_en.arb index 20d5d227..26610055 100644 --- a/lib/l10n/app_en.arb +++ b/lib/l10n/app_en.arb @@ -122,6 +122,7 @@ "install": "install", "installDockerWithUrl": "Please https://docs.docker.com/engine/install docker first.", "invalid": "Invalid", + "invalidHostFormat": "Invalid host format. Only IPv4, IPv6, and domain characters are allowed.", "jumpServer": "Jump server", "keepForeground": "Keep app foreground!", "keepStatusWhenErr": "Preserve the last server state", diff --git a/lib/l10n/app_uk.arb b/lib/l10n/app_uk.arb index 8416ac71..8fecb91d 100644 --- a/lib/l10n/app_uk.arb +++ b/lib/l10n/app_uk.arb @@ -122,6 +122,7 @@ "install": "Встановити", "installDockerWithUrl": "Будь ласка, спочатку встановіть Docker. (https://docs.docker.com/engine/install)", "invalid": "Недійсний", + "invalidHostFormat": "Недійсний формат хоста. Дозволено лише символи IPv4, IPv6 та домену.", "jumpServer": "Стрибковий Сервер", "keepForeground": "Тримати застосунок на передньому плані!", "keepStatusWhenErr": "Зберегати останній стан сервера", diff --git a/lib/l10n/app_zh.arb b/lib/l10n/app_zh.arb index c6e44459..de3014b9 100644 --- a/lib/l10n/app_zh.arb +++ b/lib/l10n/app_zh.arb @@ -122,6 +122,7 @@ "install": "安装", "installDockerWithUrl": "请先前往 https://docs.docker.com/engine/install 安装 Docker", "invalid": "无效", + "invalidHostFormat": "主机格式无效,仅支持 IPv4、IPv6 和域名字符。", "jumpServer": "跳板服务器", "keepForeground": "请将应用保持在前台运行", "keepStatusWhenErr": "保留上次的服务器状态", diff --git a/lib/l10n/app_zh_tw.arb b/lib/l10n/app_zh_tw.arb index 0c81f922..7594998d 100644 --- a/lib/l10n/app_zh_tw.arb +++ b/lib/l10n/app_zh_tw.arb @@ -122,6 +122,7 @@ "install": "安裝", "installDockerWithUrl": "請先前往 https://docs.docker.com/engine/install 安裝 Docker", "invalid": "無效", + "invalidHostFormat": "主機格式無效,僅支援 IPv4、IPv6 和網域字元。", "jumpServer": "跳板伺服器", "keepForeground": "請讓 App 保持在前景執行", "keepStatusWhenErr": "保留上次的伺服器狀態", diff --git a/lib/view/page/server/edit/actions.dart b/lib/view/page/server/edit/actions.dart index 7b6d30c7..846d16a1 100644 --- a/lib/view/page/server/edit/actions.dart +++ b/lib/view/page/server/edit/actions.dart @@ -1,5 +1,8 @@ part of 'edit.dart'; +/// Only permit ipv4 / ipv6 / domain chars (including IPv6 zone identifier like %en0) +final _hostReg = RegExp(r'^[a-zA-Z0-9\.\-_:%;]+$'); + extension _Actions on _ServerEditPageState { Future _onTapSSHDiscovery() async { try { @@ -222,6 +225,11 @@ extension _Actions on _ServerEditPageState { return; } + if (!_hostReg.hasMatch(_ipController.text)) { + context.showSnackBar(l10n.invalidHostFormat); + return; + } + if (_keyIdx.value == null && _passwordController.text.isEmpty) { final ok = await context.showRoundDialog( title: libL10n.attention, diff --git a/macos/Flutter/GeneratedPluginRegistrant.swift b/macos/Flutter/GeneratedPluginRegistrant.swift index 788ab2b9..1058d345 100644 --- a/macos/Flutter/GeneratedPluginRegistrant.swift +++ b/macos/Flutter/GeneratedPluginRegistrant.swift @@ -12,7 +12,6 @@ import flutter_secure_storage_macos import icloud_storage import local_auth_darwin import package_info_plus -import path_provider_foundation import screen_retriever_macos import share_plus import shared_preferences_foundation @@ -28,7 +27,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) { IcloudStoragePlugin.register(with: registry.registrar(forPlugin: "IcloudStoragePlugin")) LocalAuthPlugin.register(with: registry.registrar(forPlugin: "LocalAuthPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) - PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin")) ScreenRetrieverMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverMacosPlugin")) SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) diff --git a/pubspec.lock b/pubspec.lock index 5b574c3c..ff4dea6e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -5,18 +5,18 @@ packages: dependency: transitive description: name: _fe_analyzer_shared - sha256: f0bb5d1648339c8308cc0b9838d8456b3cfe5c91f9dc1a735b4d003269e5da9a + sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d url: "https://pub.dev" source: hosted - version: "88.0.0" + version: "91.0.0" analyzer: dependency: "direct dev" description: name: analyzer - sha256: "0b7b9c329d2879f8f05d6c05b32ee9ec025f39b077864bdb5ac9a7b63418a98f" + sha256: a40a0cee526a7e1f387c6847bd8a5ccbf510a75952ef8a28338e989558072cb0 url: "https://pub.dev" source: hosted - version: "8.1.1" + version: "8.4.0" analyzer_buffer: dependency: transitive description: @@ -29,18 +29,18 @@ packages: dependency: transitive description: name: analyzer_plugin - sha256: dd574a0ab77de88b7d9c12bc4b626109a5ca9078216a79041a5c24c3a1bd103c + sha256: "08cfefa90b4f4dd3b447bda831cecf644029f9f8e22820f6ee310213ebe2dd53" url: "https://pub.dev" source: hosted - version: "0.13.7" + version: "0.13.10" animations: dependency: transitive description: name: animations - sha256: a8031b276f0a7986ac907195f10ca7cd04ecf2a8a566bd6dbe03018a9b02b427 + sha256: "18938cefd7dcc04e1ecac0db78973761a01e4bc2d6bfae0cfa596bfeac9e96ab" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.1" ansicolor: dependency: transitive description: @@ -125,10 +125,10 @@ packages: dependency: transitive description: name: build - sha256: dfb67ccc9a78c642193e0c2d94cb9e48c2c818b3178a86097d644acdcde6a8d9 + sha256: "275bf6bb2a00a9852c28d4e0b410da1d833a734d57d39d44f94bfc895a484ec3" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.0.4" build_config: dependency: transitive description: @@ -149,10 +149,10 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "04f69b1502f66e22ae7990bbd01eb552b7f12793c4d3ea6e715d0ac5e98bcdac" + sha256: b4d854962a32fd9f8efc0b76f98214790b833af8b2e9b2df6bfc927c0415a072 url: "https://pub.dev" source: hosted - version: "2.10.2" + version: "2.10.5" built_collection: dependency: transitive description: @@ -165,10 +165,10 @@ packages: dependency: transitive description: name: built_value - sha256: a30f0a0e38671e89a492c44d005b5545b830a961575bbd8336d42869ff71066d + sha256: "7931c90b84bc573fef103548e354258ae4c9d28d140e41961df6843c5d60d4d8" url: "https://pub.dev" source: hosted - version: "8.12.0" + version: "8.12.3" camera: dependency: transitive description: @@ -181,18 +181,18 @@ packages: dependency: transitive description: name: camera_android_camerax - sha256: d5256612833f9169c1698599a87370490622a188c5a7fb601169bb7b2f41f22b + sha256: bc7a96998258adddd0b653dd693b0874537707d58b0489708f2a646e4f124246 url: "https://pub.dev" source: hosted - version: "0.6.24+1" + version: "0.6.27" camera_avfoundation: dependency: transitive description: name: camera_avfoundation - sha256: "34bcd5db30e52414f1f0783c5e3f566909fab14141a21b3b576c78bd35382bf6" + sha256: "087a9fadef20325cb246b4c13344a3ce8e408acfc3e0c665ebff0ec3144d7163" url: "https://pub.dev" source: hosted - version: "0.9.22+4" + version: "0.9.22+8" camera_platform_interface: dependency: transitive description: @@ -266,14 +266,22 @@ packages: url: "https://pub.dev" source: hosted version: "1.1.2" + code_assets: + dependency: transitive + description: + name: code_assets + sha256: "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687" + url: "https://pub.dev" + source: hosted + version: "1.0.0" code_builder: dependency: transitive description: name: code_builder - sha256: "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243" + sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d" url: "https://pub.dev" source: hosted - version: "4.11.0" + version: "4.11.1" collection: dependency: transitive description: @@ -311,10 +319,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" + sha256: "701dcfc06da0882883a2657c445103380e53e647060ad8d9dfb710c100996608" url: "https://pub.dev" source: hosted - version: "0.3.5" + version: "0.3.5+1" crypto: dependency: "direct main" description: @@ -343,18 +351,18 @@ packages: dependency: transitive description: name: custom_lint_visitor - sha256: "446d68322747ec1c36797090de776aa72228818d3d80685a91ff524d163fee6d" + sha256: "91f2a81e9f0abb4b9f3bb529f78b6227ce6050300d1ae5b1e2c69c66c7a566d8" url: "https://pub.dev" source: hosted - version: "1.0.0+8.1.1" + version: "1.0.0+8.4.0" dart_style: dependency: transitive description: name: dart_style - sha256: c87dfe3d56f183ffe9106a18aebc6db431fc7c98c31a54b952a77f3d54a85697 + sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b url: "https://pub.dev" source: hosted - version: "3.1.2" + version: "3.1.3" dartssh2: dependency: "direct main" description: @@ -408,10 +416,10 @@ packages: dependency: transitive description: name: equatable - sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" + sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b" url: "https://pub.dev" source: hosted - version: "2.0.7" + version: "2.0.8" extended_image: dependency: "direct main" description: @@ -456,10 +464,10 @@ packages: dependency: "direct main" description: name: file_picker - sha256: f8f4ea435f791ab1f817b4e338ed958cb3d04ba43d6736ffc39958d950754967 + sha256: d974b6ba2606371ac71dd94254beefb6fa81185bde0b59bdc1df09885da85fde url: "https://pub.dev" source: hosted - version: "10.3.6" + version: "10.3.8" fixnum: dependency: transitive description: @@ -572,10 +580,10 @@ packages: dependency: transitive description: name: flutter_plugin_android_lifecycle - sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687" + sha256: ee8068e0e1cd16c4a82714119918efdeed33b3ba7772c54b5d094ab53f9b7fd1 url: "https://pub.dev" source: hosted - version: "2.0.32" + version: "2.0.33" flutter_riverpod: dependency: "direct main" description: @@ -644,10 +652,10 @@ packages: dependency: transitive description: name: flutter_svg - sha256: "055de8921be7b8e8b98a233c7a5ef84b3a6fcc32f46f1ebf5b9bb3576d108355" + sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95" url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.2.3" flutter_test: dependency: "direct dev" description: flutter @@ -686,10 +694,10 @@ packages: dependency: "direct main" description: name: get_it - sha256: "84792561b731b6463d053e9761a5236da967c369da10b134b8585a5e18429956" + sha256: "1d648d2dd2047d7f7450d5727ca24ee435f240385753d90b49650e3cdff32e56" url: "https://pub.dev" source: hosted - version: "9.0.5" + version: "9.2.0" glob: dependency: transitive description: @@ -727,10 +735,10 @@ packages: dependency: transitive description: name: hive_ce - sha256: "29f8791bf13fa6cf7435a58f1f82a7c9706973c867affa77c34d91e105762664" + sha256: b844955c89f61f479170632b971dcf6fbb8e7233d2a5c2e3c7b89e1b2986bdb5 url: "https://pub.dev" source: hosted - version: "2.17.0" + version: "2.19.1" hive_ce_flutter: dependency: "direct main" description: @@ -747,6 +755,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.10.0" + hooks: + dependency: transitive + description: + name: hooks + sha256: "5d309c86e7ce34cd8e37aa71cb30cb652d3829b900ab145e4d9da564b31d59f7" + url: "https://pub.dev" + source: hosted + version: "1.0.0" html: dependency: transitive description: @@ -807,10 +823,10 @@ packages: dependency: transitive description: name: image - sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" + sha256: "492bd52f6c4fbb6ee41f781ff27765ce5f627910e1e0cbecfa3d9add5562604c" url: "https://pub.dev" source: hosted - version: "4.5.4" + version: "4.7.2" intl: dependency: "direct main" description: @@ -831,10 +847,10 @@ packages: dependency: transitive description: name: isolate_channel - sha256: "68191008e3a219bc87cc8cddbcd1e29810bd9f3a0fdc2108b574ccbd9aafda08" + sha256: "000d617d021a608186b468584bbc6df2509ecba048f08510f832fdb9cf7aafbe" url: "https://pub.dev" source: hosted - version: "0.3.0" + version: "0.4.1" isolate_contactor: dependency: transitive description: @@ -871,10 +887,10 @@ packages: dependency: "direct dev" description: name: json_serializable - sha256: "33a040668b31b320aafa4822b7b1e177e163fc3c1e835c6750319d4ab23aa6fe" + sha256: c5b2ee75210a0f263c6c7b9eeea80553dbae96ea1bf57f02484e806a3ffdffa3 url: "https://pub.dev" source: hosted - version: "6.11.1" + version: "6.11.2" leak_tracker: dependency: transitive description: @@ -1007,10 +1023,10 @@ packages: dependency: transitive description: name: mockito - sha256: "4feb43bc4eb6c03e832f5fcd637d1abb44b98f9cfa245c58e27382f58859f8f6" + sha256: a45d1aa065b796922db7b9e7e7e45f921aed17adf3a8318a1f47097e7e695566 url: "https://pub.dev" source: hosted - version: "5.5.1" + version: "5.6.3" multi_split_view: dependency: transitive description: @@ -1019,6 +1035,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.6.1" + native_toolchain_c: + dependency: transitive + description: + name: native_toolchain_c + sha256: "89e83885ba09da5fdf2cdacc8002a712ca238c28b7f717910b34bcd27b0d03ac" + url: "https://pub.dev" + source: hosted + version: "0.17.4" nested: dependency: transitive description: @@ -1035,6 +1059,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" + objective_c: + dependency: transitive + description: + name: objective_c + sha256: "9922a1ad59ac5afb154cc948aa6ded01987a75003651d0a2866afc23f4da624e" + url: "https://pub.dev" + source: hosted + version: "9.2.3" package_config: dependency: transitive description: @@ -1087,18 +1119,18 @@ packages: dependency: transitive description: name: path_provider_android - sha256: e122c5ea805bb6773bb12ce667611265980940145be920cd09a4b0ec0285cb16 + sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e url: "https://pub.dev" source: hosted - version: "2.2.20" + version: "2.2.22" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: efaec349ddfc181528345c56f8eda9d6cccd71c177511b132c6a0ddaefaa2738 + sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699" url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.6.0" path_provider_linux: dependency: transitive description: @@ -1376,26 +1408,26 @@ packages: dependency: "direct main" description: name: shared_preferences - sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" + sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64" url: "https://pub.dev" source: hosted - version: "2.5.3" + version: "2.5.4" shared_preferences_android: dependency: transitive description: name: shared_preferences_android - sha256: "34266009473bf71d748912da4bf62d439185226c03e01e2d9687bc65bbfcb713" + sha256: "83af5c682796c0f7719c2bbf74792d113e40ae97981b8f266fa84574573556bc" url: "https://pub.dev" source: hosted - version: "2.4.15" + version: "2.4.18" shared_preferences_foundation: dependency: transitive description: name: shared_preferences_foundation - sha256: "1c33a907142607c40a7542768ec9badfd16293bac51da3a4482623d15845f88b" + sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" url: "https://pub.dev" source: hosted - version: "2.5.5" + version: "2.5.6" shared_preferences_linux: dependency: transitive description: @@ -1469,10 +1501,10 @@ packages: dependency: transitive description: name: source_gen - sha256: "9098ab86015c4f1d8af6486b547b11100e73b193e1899015033cb3e14ad20243" + sha256: "1d562a3c1f713904ebbed50d2760217fd8a51ca170ac4b05b0db490699dbac17" url: "https://pub.dev" source: hosted - version: "4.0.2" + version: "4.2.0" source_helper: dependency: transitive description: @@ -1597,10 +1629,10 @@ packages: dependency: transitive description: name: universal_io - sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" + sha256: f63cbc48103236abf48e345e07a03ce5757ea86285ed313a6a032596ed9301e2 url: "https://pub.dev" source: hosted - version: "2.2.2" + version: "2.3.1" url_launcher: dependency: "direct main" description: @@ -1613,34 +1645,34 @@ packages: dependency: transitive description: name: url_launcher_android - sha256: "5c8b6c2d89a78f5a1cca70a73d9d5f86c701b36b42f9c9dac7bad592113c28e9" + sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611" url: "https://pub.dev" source: hosted - version: "6.3.24" + version: "6.3.28" url_launcher_ios: dependency: transitive description: name: url_launcher_ios - sha256: "6b63f1441e4f653ae799166a72b50b1767321ecc263a57aadf825a7a2a5477d9" + sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad url: "https://pub.dev" source: hosted - version: "6.3.5" + version: "6.3.6" url_launcher_linux: dependency: transitive description: name: url_launcher_linux - sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" + sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a url: "https://pub.dev" source: hosted - version: "3.2.1" + version: "3.2.2" url_launcher_macos: dependency: transitive description: name: url_launcher_macos - sha256: "8262208506252a3ed4ff5c0dc1e973d2c0e0ef337d0a074d35634da5d44397c9" + sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18" url: "https://pub.dev" source: hosted - version: "3.2.4" + version: "3.2.5" url_launcher_platform_interface: dependency: transitive description: @@ -1653,18 +1685,18 @@ packages: dependency: transitive description: name: url_launcher_web - sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" + sha256: d0412fcf4c6b31ecfdb7762359b7206ffba3bbffd396c6d9f9c4616ece476c1f url: "https://pub.dev" source: hosted - version: "2.4.1" + version: "2.4.2" url_launcher_windows: dependency: transitive description: name: url_launcher_windows - sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" + sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.5" uuid: dependency: transitive description: @@ -1693,10 +1725,10 @@ packages: dependency: transitive description: name: vector_graphics_compiler - sha256: d354a7ec6931e6047785f4db12a1f61ec3d43b207fc0790f863818543f8ff0dc + sha256: "201e876b5d52753626af64b6359cd13ac6011b80728731428fd34bc840f71c9b" url: "https://pub.dev" source: hosted - version: "1.1.19" + version: "1.1.20" vector_math: dependency: transitive description: @@ -1868,5 +1900,5 @@ packages: source: hosted version: "1.1.4" sdks: - dart: ">=3.9.0 <4.0.0" - flutter: ">=3.38.0" + dart: ">=3.10.3 <4.0.0" + flutter: ">=3.38.4"