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)
This commit is contained in:
GT610
2026-01-22 12:03:08 +08:00
committed by GitHub
parent d14e97485f
commit f47d1e7141
20 changed files with 176 additions and 78 deletions

View File

@@ -854,6 +854,12 @@ abstract class AppLocalizations {
/// **'Invalid'** /// **'Invalid'**
String get 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. /// No description provided for @jumpServer.
/// ///
/// In en, this message translates to: /// In en, this message translates to:

View File

@@ -420,6 +420,10 @@ class AppLocalizationsDe extends AppLocalizations {
@override @override
String get invalid => 'Ungültig'; String get invalid => 'Ungültig';
@override
String get invalidHostFormat =>
'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.';
@override @override
String get jumpServer => 'Server springen'; String get jumpServer => 'Server springen';

View File

@@ -418,6 +418,10 @@ class AppLocalizationsEn extends AppLocalizations {
@override @override
String get invalid => 'Invalid'; String get invalid => 'Invalid';
@override
String get invalidHostFormat =>
'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.';
@override @override
String get jumpServer => 'Jump server'; String get jumpServer => 'Jump server';

View File

@@ -419,6 +419,10 @@ class AppLocalizationsEs extends AppLocalizations {
@override @override
String get invalid => 'Inválido'; String get invalid => 'Inválido';
@override
String get invalidHostFormat =>
'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.';
@override @override
String get jumpServer => 'Servidor de salto'; String get jumpServer => 'Servidor de salto';

View File

@@ -420,6 +420,10 @@ class AppLocalizationsFr extends AppLocalizations {
@override @override
String get invalid => 'Invalide'; String get invalid => 'Invalide';
@override
String get invalidHostFormat =>
'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.';
@override @override
String get jumpServer => 'Aller au serveur'; String get jumpServer => 'Aller au serveur';

View File

@@ -418,6 +418,10 @@ class AppLocalizationsId extends AppLocalizations {
@override @override
String get invalid => 'Tidak valid'; String get invalid => 'Tidak valid';
@override
String get invalidHostFormat =>
'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.';
@override @override
String get jumpServer => 'Lompat server'; String get jumpServer => 'Lompat server';

View File

@@ -407,6 +407,10 @@ class AppLocalizationsJa extends AppLocalizations {
@override @override
String get invalid => '無効'; String get invalid => '無効';
@override
String get invalidHostFormat =>
'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.';
@override @override
String get jumpServer => 'ジャンプサーバー'; String get jumpServer => 'ジャンプサーバー';

View File

@@ -419,6 +419,10 @@ class AppLocalizationsNl extends AppLocalizations {
@override @override
String get invalid => 'Ongeldig'; String get invalid => 'Ongeldig';
@override
String get invalidHostFormat =>
'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.';
@override @override
String get jumpServer => 'Spring naar server'; String get jumpServer => 'Spring naar server';

View File

@@ -418,6 +418,10 @@ class AppLocalizationsPt extends AppLocalizations {
@override @override
String get invalid => 'Inválido'; String get invalid => 'Inválido';
@override
String get invalidHostFormat =>
'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.';
@override @override
String get jumpServer => 'Servidor de salto'; String get jumpServer => 'Servidor de salto';

View File

@@ -419,6 +419,10 @@ class AppLocalizationsRu extends AppLocalizations {
@override @override
String get invalid => 'Недействительный'; String get invalid => 'Недействительный';
@override
String get invalidHostFormat =>
'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.';
@override @override
String get jumpServer => 'прыжковый сервер'; String get jumpServer => 'прыжковый сервер';

View File

@@ -418,6 +418,10 @@ class AppLocalizationsTr extends AppLocalizations {
@override @override
String get invalid => 'Geçersiz'; String get invalid => 'Geçersiz';
@override
String get invalidHostFormat =>
'Invalid host format. Only IPv4, IPv6, and domain characters are allowed.';
@override @override
String get jumpServer => 'Atlama sunucusu'; String get jumpServer => 'Atlama sunucusu';

View File

@@ -420,6 +420,10 @@ class AppLocalizationsUk extends AppLocalizations {
@override @override
String get invalid => 'Недійсний'; String get invalid => 'Недійсний';
@override
String get invalidHostFormat =>
'Недійсний формат хоста. Дозволено лише символи IPv4, IPv6 та домену.';
@override @override
String get jumpServer => 'Стрибковий Сервер'; String get jumpServer => 'Стрибковий Сервер';

View File

@@ -401,6 +401,9 @@ class AppLocalizationsZh extends AppLocalizations {
@override @override
String get invalid => '无效'; String get invalid => '无效';
@override
String get invalidHostFormat => '主机格式无效,仅支持 IPv4、IPv6 和域名字符。';
@override @override
String get jumpServer => '跳板服务器'; String get jumpServer => '跳板服务器';
@@ -1380,6 +1383,9 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override @override
String get invalid => '無效'; String get invalid => '無效';
@override
String get invalidHostFormat => '主機格式無效,僅支援 IPv4、IPv6 和網域字元。';
@override @override
String get jumpServer => '跳板伺服器'; String get jumpServer => '跳板伺服器';

View File

@@ -122,6 +122,7 @@
"install": "install", "install": "install",
"installDockerWithUrl": "Please https://docs.docker.com/engine/install docker first.", "installDockerWithUrl": "Please https://docs.docker.com/engine/install docker first.",
"invalid": "Invalid", "invalid": "Invalid",
"invalidHostFormat": "Invalid host format. Only IPv4, IPv6, and domain characters are allowed.",
"jumpServer": "Jump server", "jumpServer": "Jump server",
"keepForeground": "Keep app foreground!", "keepForeground": "Keep app foreground!",
"keepStatusWhenErr": "Preserve the last server state", "keepStatusWhenErr": "Preserve the last server state",

View File

@@ -122,6 +122,7 @@
"install": "Встановити", "install": "Встановити",
"installDockerWithUrl": "Будь ласка, спочатку встановіть Docker. (https://docs.docker.com/engine/install)", "installDockerWithUrl": "Будь ласка, спочатку встановіть Docker. (https://docs.docker.com/engine/install)",
"invalid": "Недійсний", "invalid": "Недійсний",
"invalidHostFormat": "Недійсний формат хоста. Дозволено лише символи IPv4, IPv6 та домену.",
"jumpServer": "Стрибковий Сервер", "jumpServer": "Стрибковий Сервер",
"keepForeground": "Тримати застосунок на передньому плані!", "keepForeground": "Тримати застосунок на передньому плані!",
"keepStatusWhenErr": "Зберегати останній стан сервера", "keepStatusWhenErr": "Зберегати останній стан сервера",

View File

@@ -122,6 +122,7 @@
"install": "安装", "install": "安装",
"installDockerWithUrl": "请先前往 https://docs.docker.com/engine/install 安装 Docker", "installDockerWithUrl": "请先前往 https://docs.docker.com/engine/install 安装 Docker",
"invalid": "无效", "invalid": "无效",
"invalidHostFormat": "主机格式无效,仅支持 IPv4、IPv6 和域名字符。",
"jumpServer": "跳板服务器", "jumpServer": "跳板服务器",
"keepForeground": "请将应用保持在前台运行", "keepForeground": "请将应用保持在前台运行",
"keepStatusWhenErr": "保留上次的服务器状态", "keepStatusWhenErr": "保留上次的服务器状态",

View File

@@ -122,6 +122,7 @@
"install": "安裝", "install": "安裝",
"installDockerWithUrl": "請先前往 https://docs.docker.com/engine/install 安裝 Docker", "installDockerWithUrl": "請先前往 https://docs.docker.com/engine/install 安裝 Docker",
"invalid": "無效", "invalid": "無效",
"invalidHostFormat": "主機格式無效,僅支援 IPv4、IPv6 和網域字元。",
"jumpServer": "跳板伺服器", "jumpServer": "跳板伺服器",
"keepForeground": "請讓 App 保持在前景執行", "keepForeground": "請讓 App 保持在前景執行",
"keepStatusWhenErr": "保留上次的伺服器狀態", "keepStatusWhenErr": "保留上次的伺服器狀態",

View File

@@ -1,5 +1,8 @@
part of 'edit.dart'; 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 { extension _Actions on _ServerEditPageState {
Future<void> _onTapSSHDiscovery() async { Future<void> _onTapSSHDiscovery() async {
try { try {
@@ -222,6 +225,11 @@ extension _Actions on _ServerEditPageState {
return; return;
} }
if (!_hostReg.hasMatch(_ipController.text)) {
context.showSnackBar(l10n.invalidHostFormat);
return;
}
if (_keyIdx.value == null && _passwordController.text.isEmpty) { if (_keyIdx.value == null && _passwordController.text.isEmpty) {
final ok = await context.showRoundDialog<bool>( final ok = await context.showRoundDialog<bool>(
title: libL10n.attention, title: libL10n.attention,

View File

@@ -12,7 +12,6 @@ import flutter_secure_storage_macos
import icloud_storage import icloud_storage
import local_auth_darwin import local_auth_darwin
import package_info_plus import package_info_plus
import path_provider_foundation
import screen_retriever_macos import screen_retriever_macos
import share_plus import share_plus
import shared_preferences_foundation import shared_preferences_foundation
@@ -28,7 +27,6 @@ func RegisterGeneratedPlugins(registry: FlutterPluginRegistry) {
IcloudStoragePlugin.register(with: registry.registrar(forPlugin: "IcloudStoragePlugin")) IcloudStoragePlugin.register(with: registry.registrar(forPlugin: "IcloudStoragePlugin"))
LocalAuthPlugin.register(with: registry.registrar(forPlugin: "LocalAuthPlugin")) LocalAuthPlugin.register(with: registry.registrar(forPlugin: "LocalAuthPlugin"))
FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin")) FPPPackageInfoPlusPlugin.register(with: registry.registrar(forPlugin: "FPPPackageInfoPlusPlugin"))
PathProviderPlugin.register(with: registry.registrar(forPlugin: "PathProviderPlugin"))
ScreenRetrieverMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverMacosPlugin")) ScreenRetrieverMacosPlugin.register(with: registry.registrar(forPlugin: "ScreenRetrieverMacosPlugin"))
SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin")) SharePlusMacosPlugin.register(with: registry.registrar(forPlugin: "SharePlusMacosPlugin"))
SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin")) SharedPreferencesPlugin.register(with: registry.registrar(forPlugin: "SharedPreferencesPlugin"))

View File

@@ -5,18 +5,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: _fe_analyzer_shared name: _fe_analyzer_shared
sha256: f0bb5d1648339c8308cc0b9838d8456b3cfe5c91f9dc1a735b4d003269e5da9a sha256: c209688d9f5a5f26b2fb47a188131a6fb9e876ae9e47af3737c0b4f58a93470d
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "88.0.0" version: "91.0.0"
analyzer: analyzer:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: analyzer name: analyzer
sha256: "0b7b9c329d2879f8f05d6c05b32ee9ec025f39b077864bdb5ac9a7b63418a98f" sha256: a40a0cee526a7e1f387c6847bd8a5ccbf510a75952ef8a28338e989558072cb0
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.1.1" version: "8.4.0"
analyzer_buffer: analyzer_buffer:
dependency: transitive dependency: transitive
description: description:
@@ -29,18 +29,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: analyzer_plugin name: analyzer_plugin
sha256: dd574a0ab77de88b7d9c12bc4b626109a5ca9078216a79041a5c24c3a1bd103c sha256: "08cfefa90b4f4dd3b447bda831cecf644029f9f8e22820f6ee310213ebe2dd53"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.13.7" version: "0.13.10"
animations: animations:
dependency: transitive dependency: transitive
description: description:
name: animations name: animations
sha256: a8031b276f0a7986ac907195f10ca7cd04ecf2a8a566bd6dbe03018a9b02b427 sha256: "18938cefd7dcc04e1ecac0db78973761a01e4bc2d6bfae0cfa596bfeac9e96ab"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.1.0" version: "2.1.1"
ansicolor: ansicolor:
dependency: transitive dependency: transitive
description: description:
@@ -125,10 +125,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: build name: build
sha256: dfb67ccc9a78c642193e0c2d94cb9e48c2c818b3178a86097d644acdcde6a8d9 sha256: "275bf6bb2a00a9852c28d4e0b410da1d833a734d57d39d44f94bfc895a484ec3"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.2" version: "4.0.4"
build_config: build_config:
dependency: transitive dependency: transitive
description: description:
@@ -149,10 +149,10 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: build_runner name: build_runner
sha256: "04f69b1502f66e22ae7990bbd01eb552b7f12793c4d3ea6e715d0ac5e98bcdac" sha256: b4d854962a32fd9f8efc0b76f98214790b833af8b2e9b2df6bfc927c0415a072
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.10.2" version: "2.10.5"
built_collection: built_collection:
dependency: transitive dependency: transitive
description: description:
@@ -165,10 +165,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: built_value name: built_value
sha256: a30f0a0e38671e89a492c44d005b5545b830a961575bbd8336d42869ff71066d sha256: "7931c90b84bc573fef103548e354258ae4c9d28d140e41961df6843c5d60d4d8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "8.12.0" version: "8.12.3"
camera: camera:
dependency: transitive dependency: transitive
description: description:
@@ -181,18 +181,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: camera_android_camerax name: camera_android_camerax
sha256: d5256612833f9169c1698599a87370490622a188c5a7fb601169bb7b2f41f22b sha256: bc7a96998258adddd0b653dd693b0874537707d58b0489708f2a646e4f124246
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.6.24+1" version: "0.6.27"
camera_avfoundation: camera_avfoundation:
dependency: transitive dependency: transitive
description: description:
name: camera_avfoundation name: camera_avfoundation
sha256: "34bcd5db30e52414f1f0783c5e3f566909fab14141a21b3b576c78bd35382bf6" sha256: "087a9fadef20325cb246b4c13344a3ce8e408acfc3e0c665ebff0ec3144d7163"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.9.22+4" version: "0.9.22+8"
camera_platform_interface: camera_platform_interface:
dependency: transitive dependency: transitive
description: description:
@@ -266,14 +266,22 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.2" 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: code_builder:
dependency: transitive dependency: transitive
description: description:
name: code_builder name: code_builder
sha256: "11654819532ba94c34de52ff5feb52bd81cba1de00ef2ed622fd50295f9d4243" sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.11.0" version: "4.11.1"
collection: collection:
dependency: transitive dependency: transitive
description: description:
@@ -311,10 +319,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: cross_file name: cross_file
sha256: "942a4791cd385a68ccb3b32c71c427aba508a1bb949b86dff2adbe4049f16239" sha256: "701dcfc06da0882883a2657c445103380e53e647060ad8d9dfb710c100996608"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.3.5" version: "0.3.5+1"
crypto: crypto:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -343,18 +351,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: custom_lint_visitor name: custom_lint_visitor
sha256: "446d68322747ec1c36797090de776aa72228818d3d80685a91ff524d163fee6d" sha256: "91f2a81e9f0abb4b9f3bb529f78b6227ce6050300d1ae5b1e2c69c66c7a566d8"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.0.0+8.1.1" version: "1.0.0+8.4.0"
dart_style: dart_style:
dependency: transitive dependency: transitive
description: description:
name: dart_style name: dart_style
sha256: c87dfe3d56f183ffe9106a18aebc6db431fc7c98c31a54b952a77f3d54a85697 sha256: a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.2" version: "3.1.3"
dartssh2: dartssh2:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -408,10 +416,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: equatable name: equatable
sha256: "567c64b3cb4cf82397aac55f4f0cbd3ca20d77c6c03bedbc4ceaddc08904aef7" sha256: "3e0141505477fd8ad55d6eb4e7776d3fe8430be8e497ccb1521370c3f21a3e2b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.7" version: "2.0.8"
extended_image: extended_image:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -456,10 +464,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: file_picker name: file_picker
sha256: f8f4ea435f791ab1f817b4e338ed958cb3d04ba43d6736ffc39958d950754967 sha256: d974b6ba2606371ac71dd94254beefb6fa81185bde0b59bdc1df09885da85fde
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "10.3.6" version: "10.3.8"
fixnum: fixnum:
dependency: transitive dependency: transitive
description: description:
@@ -572,10 +580,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_plugin_android_lifecycle name: flutter_plugin_android_lifecycle
sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687" sha256: ee8068e0e1cd16c4a82714119918efdeed33b3ba7772c54b5d094ab53f9b7fd1
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.32" version: "2.0.33"
flutter_riverpod: flutter_riverpod:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -644,10 +652,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: flutter_svg name: flutter_svg
sha256: "055de8921be7b8e8b98a233c7a5ef84b3a6fcc32f46f1ebf5b9bb3576d108355" sha256: "87fbd7c534435b6c5d9d98b01e1fd527812b82e68ddd8bd35fc45ed0fa8f0a95"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.2" version: "2.2.3"
flutter_test: flutter_test:
dependency: "direct dev" dependency: "direct dev"
description: flutter description: flutter
@@ -686,10 +694,10 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: get_it name: get_it
sha256: "84792561b731b6463d053e9761a5236da967c369da10b134b8585a5e18429956" sha256: "1d648d2dd2047d7f7450d5727ca24ee435f240385753d90b49650e3cdff32e56"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "9.0.5" version: "9.2.0"
glob: glob:
dependency: transitive dependency: transitive
description: description:
@@ -727,10 +735,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: hive_ce name: hive_ce
sha256: "29f8791bf13fa6cf7435a58f1f82a7c9706973c867affa77c34d91e105762664" sha256: b844955c89f61f479170632b971dcf6fbb8e7233d2a5c2e3c7b89e1b2986bdb5
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.17.0" version: "2.19.1"
hive_ce_flutter: hive_ce_flutter:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -747,6 +755,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.10.0" version: "1.10.0"
hooks:
dependency: transitive
description:
name: hooks
sha256: "5d309c86e7ce34cd8e37aa71cb30cb652d3829b900ab145e4d9da564b31d59f7"
url: "https://pub.dev"
source: hosted
version: "1.0.0"
html: html:
dependency: transitive dependency: transitive
description: description:
@@ -807,10 +823,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: image name: image
sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" sha256: "492bd52f6c4fbb6ee41f781ff27765ce5f627910e1e0cbecfa3d9add5562604c"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.5.4" version: "4.7.2"
intl: intl:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -831,10 +847,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: isolate_channel name: isolate_channel
sha256: "68191008e3a219bc87cc8cddbcd1e29810bd9f3a0fdc2108b574ccbd9aafda08" sha256: "000d617d021a608186b468584bbc6df2509ecba048f08510f832fdb9cf7aafbe"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "0.3.0" version: "0.4.1"
isolate_contactor: isolate_contactor:
dependency: transitive dependency: transitive
description: description:
@@ -871,10 +887,10 @@ packages:
dependency: "direct dev" dependency: "direct dev"
description: description:
name: json_serializable name: json_serializable
sha256: "33a040668b31b320aafa4822b7b1e177e163fc3c1e835c6750319d4ab23aa6fe" sha256: c5b2ee75210a0f263c6c7b9eeea80553dbae96ea1bf57f02484e806a3ffdffa3
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.11.1" version: "6.11.2"
leak_tracker: leak_tracker:
dependency: transitive dependency: transitive
description: description:
@@ -1007,10 +1023,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: mockito name: mockito
sha256: "4feb43bc4eb6c03e832f5fcd637d1abb44b98f9cfa245c58e27382f58859f8f6" sha256: a45d1aa065b796922db7b9e7e7e45f921aed17adf3a8318a1f47097e7e695566
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "5.5.1" version: "5.6.3"
multi_split_view: multi_split_view:
dependency: transitive dependency: transitive
description: description:
@@ -1019,6 +1035,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.6.1" 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: nested:
dependency: transitive dependency: transitive
description: description:
@@ -1035,6 +1059,14 @@ packages:
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.0.2" 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: package_config:
dependency: transitive dependency: transitive
description: description:
@@ -1087,18 +1119,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: path_provider_android name: path_provider_android
sha256: e122c5ea805bb6773bb12ce667611265980940145be920cd09a4b0ec0285cb16 sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.20" version: "2.2.22"
path_provider_foundation: path_provider_foundation:
dependency: transitive dependency: transitive
description: description:
name: path_provider_foundation name: path_provider_foundation
sha256: efaec349ddfc181528345c56f8eda9d6cccd71c177511b132c6a0ddaefaa2738 sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.3" version: "2.6.0"
path_provider_linux: path_provider_linux:
dependency: transitive dependency: transitive
description: description:
@@ -1376,26 +1408,26 @@ packages:
dependency: "direct main" dependency: "direct main"
description: description:
name: shared_preferences name: shared_preferences
sha256: "6e8bf70b7fef813df4e9a36f658ac46d107db4b4cfe1048b477d4e453a8159f5" sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.3" version: "2.5.4"
shared_preferences_android: shared_preferences_android:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_android name: shared_preferences_android
sha256: "34266009473bf71d748912da4bf62d439185226c03e01e2d9687bc65bbfcb713" sha256: "83af5c682796c0f7719c2bbf74792d113e40ae97981b8f266fa84574573556bc"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.15" version: "2.4.18"
shared_preferences_foundation: shared_preferences_foundation:
dependency: transitive dependency: transitive
description: description:
name: shared_preferences_foundation name: shared_preferences_foundation
sha256: "1c33a907142607c40a7542768ec9badfd16293bac51da3a4482623d15845f88b" sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.5.5" version: "2.5.6"
shared_preferences_linux: shared_preferences_linux:
dependency: transitive dependency: transitive
description: description:
@@ -1469,10 +1501,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: source_gen name: source_gen
sha256: "9098ab86015c4f1d8af6486b547b11100e73b193e1899015033cb3e14ad20243" sha256: "1d562a3c1f713904ebbed50d2760217fd8a51ca170ac4b05b0db490699dbac17"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "4.0.2" version: "4.2.0"
source_helper: source_helper:
dependency: transitive dependency: transitive
description: description:
@@ -1597,10 +1629,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: universal_io name: universal_io
sha256: "1722b2dcc462b4b2f3ee7d188dad008b6eb4c40bbd03a3de451d82c78bba9aad" sha256: f63cbc48103236abf48e345e07a03ce5757ea86285ed313a6a032596ed9301e2
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.2.2" version: "2.3.1"
url_launcher: url_launcher:
dependency: "direct main" dependency: "direct main"
description: description:
@@ -1613,34 +1645,34 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_android name: url_launcher_android
sha256: "5c8b6c2d89a78f5a1cca70a73d9d5f86c701b36b42f9c9dac7bad592113c28e9" sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.3.24" version: "6.3.28"
url_launcher_ios: url_launcher_ios:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_ios name: url_launcher_ios
sha256: "6b63f1441e4f653ae799166a72b50b1767321ecc263a57aadf825a7a2a5477d9" sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "6.3.5" version: "6.3.6"
url_launcher_linux: url_launcher_linux:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_linux name: url_launcher_linux
sha256: "4e9ba368772369e3e08f231d2301b4ef72b9ff87c31192ef471b380ef29a4935" sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.2.1" version: "3.2.2"
url_launcher_macos: url_launcher_macos:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_macos name: url_launcher_macos
sha256: "8262208506252a3ed4ff5c0dc1e973d2c0e0ef337d0a074d35634da5d44397c9" sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.2.4" version: "3.2.5"
url_launcher_platform_interface: url_launcher_platform_interface:
dependency: transitive dependency: transitive
description: description:
@@ -1653,18 +1685,18 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_web name: url_launcher_web
sha256: "4bd2b7b4dc4d4d0b94e5babfffbca8eac1a126c7f3d6ecbc1a11013faa3abba2" sha256: d0412fcf4c6b31ecfdb7762359b7206ffba3bbffd396c6d9f9c4616ece476c1f
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "2.4.1" version: "2.4.2"
url_launcher_windows: url_launcher_windows:
dependency: transitive dependency: transitive
description: description:
name: url_launcher_windows name: url_launcher_windows
sha256: "3284b6d2ac454cf34f114e1d3319866fdd1e19cdc329999057e44ffe936cfa77" sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "3.1.4" version: "3.1.5"
uuid: uuid:
dependency: transitive dependency: transitive
description: description:
@@ -1693,10 +1725,10 @@ packages:
dependency: transitive dependency: transitive
description: description:
name: vector_graphics_compiler name: vector_graphics_compiler
sha256: d354a7ec6931e6047785f4db12a1f61ec3d43b207fc0790f863818543f8ff0dc sha256: "201e876b5d52753626af64b6359cd13ac6011b80728731428fd34bc840f71c9b"
url: "https://pub.dev" url: "https://pub.dev"
source: hosted source: hosted
version: "1.1.19" version: "1.1.20"
vector_math: vector_math:
dependency: transitive dependency: transitive
description: description:
@@ -1868,5 +1900,5 @@ packages:
source: hosted source: hosted
version: "1.1.4" version: "1.1.4"
sdks: sdks:
dart: ">=3.9.0 <4.0.0" dart: ">=3.10.3 <4.0.0"
flutter: ">=3.38.0" flutter: ">=3.38.4"