diff --git a/README.md b/README.md index 19751b6..fb21452 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ flutter pub run build_runner build --delete-conflicting-outputs~ ## flutter打包 ``` -flutter build apk --build-name 1.5.0 --build-number 150 +flutter build apk --build-name 1.5.1 --build-number 151 --build-name为版本号(展示) --build-number为版本号(内部比较) ``` diff --git a/lib/common/services/database/database_migration.dart b/lib/common/services/database/database_migration.dart index 60608f0..54b6bd5 100644 --- a/lib/common/services/database/database_migration.dart +++ b/lib/common/services/database/database_migration.dart @@ -413,9 +413,15 @@ abstract class DatabaseMigration { /// 版本14为打印任务补充后端指令流列,指令打印模式可离线重试且不改变出纸内容。 /// /// 列可空且不回填:旧任务与旧后端无指令,指令模式下回退 invoiceUrl 图片打印。 + /// 外部存储旧库可能已带该列(中间态构建建库、降级重建),重复 ALTER 会中断启动, + /// 因此先查列再添加,保证跨版本安装可重入。 static Migration migration13To14 = Migration(13, 14, (database) async { - await database - .execute('ALTER TABLE print_history ADD COLUMN printCmd TEXT'); + final columns = await database.rawQuery('PRAGMA table_info(print_history)'); + final hasPrintCmd = columns.any((column) => column['name'] == 'printCmd'); + if (!hasPrintCmd) { + await database + .execute('ALTER TABLE print_history ADD COLUMN printCmd TEXT'); + } }); /// 按起始版本升序返回全部迁移,Floor 打开旧数据库时据此连续升级到当前版本。 diff --git a/lib/common/values/constants.dart b/lib/common/values/constants.dart index 72c24a3..e22da94 100644 --- a/lib/common/values/constants.dart +++ b/lib/common/values/constants.dart @@ -15,8 +15,8 @@ class Constants { static const pwdEncKey = 'pigxpigxpigxpigx'; /// 服务 url 线上 - static const apiUrl = 'https://dzc-test-1.fy.takin.cc'; - // static const apiUrl = 'https://www.zianxin.com/api'; + // static const apiUrl = 'https://dzc-test-1.fy.takin.cc'; + static const apiUrl = 'https://www.zianxin.com/api'; // static const apiUrl = 'https://dzc-test-1.fy.takin.cc'; diff --git a/lib/common/widgets/order/select_pay_type_dialog.dart b/lib/common/widgets/order/select_pay_type_dialog.dart index cba97a1..a2d7e19 100644 --- a/lib/common/widgets/order/select_pay_type_dialog.dart +++ b/lib/common/widgets/order/select_pay_type_dialog.dart @@ -1686,7 +1686,7 @@ class _CheckoutCartItemSummary extends StatelessWidget { /// 套餐展开/收起回调;其热区与右侧数量步进器相互独立。 final VoidCallback? onComboToggle; - /// 构建固定图片、商品信息和右对齐小计金额。 + /// 构建整行名称、固定图片、商品信息和右对齐小计金额。 @override Widget build(BuildContext context) { final theme = FTheme.of(context); @@ -1697,6 +1697,30 @@ class _CheckoutCartItemSummary extends StatelessWidget { : 'x${item.productNumber}'; final stockText = item.stock == null ? '库存未知' : '库存 ${item.stock}'; final stockUnavailable = item.stock == 0; + // 名称+类型标签独占卡片一整行(左缘到右缘),不再与图片、步进器同行 + // 抢宽度;超长名称等比缩小兜底(与食堂商品卡一致),保证永远单行。 + final nameRow = [ + LayoutBuilder( + builder: (context, constraints) => FittedBox( + fit: BoxFit.scaleDown, + alignment: Alignment.centerLeft, + child: SizedBox( + width: constraints.maxWidth, + child: Text( + item.productName, + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: theme.typography.base.copyWith( + color: XfjDesignTokens.ink, + fontWeight: FontWeight.w700, + height: 1.3, + ), + ), + ), + ), + ).expanded(), + ProductTypeTag(isCombo: combo), + ].toRowSpace(space: 8.w); final productDetails = [ _CheckoutProductImage( key: ValueKey( @@ -1708,20 +1732,6 @@ class _CheckoutCartItemSummary extends StatelessWidget { height: 64.h, ), [ - [ - Text( - item.productName, - maxLines: 2, - overflow: TextOverflow.ellipsis, - style: theme.typography.base.copyWith( - color: XfjDesignTokens.ink, - fontWeight: FontWeight.w700, - height: 1.3, - ), - ).expanded(), - ProductTypeTag(isCombo: combo), - ].toRowSpace(space: 8.w), - SizedBox(height: 7.h), [ Text( '单价 ${_paymentMoney(item.productPrice)}', @@ -1822,16 +1832,43 @@ class _CheckoutCartItemSummary extends StatelessWidget { ), ); return [ - productDetailsAction.expanded(), - if (editable) - [ - _CheckoutQuantityStepper( - controller: controller, - item: item, - updating: updating, - onChanged: (value) => onQuantityChanged!(item, value), - pendingQuantity: pendingQuantity, - ), + nameRow, + SizedBox(height: 7.h), + [ + productDetailsAction.expanded(), + if (editable) + [ + _CheckoutQuantityStepper( + controller: controller, + item: item, + updating: updating, + onChanged: (value) => onQuantityChanged!(item, value), + pendingQuantity: pendingQuantity, + ), + [ + Text( + _paymentMoney(item.totalPrice), + key: ValueKey( + 'checkout-item-total-${item.productServiceUniqueCode}', + ), + textAlign: TextAlign.right, + style: theme.typography.base.copyWith( + color: XfjDesignTokens.ink, + fontWeight: FontWeight.w800, + fontFeatures: const [FontFeature.tabularFigures()], + ), + ), + Text( + '商品小计', + style: theme.typography.xs.copyWith( + color: XfjDesignTokens.muted, + ), + ), + ].toColumn(crossAxisAlignment: CrossAxisAlignment.end).width( + 88.w < 88 ? 88 : 88.w, + ), + ].toRowSpace(space: 8.w).width(240.w < 240 ? 240 : 240.w) + else [ Text( _paymentMoney(item.totalPrice), @@ -1847,35 +1884,12 @@ class _CheckoutCartItemSummary extends StatelessWidget { ), Text( '商品小计', - style: theme.typography.xs.copyWith( - color: XfjDesignTokens.muted, - ), + style: theme.typography.xs.copyWith(color: XfjDesignTokens.muted), ), - ].toColumn(crossAxisAlignment: CrossAxisAlignment.end).width( - 88.w < 88 ? 88 : 88.w, - ), - ].toRowSpace(space: 8.w).width(240.w < 240 ? 240 : 240.w) - else - [ - Text( - _paymentMoney(item.totalPrice), - key: ValueKey( - 'checkout-item-total-${item.productServiceUniqueCode}', - ), - textAlign: TextAlign.right, - style: theme.typography.base.copyWith( - color: XfjDesignTokens.ink, - fontWeight: FontWeight.w800, - fontFeatures: const [FontFeature.tabularFigures()], - ), - ), - Text( - '商品小计', - style: theme.typography.xs.copyWith(color: XfjDesignTokens.muted), - ), - ].toColumn(crossAxisAlignment: CrossAxisAlignment.end).width(104.w), + ].toColumn(crossAxisAlignment: CrossAxisAlignment.end).width(104.w), + ].toRowSpace(space: 12.w, crossAxisAlignment: CrossAxisAlignment.center), ] - .toRowSpace(space: 12.w, crossAxisAlignment: CrossAxisAlignment.center) + .toColumn(crossAxisAlignment: CrossAxisAlignment.stretch) .padding(horizontal: 8.w, vertical: 12.h); } } diff --git a/lib/pages/terminal/menu_query/reservation_shortcut_actions.dart b/lib/pages/terminal/menu_query/reservation_shortcut_actions.dart index 4c354c4..1e7bd6d 100644 --- a/lib/pages/terminal/menu_query/reservation_shortcut_actions.dart +++ b/lib/pages/terminal/menu_query/reservation_shortcut_actions.dart @@ -163,7 +163,7 @@ mixin ReservationMenuQueryShortcutActions { return; } unawaited( - shortcutSpeaker('已切换为${target.title},再次点击开始${target.title}'), + shortcutSpeaker('已切换为${target.title}再次点击开始${target.title}识别'), ); unawaited(selectMethod(target)); } diff --git a/pubspec.lock b/pubspec.lock index 076a952..8bce699 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -6,7 +6,7 @@ packages: description: name: _fe_analyzer_shared sha256: "16e298750b6d0af7ce8a3ba7c18c69c3785d11b15ec83f6dcd0ad2a0009b3cab" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "76.0.0" _macros: @@ -19,7 +19,7 @@ packages: description: name: analyzer sha256: "1f14db053a8c23e260789e9b0980fa27f2680dd640932cae5e1137cce0e46e1e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.11.0" android_id: @@ -27,7 +27,7 @@ packages: description: name: android_id sha256: f6489be4c4380cdb55a99db5b03764d936e84e9d5258a26571aa500bd1159fe0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.4.1" archive: @@ -35,7 +35,7 @@ packages: description: name: archive sha256: a96e8b390886ee8abb49b7bd3ac8df6f451c621619f52a26e815fdcf568959ff - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.9" args: @@ -43,7 +43,7 @@ packages: description: name: args sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.7.0" async: @@ -51,7 +51,7 @@ packages: description: name: async sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.11.0" background_downloader: @@ -59,7 +59,7 @@ packages: description: name: background_downloader sha256: "0873a939f5a301872cb7614e12f759fbccef2e3ed0d0d37b540dde7611275b12" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "7.12.3" barcode: @@ -67,7 +67,7 @@ packages: description: name: barcode sha256: "7b6729c37e3b7f34233e2318d866e8c48ddb46c1f7ad01ff7bb2a8de1da2b9f4" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.9" bidi: @@ -75,7 +75,7 @@ packages: description: name: bidi sha256: "77f475165e94b261745cf1032c751e2032b8ed92ccb2bf5716036db79320637d" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.13" boolean_selector: @@ -83,7 +83,7 @@ packages: description: name: boolean_selector sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.1" build: @@ -91,7 +91,7 @@ packages: description: name: build sha256: cef23f1eda9b57566c81e2133d196f8e3df48f244b317368d65c5943d91148f0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.2" build_config: @@ -99,7 +99,7 @@ packages: description: name: build_config sha256: "4ae2de3e1e67ea270081eaee972e1bd8f027d459f249e0f1186730784c2e7e33" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.2" build_daemon: @@ -107,7 +107,7 @@ packages: description: name: build_daemon sha256: "8e928697a82be082206edb0b9c99c5a4ad6bc31c9e9b8b2f291ae65cd4a25daa" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.4" build_resolvers: @@ -115,7 +115,7 @@ packages: description: name: build_resolvers sha256: b9e4fda21d846e192628e7a4f6deda6888c36b5b69ba02ff291a01fd529140f0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.4" build_runner: @@ -123,7 +123,7 @@ packages: description: name: build_runner sha256: "74691599a5bc750dc96a6b4bfd48f7d9d66453eab04c7f4063134800d6a5c573" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.14" build_runner_core: @@ -131,7 +131,7 @@ packages: description: name: build_runner_core sha256: "22e3aa1c80e0ada3722fe5b63fd43d9c8990759d0a2cf489c8c5d7b2bdebc021" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "8.0.0" built_collection: @@ -139,7 +139,7 @@ packages: description: name: built_collection sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.1.1" built_value: @@ -147,7 +147,7 @@ packages: description: name: built_value sha256: f87ea98192116f7093cb214551ce1929caae0681fdba282b3d8b4462adee7bb7 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "8.13.0" cached_network_image: @@ -155,7 +155,7 @@ packages: description: name: cached_network_image sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.4.1" cached_network_image_platform_interface: @@ -163,7 +163,7 @@ packages: description: name: cached_network_image_platform_interface sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.1.1" cached_network_image_web: @@ -171,7 +171,7 @@ packages: description: name: cached_network_image_web sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.1" characters: @@ -179,7 +179,7 @@ packages: description: name: characters sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.0" charcode: @@ -187,7 +187,7 @@ packages: description: name: charcode sha256: fb0f1107cac15a5ea6ef0a6ef71a807b9e4267c713bb93e00e92d737cc8dbd8a - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" checked_yaml: @@ -195,7 +195,7 @@ packages: description: name: checked_yaml sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.3" clock: @@ -203,7 +203,7 @@ packages: description: name: clock sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" code_builder: @@ -211,7 +211,7 @@ packages: description: name: code_builder sha256: "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.10.1" collection: @@ -219,7 +219,7 @@ packages: description: name: collection sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.19.0" common_utils: @@ -227,7 +227,7 @@ packages: description: name: common_utils sha256: c26884339b13ff99b0739e56f4b02090c84054ed9dd3a045435cd24e7b99c2c1 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" connectivity_plus: @@ -235,7 +235,7 @@ packages: description: name: connectivity_plus sha256: b5e72753cf63becce2c61fd04dfe0f1c430cc5278b53a1342dc5ad839eab29ec - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.5" connectivity_plus_platform_interface: @@ -243,7 +243,7 @@ packages: description: name: connectivity_plus_platform_interface sha256: "3c09627c536d22fd24691a905cdd8b14520de69da52c7a97499c8be5284a32ed" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" convert: @@ -251,7 +251,7 @@ packages: description: name: convert sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.2" cron: @@ -259,7 +259,7 @@ packages: description: name: cron sha256: "2af3de2cabcc81346c00ff9db06296cdaf37ad17bd6f97fb63777a9ddefcacf3" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.6.2" crypto: @@ -267,7 +267,7 @@ packages: description: name: crypto sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.7" csslib: @@ -275,7 +275,7 @@ packages: description: name: csslib sha256: "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" cupertino_icons: @@ -283,7 +283,7 @@ packages: description: name: cupertino_icons sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.8" dart_style: @@ -291,7 +291,7 @@ packages: description: name: dart_style sha256: "7306ab8a2359a48d22310ad823521d723acfed60ee1f7e37388e8986853b6820" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.8" data_table_2: @@ -299,7 +299,7 @@ packages: description: name: data_table_2 sha256: cb31d465dcf1e1598a662d06d3d2c16c73700ae9e837a3d91588f1dda7519abc - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.7.2" dbus: @@ -307,7 +307,7 @@ packages: description: name: dbus sha256: d0c98dcd4f5169878b6cf8f6e0a52403a9dff371a3e2f019697accbf6f44a270 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.12" decimal: @@ -315,7 +315,7 @@ packages: description: name: decimal sha256: "2c3c8b74f2948066d3f42585477aec9cfc48fefd7a723a4d4274a6c71a5c0df7" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.6" dio: @@ -323,7 +323,7 @@ packages: description: name: dio sha256: "5598aa796bbf4699afd5c67c0f5f6e2ed542afc956884b9cd58c306966efc260" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.7.0" dio_web_adapter: @@ -331,7 +331,7 @@ packages: description: name: dio_web_adapter sha256: "33259a9276d6cea88774a0000cfae0d861003497755969c92faa223108620dc8" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" drago_pos_printer: @@ -339,7 +339,7 @@ packages: description: name: drago_pos_printer sha256: "8b601221dcf804f662228a6ae68d0c644543b6df0026e40808fc0fbf2c19871c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" drago_usb_printer: @@ -354,7 +354,7 @@ packages: description: name: ducafe_ui_core sha256: "92ff9b05654e1b5ae2adbeac7227c669655da73f134bede75ad9aa1c505af904" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.6" dylib: @@ -362,7 +362,7 @@ packages: description: name: dylib sha256: bf609b3eb6492a3309b3d1dbe8f83a4031de5535dd7686be33487051cc760bb0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.3" equatable: @@ -370,7 +370,7 @@ packages: description: name: equatable sha256: "3bce007a596ff8b3119c45d68aaef631272537c03d30e5d4534dd24bf4c5eaa2" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" event_bus: @@ -378,7 +378,7 @@ packages: description: name: event_bus sha256: "1a55e97923769c286d295240048fc180e7b0768902c3c2e869fe059aafa15304" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" external_path: @@ -386,7 +386,7 @@ packages: description: name: external_path sha256: "68a18a2aa51ec012d7013ea2a80305dc5372f3577a2bbcc7dcc5550b25a5a73b" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" fake_async: @@ -394,7 +394,7 @@ packages: description: name: fake_async sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.1" ffi: @@ -402,7 +402,7 @@ packages: description: name: ffi sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.3" file: @@ -410,7 +410,7 @@ packages: description: name: file sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "7.0.1" fixnum: @@ -418,7 +418,7 @@ packages: description: name: fixnum sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" floor: @@ -426,7 +426,7 @@ packages: description: name: floor sha256: "52a8eac2c8d274e7c0c54251226f59786bb5b749365a2d8537d8095aa5132d92" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.2" floor_annotation: @@ -434,7 +434,7 @@ packages: description: name: floor_annotation sha256: a40949580a7ab0eee572686e2d3b1638fd6bd6a753e661d792ab4236b365b23b - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.5.0" floor_generator: @@ -442,7 +442,7 @@ packages: description: name: floor_generator sha256: "1499b3ab878a807e6fbe6f140dc014124845cd1df3090a113aae5fa7577a1e77" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.5.0" flutter: @@ -455,7 +455,7 @@ packages: description: name: flutter_cache_manager sha256: "400b6592f16a4409a7f2bb929a9a7e38c72cceb8ffb99ee57bbf2cb2cecf8386" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.4.1" flutter_easyloading: @@ -463,7 +463,7 @@ packages: description: name: flutter_easyloading sha256: ba21a3c883544e582f9cc455a4a0907556714e1e9cf0eababfcb600da191d17c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.5" flutter_html: @@ -471,7 +471,7 @@ packages: description: name: flutter_html sha256: "38a2fd702ffdf3243fb7441ab58aa1bc7e6922d95a50db76534de8260638558d" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.0" flutter_libserialport: @@ -479,7 +479,7 @@ packages: description: name: flutter_libserialport sha256: d193b5ac819db6540d20cc8d20d9f5ec9e3396edb4d2c4a23c97863fa9132336 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.5.0" flutter_lints: @@ -487,7 +487,7 @@ packages: description: name: flutter_lints sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.0.0" flutter_localizations: @@ -500,7 +500,7 @@ packages: description: name: flutter_spinkit sha256: "77850df57c00dc218bfe96071d576a8babec24cf58b2ed121c83cca4a2fdce7f" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.2.2" flutter_subscreen_plugin: @@ -508,7 +508,7 @@ packages: description: name: flutter_subscreen_plugin sha256: b89bc8ba87956d441726557ece140ccea418ca4569e8f06e028e1017740ff6f3 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.2+5" flutter_svg: @@ -516,7 +516,7 @@ packages: description: name: flutter_svg sha256: cd57f7969b4679317c17af6fd16ee233c1e60a82ed209d8a475c54fd6fd6f845 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" flutter_test: @@ -529,7 +529,7 @@ packages: description: name: flutter_tts sha256: baa3cb6b4990318460fe28bfa8c7869399e97223971532c02bd97c5e876aa3c5 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.2.2" flutter_web_plugins: @@ -542,7 +542,7 @@ packages: description: name: fluttertoast sha256: "90778fe0497fe3a09166e8cf2e0867310ff434b794526589e77ec03cf08ba8e8" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "8.2.14" forui: @@ -550,7 +550,7 @@ packages: description: name: forui sha256: "3ebbf39d57f0667afc47cbab86b0afe679bba2173a51afc21855053663dc5062" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.1+1" forui_assets: @@ -558,7 +558,7 @@ packages: description: name: forui_assets sha256: df0f24b47ff0c3e16811bb4ad597b426b8e1a62fcf2fea7d95923ef4d6e8aa2c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.1" frontend_server_client: @@ -566,7 +566,7 @@ packages: description: name: frontend_server_client sha256: f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.0" gbk_codec: @@ -574,7 +574,7 @@ packages: description: name: gbk_codec sha256: "3af5311fc9393115e3650ae6023862adf998051a804a08fb804f042724999f61" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.4.0" get: @@ -582,7 +582,7 @@ packages: description: name: get sha256: "5ed34a7925b85336e15d472cc4cfe7d9ebf4ab8e8b9f688585bf6b50f4c3d79a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.7.3" glob: @@ -590,7 +590,7 @@ packages: description: name: glob sha256: "218aeb56050c714f62a3182775320dfa04602b55074873e24e31bbd39bda96fb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" google_fonts: @@ -598,7 +598,7 @@ packages: description: name: google_fonts sha256: df9763500dadba0155373e9cb44e202ce21bd9ed5de6bdbd05c5854e86839cb8 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.3.0" graphs: @@ -606,7 +606,7 @@ packages: description: name: graphs sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.2" hex: @@ -614,7 +614,7 @@ packages: description: name: hex sha256: "4e7cd54e4b59ba026432a6be2dd9d96e4c5205725194997193bf871703b82c4a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.0" html: @@ -622,7 +622,7 @@ packages: description: name: html sha256: "1fc58edeaec4307368c60d59b7e15b9d658b57d7f3125098b6294153c75337ec" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.15.5" http: @@ -630,7 +630,7 @@ packages: description: name: http sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.6.0" http_multi_server: @@ -638,7 +638,7 @@ packages: description: name: http_multi_server sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.2" http_parser: @@ -646,7 +646,7 @@ packages: description: name: http_parser sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.1.2" icons_launcher: @@ -654,7 +654,7 @@ packages: description: name: icons_launcher sha256: a7c83fbc837dc6f81944ef35c3756f533bb2aba32fcca5cbcdb2dbcd877d5ae9 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.0" image: @@ -662,7 +662,7 @@ packages: description: name: image sha256: "4e973fcf4caae1a4be2fa0a13157aa38a8f9cb049db6529aa00b4d71abc4d928" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.5.4" intl: @@ -670,7 +670,7 @@ packages: description: name: intl sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.19.0" io: @@ -678,7 +678,7 @@ packages: description: name: io sha256: "2635216ca6a737e60de577ffa1a48a0bec76ca8a62917cfc1bb88c14c570646f" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" js: @@ -686,7 +686,7 @@ packages: description: name: js sha256: c1b2e9b5ea78c45e1a0788d29606ba27dc5f71f019f32ca5140f61ef071838cf - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.1" json_annotation: @@ -694,7 +694,7 @@ packages: description: name: json_annotation sha256: "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.9.0" json_serializable: @@ -702,7 +702,7 @@ packages: description: name: json_serializable sha256: ea1432d167339ea9b5bb153f0571d0039607a873d6e04e0117af043f14a1fd4b - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.8.0" leak_tracker: @@ -710,7 +710,7 @@ packages: description: name: leak_tracker sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "10.0.7" leak_tracker_flutter_testing: @@ -718,7 +718,7 @@ packages: description: name: leak_tracker_flutter_testing sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.8" leak_tracker_testing: @@ -726,7 +726,7 @@ packages: description: name: leak_tracker_testing sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.1" libserialport: @@ -734,7 +734,7 @@ packages: description: name: libserialport sha256: "392e1592def65282429832ec66fa25e9e163d3b37716b97691482e2406720727" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.0+1" lints: @@ -742,7 +742,7 @@ packages: description: name: lints sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.1.1" list_counter: @@ -750,7 +750,7 @@ packages: description: name: list_counter sha256: c447ae3dfcd1c55f0152867090e67e219d42fe6d4f2807db4bbe8b8d69912237 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" logger: @@ -758,7 +758,7 @@ packages: description: name: logger sha256: af05cc8714f356fd1f3888fb6741cbe9fbe25cdb6eedbab80e1a6db21047d4a4 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.0" logging: @@ -766,7 +766,7 @@ packages: description: name: logging sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.0" macros: @@ -774,7 +774,7 @@ packages: description: name: macros sha256: "1d9e801cd66f7ea3663c45fc708450db1fa57f988142c64289142c9b7ee80656" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.3-main.0" matcher: @@ -782,7 +782,7 @@ packages: description: name: matcher sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.12.16+1" material_color_utilities: @@ -790,7 +790,7 @@ packages: description: name: material_color_utilities sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.11.1" meta: @@ -798,7 +798,7 @@ packages: description: name: meta sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.15.0" mime: @@ -806,7 +806,7 @@ packages: description: name: mime sha256: "801fd0b26f14a4a58ccb09d5892c3fbdeff209594300a542492cf13fba9d247a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.6" mqtt_client: @@ -814,7 +814,7 @@ packages: description: name: mqtt_client sha256: "37aae360fac0b3322cb37267696c1535e1ad2984a13064d877273ffe4b16ca7a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "10.5.1" network_info_plus: @@ -822,7 +822,7 @@ packages: description: name: network_info_plus sha256: f926b2ba86aa0086a0dfbb9e5072089bc213d854135c1712f1d29fc89ba3c877 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.4" network_info_plus_platform_interface: @@ -830,7 +830,7 @@ packages: description: name: network_info_plus_platform_interface sha256: "7e7496a8a9d8136859b8881affc613c4a21304afeb6c324bcefc4bd0aff6b94b" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.2" nitrogen_flutter_svg: @@ -838,7 +838,7 @@ packages: description: name: nitrogen_flutter_svg sha256: "103313861b182fd4069bac896519b1ee64cbe1af0023d818f6c300b81c16853c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.4.0" nitrogen_types: @@ -846,7 +846,7 @@ packages: description: name: nitrogen_types sha256: "5d4ec453aea14e34607bc6021ff1381192e8fcd8541bf103638baa4d013e668f" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.4.0+1" nm: @@ -854,7 +854,7 @@ packages: description: name: nm sha256: "2c9aae4127bdc8993206464fcc063611e0e36e72018696cd9631023a31b24254" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.5.0" number_pagination: @@ -862,7 +862,7 @@ packages: description: name: number_pagination sha256: "75d3a28616196e7c8df431d0fb7c48e811e462155f4cf3b5b4167b3408421327" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.6" octo_image: @@ -870,7 +870,7 @@ packages: description: name: octo_image sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" package_config: @@ -878,7 +878,7 @@ packages: description: name: package_config sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" package_info_plus: @@ -886,7 +886,7 @@ packages: description: name: package_info_plus sha256: "67eae327b1b0faf761964a1d2e5d323c797f3799db0e85aa232db8d9e922bc35" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "8.2.1" package_info_plus_platform_interface: @@ -894,7 +894,7 @@ packages: description: name: package_info_plus_platform_interface sha256: "202a487f08836a592a6bd4f901ac69b3a8f146af552bbd14407b6b41e1c3f086" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.1" path: @@ -902,7 +902,7 @@ packages: description: name: path sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.9.0" path_parsing: @@ -910,7 +910,7 @@ packages: description: name: path_parsing sha256: "883402936929eac138ee0a45da5b0f2c80f89913e6dc3bf77eb65b84b409c6ca" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" path_provider: @@ -918,7 +918,7 @@ packages: description: name: path_provider sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.5" path_provider_android: @@ -926,7 +926,7 @@ packages: description: name: path_provider_android sha256: d0d310befe2c8ab9e7f393288ccbb11b60c019c6b5afc21973eeee4dda2b35e9 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.17" path_provider_foundation: @@ -934,7 +934,7 @@ packages: description: name: path_provider_foundation sha256: "4843174df4d288f5e29185bd6e72a6fbdf5a4a4602717eed565497429f179942" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" path_provider_linux: @@ -942,7 +942,7 @@ packages: description: name: path_provider_linux sha256: f7a1fe3a634fe7734c8d3f2766ad746ae2a2884abe22e241a8b301bf5cac3279 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.1" path_provider_platform_interface: @@ -950,7 +950,7 @@ packages: description: name: path_provider_platform_interface sha256: "88f5779f72ba699763fa3a3b06aa4bf6de76c8e5de842cf6f29e2e06476c2334" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.2" path_provider_windows: @@ -958,7 +958,7 @@ packages: description: name: path_provider_windows sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.0" pdf: @@ -966,7 +966,7 @@ packages: description: name: pdf sha256: "28eacad99bffcce2e05bba24e50153890ad0255294f4dd78a17075a2ba5c8416" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.11.3" pdf_widget_wrapper: @@ -974,7 +974,7 @@ packages: description: name: pdf_widget_wrapper sha256: c930860d987213a3d58c7ec3b7ecf8085c3897f773e8dc23da9cae60a5d6d0f5 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" permission_handler: @@ -982,7 +982,7 @@ packages: description: name: permission_handler sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "11.4.0" permission_handler_android: @@ -990,7 +990,7 @@ packages: description: name: permission_handler_android sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "12.1.0" permission_handler_apple: @@ -998,7 +998,7 @@ packages: description: name: permission_handler_apple sha256: f49cb15a064ea9d974fc7fbb302099353b7b170d07284e86e264561579e5bcf8 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "9.6.1" permission_handler_html: @@ -1006,7 +1006,7 @@ packages: description: name: permission_handler_html sha256: "6ea98b3f17f60d3b527f2647ed2ab4dc0f6bfe25b22cb1c363f5d8f62252f6ac" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.4+1" permission_handler_platform_interface: @@ -1014,7 +1014,7 @@ packages: description: name: permission_handler_platform_interface sha256: ed86a61c190258fdd65de395ea0632822e3415c1faec38eae0c31b479c28a531 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.4.1" permission_handler_windows: @@ -1022,7 +1022,7 @@ packages: description: name: permission_handler_windows sha256: caeae01858a0a7d2df67a445ac98e1ad95e55a0e77c73044f4e9b1c8c2289cbd - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.2" petitparser: @@ -1030,7 +1030,7 @@ packages: description: name: petitparser sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.0.2" pinyin: @@ -1038,7 +1038,7 @@ packages: description: name: pinyin sha256: "240f271a3c71af20c8d2757756b5ee8e9d79a955d37abad4b3568fd406b22411" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.3.0" platform: @@ -1046,7 +1046,7 @@ packages: description: name: platform sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.6" plugin_platform_interface: @@ -1054,7 +1054,7 @@ packages: description: name: plugin_platform_interface sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.8" pointycastle: @@ -1062,7 +1062,7 @@ packages: description: name: pointycastle sha256: "4be0097fcf3fd3e8449e53730c631200ebc7b88016acecab2b0da2f0149222fe" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.9.1" pool: @@ -1070,7 +1070,7 @@ packages: description: name: pool sha256: "4177f68c237ea2128d1bee66ac17b2ce05ba3dbaafcbdd54c5d40a39d0b6b11c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.5.3" posix: @@ -1078,7 +1078,7 @@ packages: description: name: posix sha256: bc1bad54ad2b735816e31f8d4600cfde6c7839975085ddfbca48b6c9f7c4044e - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.5.2" printing: @@ -1086,7 +1086,7 @@ packages: description: name: printing sha256: "689170c9ddb1bda85826466ba80378aa8993486d3c959a71cd7d2d80cb606692" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.14.3" pub_semver: @@ -1094,7 +1094,7 @@ packages: description: name: pub_semver sha256: "261236774e8b1d69cfc6b9eabbc96c40f25e7a2d6b171f3385d4f65d5734fb24" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.1" pubspec_parse: @@ -1102,7 +1102,7 @@ packages: description: name: pubspec_parse sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.5.0" qr: @@ -1110,7 +1110,7 @@ packages: description: name: qr sha256: "5a1d2586170e172b8a8c8470bbbffd5eb0cd38a66c0d77155ea138d3af3a4445" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.2" qr_flutter: @@ -1118,7 +1118,7 @@ packages: description: name: qr_flutter sha256: "5095f0fc6e3f71d08adef8feccc8cea4f12eec18a2e31c2e8d82cb6019f4b097" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.1.0" rational: @@ -1126,7 +1126,7 @@ packages: description: name: rational sha256: cb808fb6f1a839e6fc5f7d8cb3b0a10e1db48b3be102de73938c627f0b636336 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.3" rxdart: @@ -1134,7 +1134,7 @@ packages: description: name: rxdart sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.28.0" shelf: @@ -1142,7 +1142,7 @@ packages: description: name: shelf sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.2" shelf_web_socket: @@ -1150,7 +1150,7 @@ packages: description: name: shelf_web_socket sha256: cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" simple_sparse_list: @@ -1158,7 +1158,7 @@ packages: description: name: simple_sparse_list sha256: aa648fd240fa39b49dcd11c19c266990006006de6699a412de485695910fbc1f - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.4" sky_engine: @@ -1171,7 +1171,7 @@ packages: description: name: source_gen sha256: "14658ba5f669685cd3d63701d01b31ea748310f7ab854e471962670abcf57832" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.5.0" source_helper: @@ -1179,7 +1179,7 @@ packages: description: name: source_helper sha256: "86d247119aedce8e63f4751bd9626fc9613255935558447569ad42f9f5b48b3c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.5" source_span: @@ -1187,7 +1187,7 @@ packages: description: name: source_span sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.10.0" sqflite: @@ -1195,7 +1195,7 @@ packages: description: name: sqflite sha256: "2d7299468485dca85efeeadf5d38986909c5eb0cd71fd3db2c2f000e6c9454bb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" sqflite_android: @@ -1203,7 +1203,7 @@ packages: description: name: sqflite_android sha256: "78f489aab276260cdd26676d2169446c7ecd3484bbd5fead4ca14f3ed4dd9ee3" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.0" sqflite_common: @@ -1211,7 +1211,7 @@ packages: description: name: sqflite_common sha256: "761b9740ecbd4d3e66b8916d784e581861fd3c3553eda85e167bc49fdb68f709" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.5.4+6" sqflite_common_ffi: @@ -1219,7 +1219,7 @@ packages: description: name: sqflite_common_ffi sha256: "883dd810b2b49e6e8c3b980df1829ef550a94e3f87deab5d864917d27ca6bf36" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.4+4" sqflite_darwin: @@ -1227,7 +1227,7 @@ packages: description: name: sqflite_darwin sha256: "22adfd9a2c7d634041e96d6241e6e1c8138ca6817018afc5d443fef91dcefa9c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1+1" sqflite_platform_interface: @@ -1235,7 +1235,7 @@ packages: description: name: sqflite_platform_interface sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.0" sqlite3: @@ -1243,7 +1243,7 @@ packages: description: name: sqlite3 sha256: "3145bd74dcdb4fd6f5c6dda4d4e4490a8087d7f286a14dee5d37087290f0f8a2" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.9.4" sqlparser: @@ -1251,7 +1251,7 @@ packages: description: name: sqlparser sha256: "91f47610aa54d8abf9d795a7b4e49b2a788f65d7493d5a68fbf180c3cbcc6f38" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.27.0" stack_trace: @@ -1259,7 +1259,7 @@ packages: description: name: stack_trace sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.12.0" stream_channel: @@ -1267,7 +1267,7 @@ packages: description: name: stream_channel sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.2" stream_transform: @@ -1275,7 +1275,7 @@ packages: description: name: stream_transform sha256: a00e5f18bffc764f923e7dec1038527f7fe7a1791361a7117f0358193f13d53a - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.2" string_scanner: @@ -1283,7 +1283,7 @@ packages: description: name: string_scanner sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.0" strings: @@ -1291,7 +1291,7 @@ packages: description: name: strings sha256: "482f1511d2cd8ab9f2c4cc148e6837be8a00c03b9a8eaedbc981a84d9c6305d8" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.0" sugar: @@ -1299,7 +1299,7 @@ packages: description: name: sugar sha256: a0a97f1d3552a3ef4cbec7c6e62c7b52c151cd5c11e984e8311700a918f73dc5 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.0" syncfusion_flutter_core: @@ -1307,7 +1307,7 @@ packages: description: name: syncfusion_flutter_core sha256: f1d2b52697543e13bdefdc62d15868124a265987577f53224a7dbe176c8448f0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "28.2.12" syncfusion_flutter_datepicker: @@ -1315,7 +1315,7 @@ packages: description: name: syncfusion_flutter_datepicker sha256: cfc91ebacee63b2c5220e541736f8df211d4f0bfbf34265778862ae20faf094f - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "28.2.12" synchronized: @@ -1323,7 +1323,7 @@ packages: description: name: synchronized sha256: "69fe30f3a8b04a0be0c15ae6490fc859a78ef4c43ae2dd5e8a623d45bfcf9225" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.3.0+3" term_glyph: @@ -1331,7 +1331,7 @@ packages: description: name: term_glyph sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.1" test_api: @@ -1339,7 +1339,7 @@ packages: description: name: test_api sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.3" timing: @@ -1347,7 +1347,7 @@ packages: description: name: timing sha256: "62ee18aca144e4a9f29d212f5a4c6a053be252b895ab14b5821996cff4ed90fe" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" typed_data: @@ -1355,7 +1355,7 @@ packages: description: name: typed_data sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" unicode: @@ -1363,7 +1363,7 @@ packages: description: name: unicode sha256: a6f7bcfc8ea1d5ce1f6c0b1c39117a9919f4953edd9fd7a64090a9796c499b57 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.9" universal_html: @@ -1371,7 +1371,7 @@ packages: description: name: universal_html sha256: c0bcae5c733c60f26c7dfc88b10b0fd27cbcc45cb7492311cdaa6067e21c9cd4 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.0" universal_io: @@ -1379,7 +1379,7 @@ packages: description: name: universal_io sha256: f63cbc48103236abf48e345e07a03ce5757ea86285ed313a6a032596ed9301e2 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.1" uuid: @@ -1387,7 +1387,7 @@ packages: description: name: uuid sha256: "9b129329f58692f6e6578329498a8fe9fbe98f090beb764ffbb8ee2eadd01dcd" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.6.0" vector_graphics: @@ -1395,7 +1395,7 @@ packages: description: name: vector_graphics sha256: a4f059dc26fc8295b5921376600a194c4ec7d55e72f2fe4c7d2831e103d461e6 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.19" vector_graphics_codec: @@ -1403,7 +1403,7 @@ packages: description: name: vector_graphics_codec sha256: "99fd9fbd34d9f9a32efd7b6a6aae14125d8237b10403b422a6a6dfeac2806146" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.13" vector_graphics_compiler: @@ -1411,7 +1411,7 @@ packages: description: name: vector_graphics_compiler sha256: ca81fdfaf62a5ab45d7296614aea108d2c7d0efca8393e96174bf4d51e6725b0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.18" vector_math: @@ -1419,7 +1419,7 @@ packages: description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" vm_service: @@ -1427,7 +1427,7 @@ packages: description: name: vm_service sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "14.3.0" watcher: @@ -1435,7 +1435,7 @@ packages: description: name: watcher sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.1" web: @@ -1443,7 +1443,7 @@ packages: description: name: web sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" web_socket: @@ -1451,7 +1451,7 @@ packages: description: name: web_socket sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.1" web_socket_channel: @@ -1459,7 +1459,7 @@ packages: description: name: web_socket_channel sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.3" win32: @@ -1467,7 +1467,7 @@ packages: description: name: win32 sha256: daf97c9d80197ed7b619040e86c8ab9a9dad285e7671ee7390f9180cc828a51e - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.10.1" xdg_directories: @@ -1475,7 +1475,7 @@ packages: description: name: xdg_directories sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" xml: @@ -1483,7 +1483,7 @@ packages: description: name: xml sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.5.0" yaml: @@ -1491,7 +1491,7 @@ packages: description: name: yaml sha256: f67cdd8e07d3c6329146aaef1ba043542b3134c12489f553ca9a7435d1068aea - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.4" sdks: diff --git a/pubspec.yaml b/pubspec.yaml index 377a67d..42c40be 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: pj_supermarket_cloud description: "资安信智慧后勤-测试" publish_to: "none" -version: 1.5.0+150 +version: 1.5.1+151 environment: sdk: ^3.6.0 diff --git a/test/common/printer_task_test.dart b/test/common/printer_task_test.dart index f96e308..64b7df6 100644 --- a/test/common/printer_task_test.dart +++ b/test/common/printer_task_test.dart @@ -143,4 +143,34 @@ void main() { throwsA(isA()), ); }); + + test('13到14迁移补指令列且列已存在时可重入', () async { + final database = + await databaseFactoryFfi.openDatabase(inMemoryDatabasePath); + addTearDown(database.close); + await database.execute(''' + CREATE TABLE print_history ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + orderId TEXT NOT NULL, + serviceOrderId TEXT NOT NULL, + servicePrintId TEXT NOT NULL, + invoiceUrl TEXT NOT NULL, + status TEXT NOT NULL, + printTime TEXT, + syncTime TEXT, + createTime TEXT NOT NULL + ) + '''); + + await DatabaseMigration.migration13To14.migrate(database); + + final columns = await database.rawQuery('PRAGMA table_info(print_history)'); + expect( + columns.map((column) => column['name']), + contains('printCmd'), + ); + + // 外部存储旧库可能已带该列(中间态构建建库、降级重建),重复迁移不得抛 duplicate column。 + await DatabaseMigration.migration13To14.migrate(database); + }); } diff --git a/test/pages/checkout_cart_item_name_row_test.dart b/test/pages/checkout_cart_item_name_row_test.dart new file mode 100644 index 0000000..1943520 --- /dev/null +++ b/test/pages/checkout_cart_item_name_row_test.dart @@ -0,0 +1,133 @@ +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:ducafe_ui_core/ducafe_ui_core.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart' show FontLoader; +import 'package:flutter_test/flutter_test.dart'; +import 'package:forui/forui.dart'; + +import 'package:pj_supermarket_cloud/common/index.dart'; + +Future _loadCjkFont() async { + final file = File('/System/Library/Fonts/Supplemental/Arial Unicode.ttf'); + final bytes = await file.readAsBytes(); + final loader = FontLoader('PreviewCJK') + ..addFont(Future.value(ByteData.view(bytes.buffer))); + await loader.load(); +} + +/// 以结算弹框购物车列的真实宽度预算复刻商品卡两行结构: +/// 名称+类型标签独占整卡一行,图片/单价/步进器/小计在第二行, +/// 固化"名称行不被步进器挤压"的布局契约。 +void main() { + setUpAll(_loadCjkFont); + + testWidgets('结算条目名称行单行缩放布局', (tester) async { + tester.view.physicalSize = const Size(1920, 1080); + tester.view.devicePixelRatio = 1.0; + addTearDown(tester.view.reset); + + await tester.pumpWidget( + ScreenUtilInit( + designSize: const Size(1920, 1080), + minTextAdapt: true, + builder: (_, __) { + final theme = FThemeData.inherit( + colorScheme: FThemes.zinc.light.colorScheme, + typography: const FTypography(), + ); + return FTheme( + data: theme, + child: MaterialApp( + theme: ThemeData(fontFamily: 'PreviewCJK'), + home: Scaffold( + backgroundColor: XfjDesignTokens.surface, + body: Center( + child: Container( + // 结算弹框 42% 购物车列下的单条卡片内容宽 + width: 640, + padding: const EdgeInsets.all(8), + decoration: BoxDecoration( + color: XfjDesignTokens.primarySoft, + border: Border.all( + color: XfjDesignTokens.primary.withValues(alpha: 0.45), + ), + borderRadius: BorderRadius.circular(12), + ), + child: [ + // 名称行:整卡宽,左名称右标签 + [ + LayoutBuilder( + builder: (context, constraints) => FittedBox( + fit: BoxFit.scaleDown, + alignment: Alignment.centerLeft, + child: SizedBox( + width: constraints.maxWidth, + child: Text( + 'D套餐-葱油鸡腿饭套餐', + maxLines: 1, + overflow: TextOverflow.ellipsis, + style: theme.typography.base.copyWith( + color: XfjDesignTokens.ink, + fontWeight: FontWeight.w700, + height: 1.3, + ), + ), + ), + ), + ).expanded(), + const ProductTypeTag(isCombo: true), + ].toRowSpace(space: 8.w), + SizedBox(height: 7.h), + // 详情行:图片 + 单价信息 + 步进器/小计 + Row( + children: [ + Container( + width: 64.w, + height: 64.w, + color: XfjDesignTokens.control, + ), + SizedBox(width: 12.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + '单价 ¥9.20 库存 999+ 套餐 4 样', + style: theme.typography.xs.copyWith( + color: XfjDesignTokens.muted, + ), + ), + ], + ), + ), + SizedBox(width: 12.w), + Container( + width: 240.w, + height: 64.w, + alignment: Alignment.center, + color: XfjDesignTokens.canvas, + child: Text( + '步进器+小计区 240.w', + style: theme.typography.xs, + ), + ), + ], + ), + ].toColumn(crossAxisAlignment: CrossAxisAlignment.stretch), + ), + ), + ), + ), + ); + }, + ), + ); + + await expectLater( + find.byType(Scaffold), + matchesGoldenFile('goldens/checkout_name_row.png'), + ); + }); +} diff --git a/test/pages/goldens/checkout_name_row.png b/test/pages/goldens/checkout_name_row.png new file mode 100644 index 0000000..2cbf268 Binary files /dev/null and b/test/pages/goldens/checkout_name_row.png differ