From 8a075d6ca1efbb8e3e60f3f361045b5d5598198f Mon Sep 17 00:00:00 2001 From: ByDream <2249984221@qq.com> Date: Sat, 5 Aug 2023 20:14:27 +0800 Subject: [PATCH 1/7] feat: provide feature display the first time using timetable page #275 Basically done, except language part --- flutter_01.png | Bin 0 -> 16616 bytes flutter_02.png | Bin 0 -> 16616 bytes lib/common/pubspec.yaml.g.dart | 7 +- lib/l10n/intl_en.arb | 8 +- lib/l10n/intl_ja.arb | 8 +- lib/l10n/intl_zh_CN.arb | 8 +- lib/page/subpage_timetable.dart | 224 ++++++++++++- lib/provider/settings_provider.dart | 13 + pubspec.lock | 500 ++++++++++++++-------------- pubspec.yaml | 1 + 10 files changed, 502 insertions(+), 267 deletions(-) create mode 100644 flutter_01.png create mode 100644 flutter_02.png diff --git a/flutter_01.png b/flutter_01.png new file mode 100644 index 0000000000000000000000000000000000000000..59ab4005a69e6c7b97e328ba0f879b048a25f802 GIT binary patch literal 16616 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 pre = []; const List build = [r'336']; /// Build date in Unix Time (in seconds) -const int timestamp = 1689749046; +const int timestamp = 1691072369; /// Name [name] const String name = r'dan_xi'; @@ -83,7 +83,7 @@ const String publishTo = r'none'; /// Environment const Map environment = { - 'sdk': '>=2.15.0 <3.0.0', + 'sdk': '>=3.0.0', }; /// Dependencies @@ -182,7 +182,7 @@ const Map dependencies = { 'screen_capture_event': r'^1.0.0+1', 'otp': r'^3.0.2', 'lunar': r'^1.2.20', - 'flutter_fgbg': r'^0.2.0', + 'flutter_fgbg': r'^0.3.0', 'lazy_load_indexed_stack': r'^1.0.0', 'js': r'^0.6.5', 'nil': r'^1.1.1', @@ -209,6 +209,7 @@ const Map devDependencies = { 'sdk': r'flutter', }, 'flutter_lints': r'^2.0.1', + 'intl_utils': r'^2.8.3', }; /// Dependency overrides diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 7af85850..644c56e0 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -494,5 +494,11 @@ "copy_floor_id": "Copy Floor ID", "copy_floor_id_success": "Copy Floor ID success! Please check your clipboard.", "copy_hole_id": "Copy Hole ID", - "copy_hole_id_success": "Copy Hole ID success! Please check your clipboard." + "copy_hole_id_success": "Copy Hole ID success! Please check your clipboard.", + "choose_semester": "Choose semester:", + "choose_semester_message": "Select the semester you want to view.", + "manually_add_course":"Add lesson manually:", + "manually_add_course_message":"If there is a class that is not included in the class schedule, but you want to check it, add it manually yourself.", + "start_date_select": "Term start date query", + "start_date_select_message": "You must select the start date of the semester to view your class schedule. Not selecting will result in a date error. Tip: Start date is the Monday of the first week." } \ No newline at end of file diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index 7b7041d2..8075a03e 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -486,5 +486,11 @@ "copy_floor_id": "拷贝楼层号", "copy_floor_id_success": "楼层号成功保存至剪贴板", "copy_hole_id": "拷贝洞号", - "copy_hole_id_success": "洞号成功保存至剪贴板" + "copy_hole_id_success": "洞号成功保存至剪贴板", + "choose_semester": "学期の選択:", + "choose_semester_message": "見たい学期を選ぶ", + "manually_add_course":"カリキュラムを手動で追加するには:", + "manually_add_course_message":"授業表に収録されていない授業があるかどうか、また見たいのではないでしょうか。自分で手動で追加しましょう。", + "start_date_select": "学期開始日照会:", + "start_date_select_message": "授業表を見るには、学期の開始日を選択しなければなりません。選択しないと日付エラーになります。ヒント:開始日は第1週の月曜日です。" } \ No newline at end of file diff --git a/lib/l10n/intl_zh_CN.arb b/lib/l10n/intl_zh_CN.arb index 8a942844..8723c1ab 100644 --- a/lib/l10n/intl_zh_CN.arb +++ b/lib/l10n/intl_zh_CN.arb @@ -486,5 +486,11 @@ "copy_floor_id": "拷贝楼层号", "copy_floor_id_success": "楼层号已保存至剪贴板。", "copy_hole_id": "拷贝洞号", - "copy_hole_id_success": "洞号已保存至剪贴板。" + "copy_hole_id_success": "洞号已保存至剪贴板。", + "choose_semester": "学期选择:", + "choose_semester_message": "选择你想查看的学期", + "manually_add_course":"手动添加课程:", + "manually_add_course_message":"是否有课未收录在课表上,但你又想查看的呢,自己手动添加它吧。", + "start_date_select": "学期开始日期查询:", + "start_date_select_message": "必须选择学期的开始日期才能查看你的课表。不选择将导致日期错误。提示:开始日期是第一周的周一。" } diff --git a/lib/page/subpage_timetable.dart b/lib/page/subpage_timetable.dart index 2a6468a4..96f41ca3 100644 --- a/lib/page/subpage_timetable.dart +++ b/lib/page/subpage_timetable.dart @@ -16,6 +16,7 @@ */ import 'dart:io'; +import 'dart:ui'; import 'package:auto_size_text/auto_size_text.dart'; import 'package:dan_xi/common/constant.dart'; @@ -52,9 +53,14 @@ import 'package:open_file/open_file.dart'; import 'package:path_provider/path_provider.dart'; import 'package:provider/provider.dart'; import 'package:share_plus/share_plus.dart'; +import 'package:tutorial_coach_mark/tutorial_coach_mark.dart'; import '../widget/dialogs/manually_add_course_dialog.dart'; +GlobalKey keyButton = GlobalKey(); +GlobalKey keyButton1 = GlobalKey(); +GlobalKey keyButton2 = GlobalKey(); + const kCompatibleUserGroup = [ UserGroup.FUDAN_UNDERGRADUATE_STUDENT, UserGroup.FUDAN_POSTGRADUATE_STUDENT @@ -73,9 +79,10 @@ class TimetableSubPage extends PlatformSubpage { Create> get trailing => (cxt) => [ AppBarButtonItem( S.of(cxt).add_courses, - Icon(PlatformX.isMaterial(cxt) - ? Icons.add - : CupertinoIcons.add_circled), + Icon( + PlatformX.isMaterial(cxt) ? Icons.add : CupertinoIcons.add_circled, + key: keyButton, + ), () => ManuallyAddCourseEvent().fire(), ), AppBarButtonItem( @@ -89,11 +96,17 @@ class TimetableSubPage extends PlatformSubpage { @override Create> get leading => (cxt) => [ - AppBarButtonItem(S.of(cxt).select_semester, SemesterSelectionButton( - onSelectionUpdate: () { - timetablePageKey.currentState?.indicatorKey.currentState?.show(); - }, - ), null, useCustomWidget: true), + AppBarButtonItem( + S.of(cxt).select_semester, + SemesterSelectionButton( + key: keyButton1, + onSelectionUpdate: () { + timetablePageKey.currentState?.indicatorKey.currentState + ?.show(); + }, + ), + null, + useCustomWidget: true), ]; } @@ -102,6 +115,7 @@ class ShareTimetableEvent {} class ManuallyAddCourseEvent {} class TimetableSubPageState extends PlatformSubpageState { + late TutorialCoachMark tutorialCoachMark; final StateStreamListener _shareSubscription = StateStreamListener(); final StateStreamListener _addCourseSubscription = @@ -243,11 +257,14 @@ class TimetableSubPageState extends PlatformSubpageState { @override void initState() { + if (SettingsProvider.getInstance().hasVistedTimeTable == false) { + createTutorial(); + Future.delayed(Duration.zero, showTutorial); + SettingsProvider.getInstance().hasVistedTimeTable = true; + } super.initState(); _setContent(); - converters = { - S.current.share_as_ics: ICSConverter() - }; + converters = {S.current.share_as_ics: ICSConverter()}; _shareSubscription.bindOnlyInvalid( Constant.eventBus.on().listen((_) { if (_table == null) return; @@ -283,6 +300,180 @@ class TimetableSubPageState extends PlatformSubpageState { hashCode); } + void showTutorial() { + tutorialCoachMark.show(context: context); + } + + void createTutorial() { + tutorialCoachMark = TutorialCoachMark( + targets: _createTargets(), + colorShadow: const Color.fromARGB(255, 9, 110, 192), + textSkip: "SKIP", + paddingFocus: 10, + opacityShadow: 0.5, + pulseAnimationDuration: const Duration(milliseconds: 1000), + imageFilter: ImageFilter.blur(sigmaX: 8, sigmaY: 8), + ); + } + + List _createTargets() { + List targets = []; + + targets.add( + TargetFocus( + identify: "SemesterSelectionButton", + keyTarget: keyButton1, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return const Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + "学期选择:", + style: TextStyle( + fontWeight: FontWeight.bold, + color: Colors.white, + fontSize: 20.0), + ), + Padding( + padding: EdgeInsets.only(top: 10.0), + child: Text( + "选择你想查看的学期", + style: TextStyle(color: Colors.white), + ), + ), + ], + ); + }, + ), + ], + ), + ); + targets.add( + TargetFocus( + identify: "ManuallyAddCourseButton", + keyTarget: keyButton, + // color: Colors.purple, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + S.of(context).skip, + style: const TextStyle( + fontWeight: FontWeight.bold, + color: Colors.white, + fontSize: 20.0, + ), + ), + const Padding( + padding: EdgeInsets.only(top: 10.0), + child: Text( + "是否有课未收录在课表上,但你又想查看的呢,自己手动添加它吧", + style: TextStyle(color: Colors.white), + ), + ), + ElevatedButton( + onPressed: () { + controller.previous(); + }, + child: const Icon(Icons.chevron_left), + ), + ], + ); + }, + ) + ], + shape: ShapeLightFocus.RRect, + radius: 5, + ), + ); + + targets.add( + TargetFocus( + identify: "StartDateSelectionButton", + keyTarget: keyButton2, + shape: ShapeLightFocus.Circle, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const Text( + "学期开始日期选择:", + style: TextStyle( + fontWeight: FontWeight.bold, + color: Colors.white, + fontSize: 20.0, + ), + ), + const Padding( + padding: EdgeInsets.only(top: 10.0), + child: Column( + children: [ + Align( + // alignment: Alignment.center, + child: Text( + "必须选择学期的开始日期才能查看你的课表", + style: TextStyle( + fontWeight: FontWeight.bold, + color: Colors.white, + fontSize: 20.0, + ), + ), + ), + Align( + // alignment: Alignment.center, + child: Text( + "不选择将导致日期错误", + style: TextStyle( + fontWeight: FontWeight.bold, + color: Colors.white, + fontSize: 20.0, + ), + ), + ), + Align( + // alignment: Alignment.center, + child: Text( + "tips:开始日期是第一周的周一", + style: TextStyle( + fontWeight: FontWeight.bold, + color: Colors.white, + fontSize: 20.0, + ), + ), + ), + ], + ), + ), + ElevatedButton( + onPressed: () { + controller.previous(); + }, + child: const Icon(Icons.chevron_left), + ), + ], + ); + }, + ) + ], + ), + ); + + return targets; + } + Future refresh( {bool reloadWhenEmptyData = false, bool forceReloadFromRemote = false}) async { @@ -343,7 +534,8 @@ class TimetableSubPageState extends PlatformSubpageState { padding: const EdgeInsets.all(16.0), child: Row( children: [ - Expanded(child: Column( + Expanded( + child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( @@ -382,7 +574,8 @@ class TimetableSubPageState extends PlatformSubpageState { child: Column( crossAxisAlignment: CrossAxisAlignment.stretch, mainAxisSize: MainAxisSize.min, - children: block.event.map((e) => _buildCourseItem(e,context)).toList(), + children: + block.event.map((e) => _buildCourseItem(e, context)).toList(), ), ), ); @@ -401,8 +594,8 @@ class TimetableSubPageState extends PlatformSubpageState { if (_showingTime!.weekday < 0) _showingTime!.weekday = 0; if (_showingTime!.weekday > 6) _showingTime!.weekday = 6; - final List scheduleData = _table!.toDayEvents(_showingTime!.week, - compact: TableDisplayType.STANDARD); + final List scheduleData = _table! + .toDayEvents(_showingTime!.week, compact: TableDisplayType.STANDARD); return RefreshIndicator( key: indicatorKey, edgeOffset: MediaQuery.of(context).padding.top, @@ -442,6 +635,7 @@ class TimetableSubPageState extends PlatformSubpageState { Row(mainAxisAlignment: MainAxisAlignment.center, children: [ Text(S.of(context).semester_start_date), StartDateSelectionButton( + key: keyButton2, onUpdate: (() => indicatorKey.currentState?.show())), ]), ], diff --git a/lib/provider/settings_provider.dart b/lib/provider/settings_provider.dart index b4b951d0..d7caf1ff 100644 --- a/lib/provider/settings_provider.dart +++ b/lib/provider/settings_provider.dart @@ -78,6 +78,7 @@ class SettingsProvider with ChangeNotifier { static const String KEY_HIDDEN_NOTIFICATIONS = "hidden_notifications"; static const String KEY_THEME_TYPE = "theme_type"; static const String KEY_MARKDOWN_ENABLED = "markdown_rendering_enabled"; + static const String KEY_VISITED_TIMETABLE = "visited_timetable"; SettingsProvider._(); @@ -176,6 +177,18 @@ class SettingsProvider with ChangeNotifier { notifyListeners(); } + bool get hasVistedTimeTable { + if (preferences!.containsKey(KEY_VISITED_TIMETABLE)) { + return preferences!.getBool(KEY_VISITED_TIMETABLE)!; + } + return false; + } + + set hasVistedTimeTable(bool value) { + preferences!.setBool(KEY_VISITED_TIMETABLE, value); + notifyListeners(); + } + int get lastECBuildingChoiceRepresentation { if (preferences!.containsKey(KEY_EMPTY_CLASSROOM_LAST_BUILDING_CHOICE)) { return preferences!.getInt(KEY_EMPTY_CLASSROOM_LAST_BUILDING_CHOICE)!; diff --git a/pubspec.lock b/pubspec.lock index ac90598a..5cc6893a 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -6,7 +6,7 @@ packages: description: name: _fe_analyzer_shared sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "61.0.0" analyzer: @@ -14,7 +14,7 @@ packages: description: name: analyzer sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.13.0" archive: @@ -22,7 +22,7 @@ packages: description: name: archive sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.3.7" args: @@ -30,23 +30,23 @@ packages: description: name: args sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.2" asn1lib: dependency: "direct main" description: name: asn1lib - sha256: b74e3842a52c61f8819a1ec8444b4de5419b41a7465e69d4aa681445377398b0 - url: "https://pub.dev" + sha256: "21afe4333076c02877d14f4a89df111e658a6d466cbfc802eb705eb91bd5adfd" + url: "https://pub.flutter-io.cn" source: hosted - version: "1.4.1" + version: "1.5.0" async: dependency: transitive description: name: async sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.11.0" auto_size_text: @@ -54,7 +54,7 @@ packages: description: name: auto_size_text sha256: "3f5261cd3fb5f2a9ab4e2fc3fba84fd9fcaac8821f20a1d4e71f557521b22599" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.0" base32: @@ -62,7 +62,7 @@ packages: description: name: base32 sha256: ddad4ebfedf93d4500818ed8e61443b734ffe7cf8a45c668c9b34ef6adde02e2 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.3" beautiful_soup_dart: @@ -70,7 +70,7 @@ packages: description: name: beautiful_soup_dart sha256: "57e23946c85776dd9515a4e9a14263fff37dbedbd559bc4412bf565886e12b10" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.0" bitsdojo_window: @@ -123,7 +123,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: @@ -131,7 +131,7 @@ packages: description: name: build sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.1" build_config: @@ -139,7 +139,7 @@ packages: description: name: build_config sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" build_daemon: @@ -147,7 +147,7 @@ packages: description: name: build_daemon sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.0" build_resolvers: @@ -155,7 +155,7 @@ packages: description: name: build_resolvers sha256: "6c4dd11d05d056e76320b828a1db0fc01ccd376922526f8e9d6c796a5adbac20" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.1" build_runner: @@ -163,7 +163,7 @@ packages: description: name: build_runner sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.6" build_runner_core: @@ -171,7 +171,7 @@ packages: description: name: build_runner_core sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "7.2.10" built_collection: @@ -179,7 +179,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: @@ -187,7 +187,7 @@ packages: description: name: built_value sha256: "598a2a682e2a7a90f08ba39c0aaa9374c5112340f0a2e275f61b59389543d166" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "8.6.1" cached_network_image: @@ -195,7 +195,7 @@ packages: description: name: cached_network_image sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.3" cached_network_image_platform_interface: @@ -203,7 +203,7 @@ packages: description: name: cached_network_image_platform_interface sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" cached_network_image_web: @@ -211,7 +211,7 @@ packages: description: name: cached_network_image_web sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" characters: @@ -219,7 +219,7 @@ packages: description: name: characters sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.0" checked_yaml: @@ -227,7 +227,7 @@ packages: description: name: checked_yaml sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.3" clipboard: @@ -235,7 +235,7 @@ packages: description: name: clipboard sha256: "2ec38f0e59878008ceca0ab122e4bfde98847f88ef0f83331362ba4521f565a9" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.3" clock: @@ -243,7 +243,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: @@ -251,7 +251,7 @@ packages: description: name: code_builder sha256: "4ad01d6e56db961d29661561effde45e519939fdaeb46c351275b182eac70189" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.5.0" collection: @@ -259,7 +259,7 @@ packages: description: name: collection sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.17.1" convert: @@ -267,7 +267,7 @@ packages: description: name: convert sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.1" cookie_jar: @@ -275,7 +275,7 @@ packages: description: name: cookie_jar sha256: d1cc6516a190ba667941f722b6365d202caff3dacb38de24268b8d6ff1ec8a1d - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.1" cross_file: @@ -283,7 +283,7 @@ packages: description: name: cross_file sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.3+4" crypto: @@ -291,7 +291,7 @@ packages: description: name: crypto sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.3" csslib: @@ -299,7 +299,7 @@ packages: description: name: csslib sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" cupertino_icons: @@ -307,7 +307,7 @@ packages: description: name: cupertino_icons sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.5" dart_style: @@ -315,7 +315,7 @@ packages: description: name: dart_style sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.2" desktop_window: @@ -323,7 +323,7 @@ packages: description: name: desktop_window sha256: "6256fb6feb7b5ec1311c76a3503f89202825bfe92c0458ec5fe7a728ffa216d5" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.4.0" device_identity: @@ -331,7 +331,7 @@ packages: description: name: device_identity sha256: abc4834cb07a1b5f4cecba04a05839b13a45d5ae5c4cc40baa2ae12882339d03 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" device_info: @@ -339,7 +339,7 @@ packages: description: name: device_info sha256: f4a8156cb7b7480d969cb734907d18b333c8f0bc0b1ad0b342cdcecf30d62c48 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.3" device_info_platform_interface: @@ -347,23 +347,23 @@ packages: description: name: device_info_platform_interface sha256: b148e0bf9640145d09a4f8dea96614076f889e7f7f8b5ecab1c7e5c2dbc73c1b - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.1" device_info_plus: dependency: "direct main" description: name: device_info_plus - sha256: "2c35b6d1682b028e42d07b3aee4b98fa62996c10bc12cb651ec856a80d6a761b" - url: "https://pub.dev" + sha256: "86add5ef97215562d2e090535b0a16f197902b10c369c558a100e74ea06e8659" + url: "https://pub.flutter-io.cn" source: hosted - version: "9.0.2" + version: "9.0.3" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "7.0.0" dio: @@ -371,7 +371,7 @@ packages: description: name: dio sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.6" dio_cookie_manager: @@ -379,7 +379,7 @@ packages: description: name: dio_cookie_manager sha256: ed7ee3ba6cdb54599c8984d5a4ce09675c553ead6c28608eb54e38eec5b4f954 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" dio_log: @@ -387,7 +387,7 @@ packages: description: name: dio_log sha256: bf5ae847695277999d46e8089e74ec9fdf092f1d91299712d72ba5449ba13374 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.4" encrypt: @@ -395,7 +395,7 @@ packages: description: name: encrypt sha256: "4fd4e4fdc21b9d7d4141823e1e6515cd94e7b8d84749504c232999fba25d9bbb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.0.1" encrypt_shared_preferences: @@ -403,7 +403,7 @@ packages: description: name: encrypt_shared_preferences sha256: d81a9147c8584a37046c51d56132ff9a55de27c94fee70b9213ac8a94048f322 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.5" event_bus: @@ -411,7 +411,7 @@ packages: description: name: event_bus sha256: "44baa799834f4c803921873e7446a2add0f3efa45e101a054b1f0ab9b95f8edc" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" fake_async: @@ -419,7 +419,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: @@ -427,7 +427,7 @@ packages: description: name: ffi sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.2" file: @@ -435,7 +435,7 @@ packages: description: name: file sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.4" file_picker: @@ -443,7 +443,7 @@ packages: description: name: file_picker sha256: "21145c9c268d54b1f771d8380c195d2d6f655e0567dc1ca2f9c134c02c819e0a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.3.3" file_selector_linux: @@ -451,7 +451,7 @@ packages: description: name: file_selector_linux sha256: "770eb1ab057b5ae4326d1c24cc57710758b9a46026349d021d6311bd27580046" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.2" file_selector_macos: @@ -459,7 +459,7 @@ packages: description: name: file_selector_macos sha256: "4ada532862917bf16e3adb3891fe3a5917a58bae03293e497082203a80909412" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.3+1" file_selector_platform_interface: @@ -467,7 +467,7 @@ packages: description: name: file_selector_platform_interface sha256: "412705a646a0ae90f33f37acfae6a0f7cbc02222d6cd34e479421c3e74d3853c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.6.0" file_selector_windows: @@ -475,7 +475,7 @@ packages: description: name: file_selector_windows sha256: "1372760c6b389842b77156203308940558a2817360154084368608413835fc26" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.3" fixnum: @@ -483,7 +483,7 @@ packages: description: name: fixnum sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" flex_color_picker: @@ -491,7 +491,7 @@ packages: description: name: flex_color_picker sha256: f37476ab3e80dcaca94e428e159944d465dd16312fda9ff41e07e86f04bfa51c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.3.0" flex_seed_scheme: @@ -499,7 +499,7 @@ packages: description: name: flex_seed_scheme sha256: "29c12aba221eb8a368a119685371381f8035011d18de5ba277ad11d7dfb8657f" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" flutter: @@ -512,7 +512,7 @@ packages: description: name: flutter_blurhash sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.0" flutter_cache_manager: @@ -520,7 +520,7 @@ packages: description: name: flutter_cache_manager sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.3.1" flutter_email_sender: @@ -528,7 +528,7 @@ packages: description: name: flutter_email_sender sha256: "52b713a67a966be4d9e6f68a323fc0a5bc2da71c567eb451af1aa90d30adbc3a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.0.1" flutter_fgbg: @@ -536,7 +536,7 @@ packages: description: name: flutter_fgbg sha256: "08c4d2fd229e3df26083d5aecc3dea9ff4f2d188f8cd57aaf2b3f047bd08a047" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.0" flutter_inappwebview: @@ -544,7 +544,7 @@ packages: description: name: flutter_inappwebview sha256: f73505c792cf083d5566e1a94002311be497d984b5607f25be36d685cf6361cf - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.7.2+3" flutter_js: @@ -552,7 +552,7 @@ packages: description: name: flutter_js sha256: c4e0ff2cac3378e34eb0cafb58089377a7722d3531cdf9fcd5a53b5afc66c2dc - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.2" flutter_keyboard_visibility: @@ -560,7 +560,7 @@ packages: description: name: flutter_keyboard_visibility sha256: "4983655c26ab5b959252ee204c2fffa4afeb4413cd030455194ec0caa3b8e7cb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.4.1" flutter_keyboard_visibility_linux: @@ -568,7 +568,7 @@ packages: description: name: flutter_keyboard_visibility_linux sha256: "6fba7cd9bb033b6ddd8c2beb4c99ad02d728f1e6e6d9b9446667398b2ac39f08" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" flutter_keyboard_visibility_macos: @@ -576,7 +576,7 @@ packages: description: name: flutter_keyboard_visibility_macos sha256: c5c49b16fff453dfdafdc16f26bdd8fb8d55812a1d50b0ce25fc8d9f2e53d086 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" flutter_keyboard_visibility_platform_interface: @@ -584,7 +584,7 @@ packages: description: name: flutter_keyboard_visibility_platform_interface sha256: e43a89845873f7be10cb3884345ceb9aebf00a659f479d1c8f4293fcb37022a4 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" flutter_keyboard_visibility_web: @@ -592,7 +592,7 @@ packages: description: name: flutter_keyboard_visibility_web sha256: d3771a2e752880c79203f8d80658401d0c998e4183edca05a149f5098ce6e3d1 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" flutter_keyboard_visibility_windows: @@ -600,7 +600,7 @@ packages: description: name: flutter_keyboard_visibility_windows sha256: fc4b0f0b6be9b93ae527f3d527fb56ee2d918cd88bbca438c478af7bcfd0ef73 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" flutter_layout_grid: @@ -608,7 +608,7 @@ packages: description: name: flutter_layout_grid sha256: "3c03d28f884d816d6f483bdd64dd79663abfb00eea7cb27ffe98380e8357af95" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.4" flutter_linkify: @@ -616,7 +616,7 @@ packages: description: name: flutter_linkify sha256: "74669e06a8f358fee4512b4320c0b80e51cffc496607931de68d28f099254073" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.0.0" flutter_lints: @@ -624,7 +624,7 @@ packages: description: name: flutter_lints sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.2" flutter_localizations: @@ -646,7 +646,7 @@ packages: description: name: flutter_math_fork sha256: a143a3a89131b578043ecbdb5e759c1033a1b3e9174f5cd1b979d93f4a7fb41c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.7.1" flutter_phoenix: @@ -654,7 +654,7 @@ packages: description: name: flutter_phoenix sha256: "39589dac934ea476d0e43fb60c1ddfba58f14960743640c8250dea11c4333378" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" flutter_platform_widgets: @@ -662,7 +662,7 @@ packages: description: name: flutter_platform_widgets sha256: "107d5bc9a167b4e268cba44075ee399b6b2c63d44ede28f7e8c983d7fa4b59be" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.3.5" flutter_plugin_android_lifecycle: @@ -670,7 +670,7 @@ packages: description: name: flutter_plugin_android_lifecycle sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.15" flutter_progress_dialog: @@ -687,7 +687,7 @@ packages: description: name: flutter_secure_storage sha256: "98352186ee7ad3639ccc77ad7924b773ff6883076ab952437d20f18a61f0a7c5" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "8.0.0" flutter_secure_storage_linux: @@ -695,7 +695,7 @@ packages: description: name: flutter_secure_storage_linux sha256: "0912ae29a572230ad52d8a4697e5518d7f0f429052fd51df7e5a7952c7efe2a3" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.3" flutter_secure_storage_macos: @@ -703,7 +703,7 @@ packages: description: name: flutter_secure_storage_macos sha256: "083add01847fc1c80a07a08e1ed6927e9acd9618a35e330239d4422cd2a58c50" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.0" flutter_secure_storage_platform_interface: @@ -711,7 +711,7 @@ packages: description: name: flutter_secure_storage_platform_interface sha256: b3773190e385a3c8a382007893d678ae95462b3c2279e987b55d140d3b0cb81b - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.1" flutter_secure_storage_web: @@ -719,7 +719,7 @@ packages: description: name: flutter_secure_storage_web sha256: "42938e70d4b872e856e678c423cc0e9065d7d294f45bc41fc1981a4eb4beaffe" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" flutter_secure_storage_windows: @@ -727,7 +727,7 @@ packages: description: name: flutter_secure_storage_windows sha256: fc2910ec9b28d60598216c29ea763b3a96c401f0ce1d13cdf69ccb0e5c93c3ee - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.0" flutter_svg: @@ -735,7 +735,7 @@ packages: description: name: flutter_svg sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.7" flutter_swiper_view: @@ -743,7 +743,7 @@ packages: description: name: flutter_swiper_view sha256: "2a165b259e8a4c49d4da5626b967ed42a73dac2d075bd9e266ad8d23b9f01879" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.8" flutter_test: @@ -756,7 +756,7 @@ packages: description: name: flutter_typeahead sha256: a3539f7a90246b152f569029dedcf0b842532d3f2a440701b520e0bf2acbcf42 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.6.2" flutter_web_plugins: @@ -778,7 +778,7 @@ packages: description: name: frontend_server_client sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.0" gallery_saver: @@ -786,7 +786,7 @@ packages: description: name: gallery_saver sha256: df8b7e207ca12d64c71e0710a7ee3bc48aa7206d51cc720716fedb1543a66712 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.2" glob: @@ -794,7 +794,7 @@ packages: description: name: glob sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.2" graphs: @@ -802,7 +802,7 @@ packages: description: name: graphs sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.1" html: @@ -810,7 +810,7 @@ packages: description: name: html sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.15.4" http: @@ -818,7 +818,7 @@ packages: description: name: http sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.13.6" http_multi_server: @@ -826,7 +826,7 @@ packages: description: name: http_multi_server sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.1" http_parser: @@ -834,7 +834,7 @@ packages: description: name: http_parser sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.0.2" ical: @@ -851,7 +851,7 @@ packages: description: name: image_picker sha256: "6296e98782726d37f59663f0727d0e978eee1ced1ffed45ccaba591786a7f7b3" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.1" image_picker_android: @@ -859,7 +859,7 @@ packages: description: name: image_picker_android sha256: "8179b54039b50eee561676232304f487602e2950ffb3e8995ed9034d6505ca34" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.8.7+4" image_picker_for_web: @@ -867,7 +867,7 @@ packages: description: name: image_picker_for_web sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" image_picker_ios: @@ -875,7 +875,7 @@ packages: description: name: image_picker_ios sha256: b3e2f21feb28b24dd73a35d7ad6e83f568337c70afab5eabac876e23803f264b - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.8.8" image_picker_linux: @@ -883,7 +883,7 @@ packages: description: name: image_picker_linux sha256: "02cbc21fe1706b97942b575966e5fbbeaac535e76deef70d3a242e4afb857831" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1" image_picker_macos: @@ -891,7 +891,7 @@ packages: description: name: image_picker_macos sha256: cee2aa86c56780c13af2c77b5f2f72973464db204569e1ba2dd744459a065af4 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1" image_picker_platform_interface: @@ -899,7 +899,7 @@ packages: description: name: image_picker_platform_interface sha256: c1134543ae2187e85299996d21c526b2f403854994026d575ae4cf30d7bb2a32 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.9.0" image_picker_windows: @@ -907,7 +907,7 @@ packages: description: name: image_picker_windows sha256: c3066601ea42113922232c7b7b3330a2d86f029f685bba99d82c30e799914952 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.1" in_app_review: @@ -915,7 +915,7 @@ packages: description: name: in_app_review sha256: "16328b8202d36522322b95804ae5d975577aa9f584d634985849ba1099645850" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.6" in_app_review_platform_interface: @@ -923,7 +923,7 @@ packages: description: name: in_app_review_platform_interface sha256: b12ec9aaf6b34d3a72aa95895eb252b381896246bdad4ef378d444affe8410ef - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.4" intl: @@ -931,7 +931,7 @@ packages: description: name: intl sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.18.1" intl_utils: @@ -939,7 +939,7 @@ packages: description: name: intl_utils sha256: a509a2ada4d12c4dc70f9ca35c2fddf75f8b402409ac1a9e1b3dd8065681986b - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.8.3" io: @@ -947,7 +947,7 @@ packages: description: name: io sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" js: @@ -955,7 +955,7 @@ packages: description: name: js sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.6.7" json_annotation: @@ -963,7 +963,7 @@ packages: description: name: json_annotation sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.8.1" json_serializable: @@ -971,7 +971,7 @@ packages: description: name: json_serializable sha256: aa1f5a8912615733e0fdc7a02af03308933c93235bdc8d50d0b0c8a8ccb0b969 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.7.1" lazy_load_indexed_stack: @@ -979,7 +979,7 @@ packages: description: name: lazy_load_indexed_stack sha256: c56c9c292048ecd8c86008617c7d77aa4057cafcdae1c5269aec6fb75019eebf - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.1" linkify: @@ -996,7 +996,7 @@ packages: description: name: lints sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.1" logging: @@ -1004,7 +1004,7 @@ packages: description: name: logging sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.0" lunar: @@ -1012,7 +1012,7 @@ packages: description: name: lunar sha256: "342c60777030ffde70626b750bfb7e9f91a7eaa680a06edfbb9ef6b2361dbd3e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.6.1" markdown: @@ -1020,7 +1020,7 @@ packages: description: name: markdown sha256: c2b81e184067b41d0264d514f7cdaa2c02d38511e39d6521a1ccc238f6d7b3f2 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.0.1" matcher: @@ -1028,7 +1028,7 @@ packages: description: name: matcher sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.12.15" material_color_generator: @@ -1036,7 +1036,7 @@ packages: description: name: material_color_generator sha256: fa0ffc12d7cf6f13c41e35ac7f4265a49ec2f201b41b268fd8061da3bcc41131 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" material_color_utilities: @@ -1044,7 +1044,7 @@ packages: description: name: material_color_utilities sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.0" meta: @@ -1052,7 +1052,7 @@ packages: description: name: meta sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.9.1" mime: @@ -1060,7 +1060,7 @@ packages: description: name: mime sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" mutex: @@ -1068,7 +1068,7 @@ packages: description: name: mutex sha256: "03116a4e46282a671b46c12de649d72c0ed18188ffe12a8d0fc63e83f4ad88f4" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.1" nanoid: @@ -1076,7 +1076,7 @@ packages: description: name: nanoid sha256: be3f8752d9046c825df2f3914195151eb876f3ad64b9d833dd0b799b77b8759e - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" nested: @@ -1084,7 +1084,7 @@ packages: description: name: nested sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" nil: @@ -1092,7 +1092,7 @@ packages: description: name: nil sha256: ef05770c48942876d843bf6a4822d35e5da0ff893a61f1d5ad96d15c4a659136 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" octo_image: @@ -1100,7 +1100,7 @@ packages: description: name: octo_image sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.2" open_file: @@ -1117,7 +1117,7 @@ packages: description: name: otp sha256: fcb7f21e30c4cd80a0a982c27a9b75151cc1fe3d8f7ee680673c090171b1ad55 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.4" package_config: @@ -1125,7 +1125,7 @@ packages: description: name: package_config sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" path: @@ -1133,7 +1133,7 @@ packages: description: name: path sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.8.3" path_parsing: @@ -1141,7 +1141,7 @@ packages: description: name: path_parsing sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.1" path_provider: @@ -1149,55 +1149,55 @@ packages: description: name: path_provider sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.15" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" - url: "https://pub.dev" + sha256: "5d44fc3314d969b84816b569070d7ace0f1dea04bd94a83f74c4829615d22ad8" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.27" + version: "2.1.0" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "916731ccbdce44d545414dd9961f26ba5fbaa74bcbb55237d8e65a623a8c7297" - url: "https://pub.dev" + sha256: "1b744d3d774e5a879bb76d6cd1ecee2ba2c6960c03b1020cd35212f6aa267ac5" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.4" + version: "2.3.0" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57 - url: "https://pub.dev" + sha256: ba2b77f0c52a33db09fc8caf85b12df691bf28d983e84cf87ff6d693cfa007b3 + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.11" + version: "2.2.0" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" - url: "https://pub.dev" + sha256: bced5679c7df11190e1ddc35f3222c858f328fff85c3942e46e7f5589bf9eb84 + url: "https://pub.flutter-io.cn" source: hosted - version: "2.0.6" + version: "2.1.0" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" - url: "https://pub.dev" + sha256: ee0e0d164516b90ae1f970bdf29f726f1aa730d7cfc449ecc74c495378b705da + url: "https://pub.flutter-io.cn" source: hosted - version: "2.1.7" + version: "2.2.0" permission_handler: dependency: "direct main" description: name: permission_handler sha256: "63e5216aae014a72fe9579ccd027323395ce7a98271d9defa9d57320d001af81" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "10.4.3" permission_handler_android: @@ -1205,7 +1205,7 @@ packages: description: name: permission_handler_android sha256: "2ffaf52a21f64ac9b35fe7369bb9533edbd4f698e5604db8645b1064ff4cf221" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "10.3.3" permission_handler_apple: @@ -1213,7 +1213,7 @@ packages: description: name: permission_handler_apple sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "9.1.4" permission_handler_platform_interface: @@ -1221,7 +1221,7 @@ packages: description: name: permission_handler_platform_interface sha256: "7c6b1500385dd1d2ca61bb89e2488ca178e274a69144d26bbd65e33eae7c02a9" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.11.3" permission_handler_windows: @@ -1229,7 +1229,7 @@ packages: description: name: permission_handler_windows sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.3" petitparser: @@ -1237,7 +1237,7 @@ packages: description: name: petitparser sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "5.4.0" photo_view: @@ -1245,7 +1245,7 @@ packages: description: name: photo_view sha256: "8036802a00bae2a78fc197af8a158e3e2f7b500561ed23b4c458107685e645bb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.14.0" platform: @@ -1253,7 +1253,7 @@ packages: description: name: platform sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.0" platform_device_id: @@ -1261,7 +1261,7 @@ packages: description: name: platform_device_id sha256: "7a12ec84de4a823bb10eba2f0e1ad29e2365abba17790489a0d78029904f562e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.1" platform_device_id_linux: @@ -1269,7 +1269,7 @@ packages: description: name: platform_device_id_linux sha256: "994b1608593e527a629af2d5aeb241c60d308d3434bc78b0f6fcb3c1a02dff43" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" platform_device_id_macos: @@ -1277,7 +1277,7 @@ packages: description: name: platform_device_id_macos sha256: "968db2a504c611294b12a031b3734432d6df10553a0d3ae3b33ed21abfdbaba0" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" platform_device_id_platform_interface: @@ -1285,7 +1285,7 @@ packages: description: name: platform_device_id_platform_interface sha256: c61607594252aaddacf3e4c4371ab08f2ef85ff427817fa6e48a169429610c46 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" platform_device_id_web: @@ -1293,7 +1293,7 @@ packages: description: name: platform_device_id_web sha256: "58e124594e1165db7f108395a780b1d1e1cd403021978e5228cf4289fbe736d5" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" platform_device_id_windows: @@ -1301,7 +1301,7 @@ packages: description: name: platform_device_id_windows sha256: dbf8dcf03ad8555320ebae2403a3081b79f137f37661874e161fe2de0a84eeeb - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" plugin_platform_interface: @@ -1309,7 +1309,7 @@ packages: description: name: plugin_platform_interface sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.5" pointer_interceptor: @@ -1317,7 +1317,7 @@ packages: description: name: pointer_interceptor sha256: "6aa680b30d96dccef496933d00208ad25f07e047f644dc98ce03ec6141633a9a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.3+4" pointycastle: @@ -1325,7 +1325,7 @@ packages: description: name: pointycastle sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.7.3" pool: @@ -1333,7 +1333,7 @@ packages: description: name: pool sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.5.1" provider: @@ -1341,7 +1341,7 @@ packages: description: name: provider sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.0.5" pub_semver: @@ -1349,7 +1349,7 @@ packages: description: name: pub_semver sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" pubspec_generator: @@ -1357,7 +1357,7 @@ packages: description: name: pubspec_generator sha256: "5056a18045508dbbd4cfabf96682840fa4b702050ef62be6cdfe059c429ab7bb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.1" pubspec_parse: @@ -1365,7 +1365,7 @@ packages: description: name: pubspec_parse sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.3" qr: @@ -1373,7 +1373,7 @@ packages: description: name: qr sha256: "64957a3930367bf97cc211a5af99551d630f2f4625e38af10edd6b19131b64b3" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.1" qr_flutter: @@ -1381,7 +1381,7 @@ packages: description: name: qr_flutter sha256: "5095f0fc6e3f71d08adef8feccc8cea4f12eec18a2e31c2e8d82cb6019f4b097" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "4.1.0" quick_actions: @@ -1389,7 +1389,7 @@ packages: description: name: quick_actions sha256: "0562d78b8d6a87576fb8fe55bc655bda6ebe3c61a5904df56d20bd88f98cf3a3" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.5" quick_actions_android: @@ -1397,7 +1397,7 @@ packages: description: name: quick_actions_android sha256: e31ae2181d1bd3b07e375feda452ae573c90b65fee6d4ac64cf113c789bff8c3 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.7" quick_actions_ios: @@ -1405,7 +1405,7 @@ packages: description: name: quick_actions_ios sha256: "9ed8b003a65034de9f36a7f593026bf114c8796a38011b23240f8bf7e4668e2b" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.6" quick_actions_platform_interface: @@ -1413,7 +1413,7 @@ packages: description: name: quick_actions_platform_interface sha256: "2985e12b5fecb5715a35cc0a3b2127b4391e1969e62bd0a4a721b4de21d5fedb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" quiver: @@ -1421,7 +1421,7 @@ packages: description: name: quiver sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.2.1" receive_intent: @@ -1438,7 +1438,7 @@ packages: description: name: rxdart sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.27.7" screen_brightness: @@ -1446,7 +1446,7 @@ packages: description: name: screen_brightness sha256: "62fd61a64e68b32b98b840bad7d8b6822bbc40e63c2b569a5f85528484c86b41" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.2.2" screen_brightness_android: @@ -1454,7 +1454,7 @@ packages: description: name: screen_brightness_android sha256: "3df10961e3a9e968a5e076fe27e7f4741fa8a1d3950bdeb48cf121ed529d0caf" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.0+2" screen_brightness_ios: @@ -1462,7 +1462,7 @@ packages: description: name: screen_brightness_ios sha256: "99adc3ca5490b8294284aad5fcc87f061ad685050e03cf45d3d018fe398fd9a2" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.0" screen_brightness_macos: @@ -1470,7 +1470,7 @@ packages: description: name: screen_brightness_macos sha256: "64b34e7e3f4900d7687c8e8fb514246845a73ecec05ab53483ed025bd4a899fd" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.0+1" screen_brightness_platform_interface: @@ -1478,7 +1478,7 @@ packages: description: name: screen_brightness_platform_interface sha256: b211d07f0c96637a15fb06f6168617e18030d5d74ad03795dd8547a52717c171 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.0" screen_brightness_windows: @@ -1486,7 +1486,7 @@ packages: description: name: screen_brightness_windows sha256: "80d90ecdc63fc0823f2ecb1be323471619287937e14210650d7b25ca181abd05" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.1" screen_capture_event: @@ -1494,31 +1494,31 @@ packages: description: name: screen_capture_event sha256: "49981745c19e86c3ea7df2b1982651f5f7fb439d293c72cc578c15d032731af7" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" share_plus: dependency: "direct main" description: name: share_plus - sha256: ed3fcea4f789ed95913328e629c0c53e69e80e08b6c24542f1b3576046c614e8 - url: "https://pub.dev" + sha256: "6cec740fa0943a826951223e76218df002804adb588235a8910dc3d6b0654e11" + url: "https://pub.flutter-io.cn" source: hosted - version: "7.0.2" + version: "7.1.0" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "0c6e61471bd71b04a138b8b588fa388e66d8b005e6f2deda63371c5c505a0981" - url: "https://pub.dev" + sha256: "357412af4178d8e11d14f41723f80f12caea54cf0d5cd29af9dcdab85d58aea7" + url: "https://pub.flutter-io.cn" source: hosted - version: "3.2.1" + version: "3.3.0" shared_preferences: dependency: "direct main" description: name: shared_preferences sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" shared_preferences_android: @@ -1526,7 +1526,7 @@ packages: description: name: shared_preferences_android sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" shared_preferences_foundation: @@ -1534,7 +1534,7 @@ packages: description: name: shared_preferences_foundation sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.2" shared_preferences_linux: @@ -1542,7 +1542,7 @@ packages: description: name: shared_preferences_linux sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.0" shared_preferences_platform_interface: @@ -1550,7 +1550,7 @@ packages: description: name: shared_preferences_platform_interface sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.0" shared_preferences_web: @@ -1558,7 +1558,7 @@ packages: description: name: shared_preferences_web sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.2.0" shared_preferences_windows: @@ -1566,7 +1566,7 @@ packages: description: name: shared_preferences_windows sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.3.0" shelf: @@ -1574,7 +1574,7 @@ packages: description: name: shelf sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.1" shelf_web_socket: @@ -1582,7 +1582,7 @@ packages: description: name: shelf_web_socket sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.4" sky_engine: @@ -1595,7 +1595,7 @@ packages: description: name: source_gen sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.4.0" source_helper: @@ -1603,7 +1603,7 @@ packages: description: name: source_helper sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.4" source_span: @@ -1611,31 +1611,31 @@ packages: description: name: source_span sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.9.1" sqflite: dependency: transitive description: name: sqflite - sha256: b4d6710e1200e96845747e37338ea8a819a12b51689a3bcf31eff0003b37a0b9 - url: "https://pub.dev" + sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.2.8+4" + version: "2.3.0" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "8f7603f3f8f126740bc55c4ca2d1027aab4b74a1267a3e31ce51fe40e3b65b8f" - url: "https://pub.dev" + sha256: "1b92f368f44b0dee2425bb861cfa17b6f6cf3961f762ff6f941d20b33355660a" + url: "https://pub.flutter-io.cn" source: hosted - version: "2.4.5+1" + version: "2.5.0" stack_trace: dependency: transitive description: name: stack_trace sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.11.0" stream_channel: @@ -1643,7 +1643,7 @@ packages: description: name: stream_channel sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.1" stream_transform: @@ -1651,7 +1651,7 @@ packages: description: name: stream_transform sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.0" string_scanner: @@ -1659,7 +1659,7 @@ packages: description: name: string_scanner sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.2.0" sync_http: @@ -1667,7 +1667,7 @@ packages: description: name: sync_http sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.3.1" synchronized: @@ -1675,7 +1675,7 @@ packages: description: name: synchronized sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.0" system_tray: @@ -1692,7 +1692,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: @@ -1700,7 +1700,7 @@ packages: description: name: test_api sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.5.1" timezone: @@ -1708,7 +1708,7 @@ packages: description: name: timezone sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.9.2" timing: @@ -1716,7 +1716,7 @@ packages: description: name: timing sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.1" tuple: @@ -1724,15 +1724,23 @@ packages: description: name: tuple sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.2" + tutorial_coach_mark: + dependency: "direct main" + description: + name: tutorial_coach_mark + sha256: ba60583d1b500111bf5040eb24330862b25162d926f72923b8e45c16621878b0 + url: "https://pub.flutter-io.cn" + source: hosted + version: "1.2.9" typed_data: dependency: transitive description: name: typed_data sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.3.2" uni_links: @@ -1740,7 +1748,7 @@ packages: description: name: uni_links sha256: "051098acfc9e26a9fde03b487bef5d3d228ca8f67693480c6f33fd4fbb8e2b6e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.5.1" uni_links_platform_interface: @@ -1748,7 +1756,7 @@ packages: description: name: uni_links_platform_interface sha256: "929cf1a71b59e3b7c2d8a2605a9cf7e0b125b13bc858e55083d88c62722d4507" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.0" uni_links_web: @@ -1756,7 +1764,7 @@ packages: description: name: uni_links_web sha256: "7539db908e25f67de2438e33cc1020b30ab94e66720b5677ba6763b25f6394df" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "0.1.0" url_launcher: @@ -1764,7 +1772,7 @@ packages: description: name: url_launcher sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.12" url_launcher_android: @@ -1772,7 +1780,7 @@ packages: description: name: url_launcher_android sha256: "78cb6dea3e93148615109e58e42c35d1ffbf5ef66c44add673d0ab75f12ff3af" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.0.37" url_launcher_ios: @@ -1780,7 +1788,7 @@ packages: description: name: url_launcher_ios sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.1.4" url_launcher_linux: @@ -1788,7 +1796,7 @@ packages: description: name: url_launcher_linux sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.5" url_launcher_macos: @@ -1796,7 +1804,7 @@ packages: description: name: url_launcher_macos sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.6" url_launcher_platform_interface: @@ -1804,7 +1812,7 @@ packages: description: name: url_launcher_platform_interface sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.3" url_launcher_web: @@ -1812,7 +1820,7 @@ packages: description: name: url_launcher_web sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.0.18" url_launcher_windows: @@ -1820,7 +1828,7 @@ packages: description: name: url_launcher_windows sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.7" uuid: @@ -1828,7 +1836,7 @@ packages: description: name: uuid sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.0.7" vector_graphics: @@ -1836,7 +1844,7 @@ packages: description: name: vector_graphics sha256: "670f6e07aca990b4a2bcdc08a784193c4ccdd1932620244c3a86bb72a0eac67f" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.7" vector_graphics_codec: @@ -1844,7 +1852,7 @@ packages: description: name: vector_graphics_codec sha256: "7451721781d967db9933b63f5733b1c4533022c0ba373a01bdd79d1a5457f69f" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.7" vector_graphics_compiler: @@ -1852,7 +1860,7 @@ packages: description: name: vector_graphics_compiler sha256: "80a13c613c8bde758b1464a1755a7b3a8f2b6cec61fbf0f5a53c94c30f03ba2e" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.7" vector_math: @@ -1860,7 +1868,7 @@ packages: description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.1.4" watcher: @@ -1868,7 +1876,7 @@ packages: description: name: watcher sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.0" web_socket_channel: @@ -1876,23 +1884,23 @@ packages: description: name: web_socket_channel sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "2.4.0" win32: dependency: "direct main" description: name: win32 - sha256: dfdf0136e0aa7a1b474ea133e67cb0154a0acd2599c4f3ada3b49d38d38793ee - url: "https://pub.dev" + sha256: f2add6fa510d3ae152903412227bda57d0d5a8da61d2c39c1fb022c9429a41c0 + url: "https://pub.flutter-io.cn" source: hosted - version: "5.0.5" + version: "5.0.6" win32_registry: dependency: transitive description: name: win32_registry sha256: e4506d60b7244251bc59df15656a3093501c37fb5af02105a944d73eb95be4c9 - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.1.1" xdg_directories: @@ -1900,7 +1908,7 @@ packages: description: name: xdg_directories sha256: e0b1147eec179d3911f1f19b59206448f78195ca1d20514134e10641b7d7fbff - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "1.0.1" xiao_mi_push_plugin: @@ -1917,7 +1925,7 @@ packages: description: name: xml sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "6.3.0" yaml: @@ -1925,7 +1933,7 @@ packages: description: name: yaml sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" - url: "https://pub.dev" + url: "https://pub.flutter-io.cn" source: hosted version: "3.1.2" sdks: diff --git a/pubspec.yaml b/pubspec.yaml index 2ca1ac91..ef941c38 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -102,6 +102,7 @@ dependencies: flutter_secure_storage: ^8.0.0 encrypt_shared_preferences: ^0.3.5 device_identity: ^1.0.0 + tutorial_coach_mark: ^1.2.9 dependency_overrides: From 3d173830cafcea3ea3e0f0b6c034d703bf3bc9a7 Mon Sep 17 00:00:00 2001 From: ByDream <2249984221@qq.com> Date: Sat, 5 Aug 2023 20:34:37 +0800 Subject: [PATCH 2/7] feat: provide feature display the first time using timetable page #275 first pull request attempt --- lib/l10n/intl_en.arb | 2 +- lib/l10n/intl_ja.arb | 2 +- lib/l10n/intl_zh_CN.arb | 2 +- lib/page/subpage_timetable.dart | 60 ++++++++++----------------------- 4 files changed, 21 insertions(+), 45 deletions(-) diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index 644c56e0..12fa2179 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -500,5 +500,5 @@ "manually_add_course":"Add lesson manually:", "manually_add_course_message":"If there is a class that is not included in the class schedule, but you want to check it, add it manually yourself.", "start_date_select": "Term start date query", - "start_date_select_message": "You must select the start date of the semester to view your class schedule. Not selecting will result in a date error. Tip: Start date is the Monday of the first week." + "start_date_select_message": "You must select the start date of the semester to view your class schedule. Not selecting will result in a date error. \nTip: Start date is the Monday of the first week." } \ No newline at end of file diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index 8075a03e..5e1696e6 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -492,5 +492,5 @@ "manually_add_course":"カリキュラムを手動で追加するには:", "manually_add_course_message":"授業表に収録されていない授業があるかどうか、また見たいのではないでしょうか。自分で手動で追加しましょう。", "start_date_select": "学期開始日照会:", - "start_date_select_message": "授業表を見るには、学期の開始日を選択しなければなりません。選択しないと日付エラーになります。ヒント:開始日は第1週の月曜日です。" + "start_date_select_message": "授業表を見るには、学期の開始日を選択しなければなりません。選択しないと日付エラーになります。\nヒント:開始日は第1週の月曜日です。" } \ No newline at end of file diff --git a/lib/l10n/intl_zh_CN.arb b/lib/l10n/intl_zh_CN.arb index 8723c1ab..0ec7aa7d 100644 --- a/lib/l10n/intl_zh_CN.arb +++ b/lib/l10n/intl_zh_CN.arb @@ -492,5 +492,5 @@ "manually_add_course":"手动添加课程:", "manually_add_course_message":"是否有课未收录在课表上,但你又想查看的呢,自己手动添加它吧。", "start_date_select": "学期开始日期查询:", - "start_date_select_message": "必须选择学期的开始日期才能查看你的课表。不选择将导致日期错误。提示:开始日期是第一周的周一。" + "start_date_select_message": "必须选择学期的开始日期才能查看你的课表。不选择将导致日期错误。\n提示:开始日期是第一周的周一。" } diff --git a/lib/page/subpage_timetable.dart b/lib/page/subpage_timetable.dart index 96f41ca3..ef0aefa9 100644 --- a/lib/page/subpage_timetable.dart +++ b/lib/page/subpage_timetable.dart @@ -327,22 +327,22 @@ class TimetableSubPageState extends PlatformSubpageState { TargetContent( align: ContentAlign.bottom, builder: (context, controller) { - return const Column( + return Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - "学期选择:", - style: TextStyle( + S.of(context).choose_semester, + style: const TextStyle( fontWeight: FontWeight.bold, color: Colors.white, fontSize: 20.0), ), Padding( - padding: EdgeInsets.only(top: 10.0), + padding: const EdgeInsets.only(top: 10.0), child: Text( - "选择你想查看的学期", - style: TextStyle(color: Colors.white), + S.of(context).choose_semester_message, + style: const TextStyle(color: Colors.white), ), ), ], @@ -356,7 +356,6 @@ class TimetableSubPageState extends PlatformSubpageState { TargetFocus( identify: "ManuallyAddCourseButton", keyTarget: keyButton, - // color: Colors.purple, contents: [ TargetContent( align: ContentAlign.bottom, @@ -366,18 +365,18 @@ class TimetableSubPageState extends PlatformSubpageState { crossAxisAlignment: CrossAxisAlignment.start, children: [ Text( - S.of(context).skip, + S.of(context).manually_add_course, style: const TextStyle( fontWeight: FontWeight.bold, color: Colors.white, fontSize: 20.0, ), ), - const Padding( - padding: EdgeInsets.only(top: 10.0), + Padding( + padding: const EdgeInsets.only(top: 10.0), child: Text( - "是否有课未收录在课表上,但你又想查看的呢,自己手动添加它吧", - style: TextStyle(color: Colors.white), + S.of(context).manually_add_course_message, + style: const TextStyle(color: Colors.white), ), ), ElevatedButton( @@ -409,45 +408,22 @@ class TimetableSubPageState extends PlatformSubpageState { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - const Text( - "学期开始日期选择:", - style: TextStyle( + Text( + S.of(context).start_date_select, + style: const TextStyle( fontWeight: FontWeight.bold, color: Colors.white, fontSize: 20.0, ), ), - const Padding( - padding: EdgeInsets.only(top: 10.0), + Padding( + padding: const EdgeInsets.only(top: 10.0), child: Column( children: [ Align( - // alignment: Alignment.center, - child: Text( - "必须选择学期的开始日期才能查看你的课表", - style: TextStyle( - fontWeight: FontWeight.bold, - color: Colors.white, - fontSize: 20.0, - ), - ), - ), - Align( - // alignment: Alignment.center, - child: Text( - "不选择将导致日期错误", - style: TextStyle( - fontWeight: FontWeight.bold, - color: Colors.white, - fontSize: 20.0, - ), - ), - ), - Align( - // alignment: Alignment.center, child: Text( - "tips:开始日期是第一周的周一", - style: TextStyle( + S.of(context).start_date_select_message, + style: const TextStyle( fontWeight: FontWeight.bold, color: Colors.white, fontSize: 20.0, From 091b97aa8110fa2944dda254b60fc38e1f2dfff3 Mon Sep 17 00:00:00 2001 From: ByDream <2249984221@qq.com> Date: Sun, 6 Aug 2023 10:59:32 +0800 Subject: [PATCH 3/7] feat: provide feature display the first time using timetable page #275 second pull request attempt --- flutter_01.png | Bin 16616 -> 0 bytes flutter_02.png | Bin 16616 -> 0 bytes lib/l10n/intl_en.arb | 2 +- lib/l10n/intl_ja.arb | 12 ++++++------ lib/page/subpage_timetable.dart | 6 +++--- lib/provider/settings_provider.dart | 4 ++-- 6 files changed, 12 insertions(+), 12 deletions(-) delete mode 100644 flutter_01.png delete mode 100644 flutter_02.png diff --git a/flutter_01.png b/flutter_01.png deleted file mode 100644 index 59ab4005a69e6c7b97e328ba0f879b048a25f802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16616 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 { @override void initState() { - if (SettingsProvider.getInstance().hasVistedTimeTable == false) { + if (SettingsProvider.getInstance().hasVisitedTimeTable == false) { createTutorial(); - Future.delayed(Duration.zero, showTutorial); - SettingsProvider.getInstance().hasVistedTimeTable = true; + showTutorial(); + SettingsProvider.getInstance().hasVisitedTimeTable = true; } super.initState(); _setContent(); diff --git a/lib/provider/settings_provider.dart b/lib/provider/settings_provider.dart index d7caf1ff..88133ae0 100644 --- a/lib/provider/settings_provider.dart +++ b/lib/provider/settings_provider.dart @@ -177,14 +177,14 @@ class SettingsProvider with ChangeNotifier { notifyListeners(); } - bool get hasVistedTimeTable { + bool get hasVisitedTimeTable { if (preferences!.containsKey(KEY_VISITED_TIMETABLE)) { return preferences!.getBool(KEY_VISITED_TIMETABLE)!; } return false; } - set hasVistedTimeTable(bool value) { + set hasVisitedTimeTable(bool value) { preferences!.setBool(KEY_VISITED_TIMETABLE, value); notifyListeners(); } From 63b5df254d672a3ef6b051fa9966dce467660503 Mon Sep 17 00:00:00 2001 From: ByDream <2249984221@qq.com> Date: Sun, 6 Aug 2023 11:13:29 +0800 Subject: [PATCH 4/7] feat: provide feature display the first time using timetable page#275 restore pubspec.lock --- pubspec.lock | 502 +++++++++++++++++++++++++-------------------------- 1 file changed, 247 insertions(+), 255 deletions(-) diff --git a/pubspec.lock b/pubspec.lock index 5cc6893a..d52f317e 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -6,7 +6,7 @@ packages: description: name: _fe_analyzer_shared sha256: ae92f5d747aee634b87f89d9946000c2de774be1d6ac3e58268224348cd0101a - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "61.0.0" analyzer: @@ -14,7 +14,7 @@ packages: description: name: analyzer sha256: ea3d8652bda62982addfd92fdc2d0214e5f82e43325104990d4f4c4a2a313562 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.13.0" archive: @@ -22,7 +22,7 @@ packages: description: name: archive sha256: "0c8368c9b3f0abbc193b9d6133649a614204b528982bebc7026372d61677ce3a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.3.7" args: @@ -30,23 +30,23 @@ packages: description: name: args sha256: eef6c46b622e0494a36c5a12d10d77fb4e855501a91c1b9ef9339326e58f0596 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.2" asn1lib: dependency: "direct main" description: name: asn1lib - sha256: "21afe4333076c02877d14f4a89df111e658a6d466cbfc802eb705eb91bd5adfd" - url: "https://pub.flutter-io.cn" + sha256: b74e3842a52c61f8819a1ec8444b4de5419b41a7465e69d4aa681445377398b0 + url: "https://pub.dev" source: hosted - version: "1.5.0" + version: "1.4.1" async: dependency: transitive description: name: async sha256: "947bfcf187f74dbc5e146c9eb9c0f10c9f8b30743e341481c1e2ed3ecc18c20c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.11.0" auto_size_text: @@ -54,7 +54,7 @@ packages: description: name: auto_size_text sha256: "3f5261cd3fb5f2a9ab4e2fc3fba84fd9fcaac8821f20a1d4e71f557521b22599" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.0" base32: @@ -62,7 +62,7 @@ packages: description: name: base32 sha256: ddad4ebfedf93d4500818ed8e61443b734ffe7cf8a45c668c9b34ef6adde02e2 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.3" beautiful_soup_dart: @@ -70,7 +70,7 @@ packages: description: name: beautiful_soup_dart sha256: "57e23946c85776dd9515a4e9a14263fff37dbedbd559bc4412bf565886e12b10" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.3.0" bitsdojo_window: @@ -123,7 +123,7 @@ packages: description: name: boolean_selector sha256: "6cfb5af12253eaf2b368f07bacc5a80d1301a071c73360d746b7f2e32d762c66" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.1" build: @@ -131,7 +131,7 @@ packages: description: name: build sha256: "80184af8b6cb3e5c1c4ec6d8544d27711700bc3e6d2efad04238c7b5290889f0" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.1" build_config: @@ -139,7 +139,7 @@ packages: description: name: build_config sha256: bf80fcfb46a29945b423bd9aad884590fb1dc69b330a4d4700cac476af1708d1 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" build_daemon: @@ -147,7 +147,7 @@ packages: description: name: build_daemon sha256: "5f02d73eb2ba16483e693f80bee4f088563a820e47d1027d4cdfe62b5bb43e65" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.0.0" build_resolvers: @@ -155,7 +155,7 @@ packages: description: name: build_resolvers sha256: "6c4dd11d05d056e76320b828a1db0fc01ccd376922526f8e9d6c796a5adbac20" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.1" build_runner: @@ -163,7 +163,7 @@ packages: description: name: build_runner sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.6" build_runner_core: @@ -171,7 +171,7 @@ packages: description: name: build_runner_core sha256: "6d6ee4276b1c5f34f21fdf39425202712d2be82019983d52f351c94aafbc2c41" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "7.2.10" built_collection: @@ -179,7 +179,7 @@ packages: description: name: built_collection sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.1.1" built_value: @@ -187,7 +187,7 @@ packages: description: name: built_value sha256: "598a2a682e2a7a90f08ba39c0aaa9374c5112340f0a2e275f61b59389543d166" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "8.6.1" cached_network_image: @@ -195,7 +195,7 @@ packages: description: name: cached_network_image sha256: fd3d0dc1d451f9a252b32d95d3f0c3c487bc41a75eba2e6097cb0b9c71491b15 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.2.3" cached_network_image_platform_interface: @@ -203,7 +203,7 @@ packages: description: name: cached_network_image_platform_interface sha256: bb2b8403b4ccdc60ef5f25c70dead1f3d32d24b9d6117cfc087f496b178594a7 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.0" cached_network_image_web: @@ -211,7 +211,7 @@ packages: description: name: cached_network_image_web sha256: b8eb814ebfcb4dea049680f8c1ffb2df399e4d03bf7a352c775e26fa06e02fa0 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.2" characters: @@ -219,7 +219,7 @@ packages: description: name: characters sha256: "04a925763edad70e8443c99234dc3328f442e811f1d8fd1a72f1c8ad0f69a605" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.0" checked_yaml: @@ -227,7 +227,7 @@ packages: description: name: checked_yaml sha256: feb6bed21949061731a7a75fc5d2aa727cf160b91af9a3e464c5e3a32e28b5ff - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.3" clipboard: @@ -235,7 +235,7 @@ packages: description: name: clipboard sha256: "2ec38f0e59878008ceca0ab122e4bfde98847f88ef0f83331362ba4521f565a9" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.3" clock: @@ -243,7 +243,7 @@ packages: description: name: clock sha256: cb6d7f03e1de671e34607e909a7213e31d7752be4fb66a86d29fe1eb14bfb5cf - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" code_builder: @@ -251,7 +251,7 @@ packages: description: name: code_builder sha256: "4ad01d6e56db961d29661561effde45e519939fdaeb46c351275b182eac70189" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.5.0" collection: @@ -259,7 +259,7 @@ packages: description: name: collection sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.17.1" convert: @@ -267,7 +267,7 @@ packages: description: name: convert sha256: "0f08b14755d163f6e2134cb58222dd25ea2a2ee8a195e53983d57c075324d592" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.1" cookie_jar: @@ -275,7 +275,7 @@ packages: description: name: cookie_jar sha256: d1cc6516a190ba667941f722b6365d202caff3dacb38de24268b8d6ff1ec8a1d - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.1" cross_file: @@ -283,7 +283,7 @@ packages: description: name: cross_file sha256: "0b0036e8cccbfbe0555fd83c1d31a6f30b77a96b598b35a5d36dd41f718695e9" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.3.3+4" crypto: @@ -291,7 +291,7 @@ packages: description: name: crypto sha256: ff625774173754681d66daaf4a448684fb04b78f902da9cb3d308c19cc5e8bab - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.3" csslib: @@ -299,7 +299,7 @@ packages: description: name: csslib sha256: "706b5707578e0c1b4b7550f64078f0a0f19dec3f50a178ffae7006b0a9ca58fb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" cupertino_icons: @@ -307,7 +307,7 @@ packages: description: name: cupertino_icons sha256: e35129dc44c9118cee2a5603506d823bab99c68393879edb440e0090d07586be - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.5" dart_style: @@ -315,7 +315,7 @@ packages: description: name: dart_style sha256: "1efa911ca7086affd35f463ca2fc1799584fb6aa89883cf0af8e3664d6a02d55" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.2" desktop_window: @@ -323,7 +323,7 @@ packages: description: name: desktop_window sha256: "6256fb6feb7b5ec1311c76a3503f89202825bfe92c0458ec5fe7a728ffa216d5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.4.0" device_identity: @@ -331,7 +331,7 @@ packages: description: name: device_identity sha256: abc4834cb07a1b5f4cecba04a05839b13a45d5ae5c4cc40baa2ae12882339d03 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" device_info: @@ -339,7 +339,7 @@ packages: description: name: device_info sha256: f4a8156cb7b7480d969cb734907d18b333c8f0bc0b1ad0b342cdcecf30d62c48 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.3" device_info_platform_interface: @@ -347,23 +347,23 @@ packages: description: name: device_info_platform_interface sha256: b148e0bf9640145d09a4f8dea96614076f889e7f7f8b5ecab1c7e5c2dbc73c1b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.1" device_info_plus: dependency: "direct main" description: name: device_info_plus - sha256: "86add5ef97215562d2e090535b0a16f197902b10c369c558a100e74ea06e8659" - url: "https://pub.flutter-io.cn" + sha256: "2c35b6d1682b028e42d07b3aee4b98fa62996c10bc12cb651ec856a80d6a761b" + url: "https://pub.dev" source: hosted - version: "9.0.3" + version: "9.0.2" device_info_plus_platform_interface: dependency: transitive description: name: device_info_plus_platform_interface sha256: d3b01d5868b50ae571cd1dc6e502fc94d956b665756180f7b16ead09e836fd64 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "7.0.0" dio: @@ -371,7 +371,7 @@ packages: description: name: dio sha256: "7d328c4d898a61efc3cd93655a0955858e29a0aa647f0f9e02d59b3bb275e2e8" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.0.6" dio_cookie_manager: @@ -379,7 +379,7 @@ packages: description: name: dio_cookie_manager sha256: ed7ee3ba6cdb54599c8984d5a4ce09675c553ead6c28608eb54e38eec5b4f954 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.0" dio_log: @@ -387,7 +387,7 @@ packages: description: name: dio_log sha256: bf5ae847695277999d46e8089e74ec9fdf092f1d91299712d72ba5449ba13374 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.4" encrypt: @@ -395,7 +395,7 @@ packages: description: name: encrypt sha256: "4fd4e4fdc21b9d7d4141823e1e6515cd94e7b8d84749504c232999fba25d9bbb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.0.1" encrypt_shared_preferences: @@ -403,7 +403,7 @@ packages: description: name: encrypt_shared_preferences sha256: d81a9147c8584a37046c51d56132ff9a55de27c94fee70b9213ac8a94048f322 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.3.5" event_bus: @@ -411,7 +411,7 @@ packages: description: name: event_bus sha256: "44baa799834f4c803921873e7446a2add0f3efa45e101a054b1f0ab9b95f8edc" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.0" fake_async: @@ -419,7 +419,7 @@ packages: description: name: fake_async sha256: "511392330127add0b769b75a987850d136345d9227c6b94c96a04cf4a391bf78" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.1" ffi: @@ -427,7 +427,7 @@ packages: description: name: ffi sha256: ed5337a5660c506388a9f012be0288fb38b49020ce2b45fe1f8b8323fe429f99 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.2" file: @@ -435,7 +435,7 @@ packages: description: name: file sha256: "1b92bec4fc2a72f59a8e15af5f52cd441e4a7860b49499d69dfa817af20e925d" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.1.4" file_picker: @@ -443,7 +443,7 @@ packages: description: name: file_picker sha256: "21145c9c268d54b1f771d8380c195d2d6f655e0567dc1ca2f9c134c02c819e0a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.3.3" file_selector_linux: @@ -451,7 +451,7 @@ packages: description: name: file_selector_linux sha256: "770eb1ab057b5ae4326d1c24cc57710758b9a46026349d021d6311bd27580046" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.9.2" file_selector_macos: @@ -459,7 +459,7 @@ packages: description: name: file_selector_macos sha256: "4ada532862917bf16e3adb3891fe3a5917a58bae03293e497082203a80909412" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.9.3+1" file_selector_platform_interface: @@ -467,7 +467,7 @@ packages: description: name: file_selector_platform_interface sha256: "412705a646a0ae90f33f37acfae6a0f7cbc02222d6cd34e479421c3e74d3853c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.6.0" file_selector_windows: @@ -475,7 +475,7 @@ packages: description: name: file_selector_windows sha256: "1372760c6b389842b77156203308940558a2817360154084368608413835fc26" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.9.3" fixnum: @@ -483,7 +483,7 @@ packages: description: name: fixnum sha256: "25517a4deb0c03aa0f32fd12db525856438902d9c16536311e76cdc57b31d7d1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.0" flex_color_picker: @@ -491,7 +491,7 @@ packages: description: name: flex_color_picker sha256: f37476ab3e80dcaca94e428e159944d465dd16312fda9ff41e07e86f04bfa51c - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.3.0" flex_seed_scheme: @@ -499,7 +499,7 @@ packages: description: name: flex_seed_scheme sha256: "29c12aba221eb8a368a119685371381f8035011d18de5ba277ad11d7dfb8657f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.4.0" flutter: @@ -512,7 +512,7 @@ packages: description: name: flutter_blurhash sha256: "05001537bd3fac7644fa6558b09ec8c0a3f2eba78c0765f88912882b1331a5c6" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.7.0" flutter_cache_manager: @@ -520,7 +520,7 @@ packages: description: name: flutter_cache_manager sha256: "8207f27539deb83732fdda03e259349046a39a4c767269285f449ade355d54ba" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.3.1" flutter_email_sender: @@ -528,7 +528,7 @@ packages: description: name: flutter_email_sender sha256: "52b713a67a966be4d9e6f68a323fc0a5bc2da71c567eb451af1aa90d30adbc3a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.0.1" flutter_fgbg: @@ -536,7 +536,7 @@ packages: description: name: flutter_fgbg sha256: "08c4d2fd229e3df26083d5aecc3dea9ff4f2d188f8cd57aaf2b3f047bd08a047" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.3.0" flutter_inappwebview: @@ -544,7 +544,7 @@ packages: description: name: flutter_inappwebview sha256: f73505c792cf083d5566e1a94002311be497d984b5607f25be36d685cf6361cf - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.7.2+3" flutter_js: @@ -552,7 +552,7 @@ packages: description: name: flutter_js sha256: c4e0ff2cac3378e34eb0cafb58089377a7722d3531cdf9fcd5a53b5afc66c2dc - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.7.2" flutter_keyboard_visibility: @@ -560,7 +560,7 @@ packages: description: name: flutter_keyboard_visibility sha256: "4983655c26ab5b959252ee204c2fffa4afeb4413cd030455194ec0caa3b8e7cb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.4.1" flutter_keyboard_visibility_linux: @@ -568,7 +568,7 @@ packages: description: name: flutter_keyboard_visibility_linux sha256: "6fba7cd9bb033b6ddd8c2beb4c99ad02d728f1e6e6d9b9446667398b2ac39f08" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" flutter_keyboard_visibility_macos: @@ -576,7 +576,7 @@ packages: description: name: flutter_keyboard_visibility_macos sha256: c5c49b16fff453dfdafdc16f26bdd8fb8d55812a1d50b0ce25fc8d9f2e53d086 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" flutter_keyboard_visibility_platform_interface: @@ -584,7 +584,7 @@ packages: description: name: flutter_keyboard_visibility_platform_interface sha256: e43a89845873f7be10cb3884345ceb9aebf00a659f479d1c8f4293fcb37022a4 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.0" flutter_keyboard_visibility_web: @@ -592,7 +592,7 @@ packages: description: name: flutter_keyboard_visibility_web sha256: d3771a2e752880c79203f8d80658401d0c998e4183edca05a149f5098ce6e3d1 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.0" flutter_keyboard_visibility_windows: @@ -600,7 +600,7 @@ packages: description: name: flutter_keyboard_visibility_windows sha256: fc4b0f0b6be9b93ae527f3d527fb56ee2d918cd88bbca438c478af7bcfd0ef73 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" flutter_layout_grid: @@ -608,7 +608,7 @@ packages: description: name: flutter_layout_grid sha256: "3c03d28f884d816d6f483bdd64dd79663abfb00eea7cb27ffe98380e8357af95" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.4" flutter_linkify: @@ -616,7 +616,7 @@ packages: description: name: flutter_linkify sha256: "74669e06a8f358fee4512b4320c0b80e51cffc496607931de68d28f099254073" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.0.0" flutter_lints: @@ -624,7 +624,7 @@ packages: description: name: flutter_lints sha256: "2118df84ef0c3ca93f96123a616ae8540879991b8b57af2f81b76a7ada49b2a4" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.2" flutter_localizations: @@ -646,7 +646,7 @@ packages: description: name: flutter_math_fork sha256: a143a3a89131b578043ecbdb5e759c1033a1b3e9174f5cd1b979d93f4a7fb41c - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.7.1" flutter_phoenix: @@ -654,7 +654,7 @@ packages: description: name: flutter_phoenix sha256: "39589dac934ea476d0e43fb60c1ddfba58f14960743640c8250dea11c4333378" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" flutter_platform_widgets: @@ -662,7 +662,7 @@ packages: description: name: flutter_platform_widgets sha256: "107d5bc9a167b4e268cba44075ee399b6b2c63d44ede28f7e8c983d7fa4b59be" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.3.5" flutter_plugin_android_lifecycle: @@ -670,7 +670,7 @@ packages: description: name: flutter_plugin_android_lifecycle sha256: "950e77c2bbe1692bc0874fc7fb491b96a4dc340457f4ea1641443d0a6c1ea360" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.15" flutter_progress_dialog: @@ -687,7 +687,7 @@ packages: description: name: flutter_secure_storage sha256: "98352186ee7ad3639ccc77ad7924b773ff6883076ab952437d20f18a61f0a7c5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "8.0.0" flutter_secure_storage_linux: @@ -695,7 +695,7 @@ packages: description: name: flutter_secure_storage_linux sha256: "0912ae29a572230ad52d8a4697e5518d7f0f429052fd51df7e5a7952c7efe2a3" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.3" flutter_secure_storage_macos: @@ -703,7 +703,7 @@ packages: description: name: flutter_secure_storage_macos sha256: "083add01847fc1c80a07a08e1ed6927e9acd9618a35e330239d4422cd2a58c50" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.0" flutter_secure_storage_platform_interface: @@ -711,7 +711,7 @@ packages: description: name: flutter_secure_storage_platform_interface sha256: b3773190e385a3c8a382007893d678ae95462b3c2279e987b55d140d3b0cb81b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.1" flutter_secure_storage_web: @@ -719,7 +719,7 @@ packages: description: name: flutter_secure_storage_web sha256: "42938e70d4b872e856e678c423cc0e9065d7d294f45bc41fc1981a4eb4beaffe" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" flutter_secure_storage_windows: @@ -727,7 +727,7 @@ packages: description: name: flutter_secure_storage_windows sha256: fc2910ec9b28d60598216c29ea763b3a96c401f0ce1d13cdf69ccb0e5c93c3ee - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.0" flutter_svg: @@ -735,7 +735,7 @@ packages: description: name: flutter_svg sha256: "8c5d68a82add3ca76d792f058b186a0599414f279f00ece4830b9b231b570338" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.7" flutter_swiper_view: @@ -743,7 +743,7 @@ packages: description: name: flutter_swiper_view sha256: "2a165b259e8a4c49d4da5626b967ed42a73dac2d075bd9e266ad8d23b9f01879" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.8" flutter_test: @@ -756,7 +756,7 @@ packages: description: name: flutter_typeahead sha256: a3539f7a90246b152f569029dedcf0b842532d3f2a440701b520e0bf2acbcf42 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.6.2" flutter_web_plugins: @@ -778,7 +778,7 @@ packages: description: name: frontend_server_client sha256: "408e3ca148b31c20282ad6f37ebfa6f4bdc8fede5b74bc2f08d9d92b55db3612" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.2.0" gallery_saver: @@ -786,7 +786,7 @@ packages: description: name: gallery_saver sha256: df8b7e207ca12d64c71e0710a7ee3bc48aa7206d51cc720716fedb1543a66712 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.2" glob: @@ -794,7 +794,7 @@ packages: description: name: glob sha256: "0e7014b3b7d4dac1ca4d6114f82bf1782ee86745b9b42a92c9289c23d8a0ab63" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.2" graphs: @@ -802,7 +802,7 @@ packages: description: name: graphs sha256: aedc5a15e78fc65a6e23bcd927f24c64dd995062bcd1ca6eda65a3cff92a4d19 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.1" html: @@ -810,7 +810,7 @@ packages: description: name: html sha256: "3a7812d5bcd2894edf53dfaf8cd640876cf6cef50a8f238745c8b8120ea74d3a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.15.4" http: @@ -818,7 +818,7 @@ packages: description: name: http sha256: "5895291c13fa8a3bd82e76d5627f69e0d85ca6a30dcac95c4ea19a5d555879c2" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.13.6" http_multi_server: @@ -826,7 +826,7 @@ packages: description: name: http_multi_server sha256: "97486f20f9c2f7be8f514851703d0119c3596d14ea63227af6f7a481ef2b2f8b" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.2.1" http_parser: @@ -834,7 +834,7 @@ packages: description: name: http_parser sha256: "2aa08ce0341cc9b354a498388e30986515406668dbcc4f7c950c3e715496693b" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.0.2" ical: @@ -851,7 +851,7 @@ packages: description: name: image_picker sha256: "6296e98782726d37f59663f0727d0e978eee1ced1ffed45ccaba591786a7f7b3" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.1" image_picker_android: @@ -859,7 +859,7 @@ packages: description: name: image_picker_android sha256: "8179b54039b50eee561676232304f487602e2950ffb3e8995ed9034d6505ca34" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.8.7+4" image_picker_for_web: @@ -867,7 +867,7 @@ packages: description: name: image_picker_for_web sha256: "869fe8a64771b7afbc99fc433a5f7be2fea4d1cb3d7c11a48b6b579eb9c797f0" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.0" image_picker_ios: @@ -875,7 +875,7 @@ packages: description: name: image_picker_ios sha256: b3e2f21feb28b24dd73a35d7ad6e83f568337c70afab5eabac876e23803f264b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.8.8" image_picker_linux: @@ -883,7 +883,7 @@ packages: description: name: image_picker_linux sha256: "02cbc21fe1706b97942b575966e5fbbeaac535e76deef70d3a242e4afb857831" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.1" image_picker_macos: @@ -891,7 +891,7 @@ packages: description: name: image_picker_macos sha256: cee2aa86c56780c13af2c77b5f2f72973464db204569e1ba2dd744459a065af4 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.1" image_picker_platform_interface: @@ -899,7 +899,7 @@ packages: description: name: image_picker_platform_interface sha256: c1134543ae2187e85299996d21c526b2f403854994026d575ae4cf30d7bb2a32 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.9.0" image_picker_windows: @@ -907,7 +907,7 @@ packages: description: name: image_picker_windows sha256: c3066601ea42113922232c7b7b3330a2d86f029f685bba99d82c30e799914952 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.1" in_app_review: @@ -915,7 +915,7 @@ packages: description: name: in_app_review sha256: "16328b8202d36522322b95804ae5d975577aa9f584d634985849ba1099645850" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.6" in_app_review_platform_interface: @@ -923,7 +923,7 @@ packages: description: name: in_app_review_platform_interface sha256: b12ec9aaf6b34d3a72aa95895eb252b381896246bdad4ef378d444affe8410ef - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.4" intl: @@ -931,7 +931,7 @@ packages: description: name: intl sha256: "3bc132a9dbce73a7e4a21a17d06e1878839ffbf975568bc875c60537824b0c4d" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.18.1" intl_utils: @@ -939,7 +939,7 @@ packages: description: name: intl_utils sha256: a509a2ada4d12c4dc70f9ca35c2fddf75f8b402409ac1a9e1b3dd8065681986b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.8.3" io: @@ -947,7 +947,7 @@ packages: description: name: io sha256: "2ec25704aba361659e10e3e5f5d672068d332fc8ac516421d483a11e5cbd061e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.4" js: @@ -955,7 +955,7 @@ packages: description: name: js sha256: f2c445dce49627136094980615a031419f7f3eb393237e4ecd97ac15dea343f3 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.6.7" json_annotation: @@ -963,7 +963,7 @@ packages: description: name: json_annotation sha256: b10a7b2ff83d83c777edba3c6a0f97045ddadd56c944e1a23a3fdf43a1bf4467 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.8.1" json_serializable: @@ -971,7 +971,7 @@ packages: description: name: json_serializable sha256: aa1f5a8912615733e0fdc7a02af03308933c93235bdc8d50d0b0c8a8ccb0b969 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.7.1" lazy_load_indexed_stack: @@ -979,7 +979,7 @@ packages: description: name: lazy_load_indexed_stack sha256: c56c9c292048ecd8c86008617c7d77aa4057cafcdae1c5269aec6fb75019eebf - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.1" linkify: @@ -996,7 +996,7 @@ packages: description: name: lints sha256: "0a217c6c989d21039f1498c3ed9f3ed71b354e69873f13a8dfc3c9fe76f1b452" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.1" logging: @@ -1004,7 +1004,7 @@ packages: description: name: logging sha256: "623a88c9594aa774443aa3eb2d41807a48486b5613e67599fb4c41c0ad47c340" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.0" lunar: @@ -1012,7 +1012,7 @@ packages: description: name: lunar sha256: "342c60777030ffde70626b750bfb7e9f91a7eaa680a06edfbb9ef6b2361dbd3e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.6.1" markdown: @@ -1020,7 +1020,7 @@ packages: description: name: markdown sha256: c2b81e184067b41d0264d514f7cdaa2c02d38511e39d6521a1ccc238f6d7b3f2 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.0.1" matcher: @@ -1028,7 +1028,7 @@ packages: description: name: matcher sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.12.15" material_color_generator: @@ -1036,7 +1036,7 @@ packages: description: name: material_color_generator sha256: fa0ffc12d7cf6f13c41e35ac7f4265a49ec2f201b41b268fd8061da3bcc41131 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.0" material_color_utilities: @@ -1044,7 +1044,7 @@ packages: description: name: material_color_utilities sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.0" meta: @@ -1052,7 +1052,7 @@ packages: description: name: meta sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.9.1" mime: @@ -1060,7 +1060,7 @@ packages: description: name: mime sha256: e4ff8e8564c03f255408decd16e7899da1733852a9110a58fe6d1b817684a63e - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.4" mutex: @@ -1068,7 +1068,7 @@ packages: description: name: mutex sha256: "03116a4e46282a671b46c12de649d72c0ed18188ffe12a8d0fc63e83f4ad88f4" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.1" nanoid: @@ -1076,7 +1076,7 @@ packages: description: name: nanoid sha256: be3f8752d9046c825df2f3914195151eb876f3ad64b9d833dd0b799b77b8759e - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" nested: @@ -1084,7 +1084,7 @@ packages: description: name: nested sha256: "03bac4c528c64c95c722ec99280375a6f2fc708eec17c7b3f07253b626cd2a20" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" nil: @@ -1092,7 +1092,7 @@ packages: description: name: nil sha256: ef05770c48942876d843bf6a4822d35e5da0ff893a61f1d5ad96d15c4a659136 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" octo_image: @@ -1100,7 +1100,7 @@ packages: description: name: octo_image sha256: "107f3ed1330006a3bea63615e81cf637433f5135a52466c7caa0e7152bca9143" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.2" open_file: @@ -1117,7 +1117,7 @@ packages: description: name: otp sha256: fcb7f21e30c4cd80a0a982c27a9b75151cc1fe3d8f7ee680673c090171b1ad55 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.4" package_config: @@ -1125,7 +1125,7 @@ packages: description: name: package_config sha256: "1c5b77ccc91e4823a5af61ee74e6b972db1ef98c2ff5a18d3161c982a55448bd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.0" path: @@ -1133,7 +1133,7 @@ packages: description: name: path sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.8.3" path_parsing: @@ -1141,7 +1141,7 @@ packages: description: name: path_parsing sha256: e3e67b1629e6f7e8100b367d3db6ba6af4b1f0bb80f64db18ef1fbabd2fa9ccf - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.1" path_provider: @@ -1149,55 +1149,55 @@ packages: description: name: path_provider sha256: "3087813781ab814e4157b172f1a11c46be20179fcc9bea043e0fba36bc0acaa2" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.15" path_provider_android: dependency: transitive description: name: path_provider_android - sha256: "5d44fc3314d969b84816b569070d7ace0f1dea04bd94a83f74c4829615d22ad8" - url: "https://pub.flutter-io.cn" + sha256: "2cec049d282c7f13c594b4a73976b0b4f2d7a1838a6dd5aaf7bd9719196bee86" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.0.27" path_provider_foundation: dependency: transitive description: name: path_provider_foundation - sha256: "1b744d3d774e5a879bb76d6cd1ecee2ba2c6960c03b1020cd35212f6aa267ac5" - url: "https://pub.flutter-io.cn" + sha256: "916731ccbdce44d545414dd9961f26ba5fbaa74bcbb55237d8e65a623a8c7297" + url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.2.4" path_provider_linux: dependency: transitive description: name: path_provider_linux - sha256: ba2b77f0c52a33db09fc8caf85b12df691bf28d983e84cf87ff6d693cfa007b3 - url: "https://pub.flutter-io.cn" + sha256: ffbb8cc9ed2c9ec0e4b7a541e56fd79b138e8f47d2fb86815f15358a349b3b57 + url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.1.11" path_provider_platform_interface: dependency: transitive description: name: path_provider_platform_interface - sha256: bced5679c7df11190e1ddc35f3222c858f328fff85c3942e46e7f5589bf9eb84 - url: "https://pub.flutter-io.cn" + sha256: "57585299a729335f1298b43245842678cb9f43a6310351b18fb577d6e33165ec" + url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.0.6" path_provider_windows: dependency: transitive description: name: path_provider_windows - sha256: ee0e0d164516b90ae1f970bdf29f726f1aa730d7cfc449ecc74c495378b705da - url: "https://pub.flutter-io.cn" + sha256: "1cb68ba4cd3a795033de62ba1b7b4564dace301f952de6bfb3cd91b202b6ee96" + url: "https://pub.dev" source: hosted - version: "2.2.0" + version: "2.1.7" permission_handler: dependency: "direct main" description: name: permission_handler sha256: "63e5216aae014a72fe9579ccd027323395ce7a98271d9defa9d57320d001af81" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "10.4.3" permission_handler_android: @@ -1205,7 +1205,7 @@ packages: description: name: permission_handler_android sha256: "2ffaf52a21f64ac9b35fe7369bb9533edbd4f698e5604db8645b1064ff4cf221" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "10.3.3" permission_handler_apple: @@ -1213,7 +1213,7 @@ packages: description: name: permission_handler_apple sha256: "99e220bce3f8877c78e4ace901082fb29fa1b4ebde529ad0932d8d664b34f3f5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "9.1.4" permission_handler_platform_interface: @@ -1221,7 +1221,7 @@ packages: description: name: permission_handler_platform_interface sha256: "7c6b1500385dd1d2ca61bb89e2488ca178e274a69144d26bbd65e33eae7c02a9" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.11.3" permission_handler_windows: @@ -1229,7 +1229,7 @@ packages: description: name: permission_handler_windows sha256: cc074aace208760f1eee6aa4fae766b45d947df85bc831cde77009cdb4720098 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.3" petitparser: @@ -1237,7 +1237,7 @@ packages: description: name: petitparser sha256: cb3798bef7fc021ac45b308f4b51208a152792445cce0448c9a4ba5879dd8750 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "5.4.0" photo_view: @@ -1245,7 +1245,7 @@ packages: description: name: photo_view sha256: "8036802a00bae2a78fc197af8a158e3e2f7b500561ed23b4c458107685e645bb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.14.0" platform: @@ -1253,7 +1253,7 @@ packages: description: name: platform sha256: "4a451831508d7d6ca779f7ac6e212b4023dd5a7d08a27a63da33756410e32b76" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.0" platform_device_id: @@ -1261,7 +1261,7 @@ packages: description: name: platform_device_id sha256: "7a12ec84de4a823bb10eba2f0e1ad29e2365abba17790489a0d78029904f562e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.1" platform_device_id_linux: @@ -1269,7 +1269,7 @@ packages: description: name: platform_device_id_linux sha256: "994b1608593e527a629af2d5aeb241c60d308d3434bc78b0f6fcb3c1a02dff43" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" platform_device_id_macos: @@ -1277,7 +1277,7 @@ packages: description: name: platform_device_id_macos sha256: "968db2a504c611294b12a031b3734432d6df10553a0d3ae3b33ed21abfdbaba0" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" platform_device_id_platform_interface: @@ -1285,7 +1285,7 @@ packages: description: name: platform_device_id_platform_interface sha256: c61607594252aaddacf3e4c4371ab08f2ef85ff427817fa6e48a169429610c46 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" platform_device_id_web: @@ -1293,7 +1293,7 @@ packages: description: name: platform_device_id_web sha256: "58e124594e1165db7f108395a780b1d1e1cd403021978e5228cf4289fbe736d5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" platform_device_id_windows: @@ -1301,7 +1301,7 @@ packages: description: name: platform_device_id_windows sha256: dbf8dcf03ad8555320ebae2403a3081b79f137f37661874e161fe2de0a84eeeb - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" plugin_platform_interface: @@ -1309,7 +1309,7 @@ packages: description: name: plugin_platform_interface sha256: "43798d895c929056255600343db8f049921cbec94d31ec87f1dc5c16c01935dd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.5" pointer_interceptor: @@ -1317,7 +1317,7 @@ packages: description: name: pointer_interceptor sha256: "6aa680b30d96dccef496933d00208ad25f07e047f644dc98ce03ec6141633a9a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.9.3+4" pointycastle: @@ -1325,7 +1325,7 @@ packages: description: name: pointycastle sha256: "7c1e5f0d23c9016c5bbd8b1473d0d3fb3fc851b876046039509e18e0c7485f2c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.7.3" pool: @@ -1333,7 +1333,7 @@ packages: description: name: pool sha256: "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.5.1" provider: @@ -1341,7 +1341,7 @@ packages: description: name: provider sha256: cdbe7530b12ecd9eb455bdaa2fcb8d4dad22e80b8afb4798b41479d5ce26847f - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.0.5" pub_semver: @@ -1349,7 +1349,7 @@ packages: description: name: pub_semver sha256: "40d3ab1bbd474c4c2328c91e3a7df8c6dd629b79ece4c4bd04bee496a224fb0c" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.4" pubspec_generator: @@ -1357,7 +1357,7 @@ packages: description: name: pubspec_generator sha256: "5056a18045508dbbd4cfabf96682840fa4b702050ef62be6cdfe059c429ab7bb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.1" pubspec_parse: @@ -1365,7 +1365,7 @@ packages: description: name: pubspec_parse sha256: c63b2876e58e194e4b0828fcb080ad0e06d051cb607a6be51a9e084f47cb9367 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.3" qr: @@ -1373,7 +1373,7 @@ packages: description: name: qr sha256: "64957a3930367bf97cc211a5af99551d630f2f4625e38af10edd6b19131b64b3" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.1" qr_flutter: @@ -1381,7 +1381,7 @@ packages: description: name: qr_flutter sha256: "5095f0fc6e3f71d08adef8feccc8cea4f12eec18a2e31c2e8d82cb6019f4b097" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "4.1.0" quick_actions: @@ -1389,7 +1389,7 @@ packages: description: name: quick_actions sha256: "0562d78b8d6a87576fb8fe55bc655bda6ebe3c61a5904df56d20bd88f98cf3a3" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.5" quick_actions_android: @@ -1397,7 +1397,7 @@ packages: description: name: quick_actions_android sha256: e31ae2181d1bd3b07e375feda452ae573c90b65fee6d4ac64cf113c789bff8c3 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.7" quick_actions_ios: @@ -1405,7 +1405,7 @@ packages: description: name: quick_actions_ios sha256: "9ed8b003a65034de9f36a7f593026bf114c8796a38011b23240f8bf7e4668e2b" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.6" quick_actions_platform_interface: @@ -1413,7 +1413,7 @@ packages: description: name: quick_actions_platform_interface sha256: "2985e12b5fecb5715a35cc0a3b2127b4391e1969e62bd0a4a721b4de21d5fedb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.4" quiver: @@ -1421,7 +1421,7 @@ packages: description: name: quiver sha256: b1c1ac5ce6688d77f65f3375a9abb9319b3cb32486bdc7a1e0fdf004d7ba4e47 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.2.1" receive_intent: @@ -1438,7 +1438,7 @@ packages: description: name: rxdart sha256: "0c7c0cedd93788d996e33041ffecda924cc54389199cde4e6a34b440f50044cb" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.27.7" screen_brightness: @@ -1446,7 +1446,7 @@ packages: description: name: screen_brightness sha256: "62fd61a64e68b32b98b840bad7d8b6822bbc40e63c2b569a5f85528484c86b41" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.2.2" screen_brightness_android: @@ -1454,7 +1454,7 @@ packages: description: name: screen_brightness_android sha256: "3df10961e3a9e968a5e076fe27e7f4741fa8a1d3950bdeb48cf121ed529d0caf" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.0+2" screen_brightness_ios: @@ -1462,7 +1462,7 @@ packages: description: name: screen_brightness_ios sha256: "99adc3ca5490b8294284aad5fcc87f061ad685050e03cf45d3d018fe398fd9a2" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.0" screen_brightness_macos: @@ -1470,7 +1470,7 @@ packages: description: name: screen_brightness_macos sha256: "64b34e7e3f4900d7687c8e8fb514246845a73ecec05ab53483ed025bd4a899fd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.0+1" screen_brightness_platform_interface: @@ -1478,7 +1478,7 @@ packages: description: name: screen_brightness_platform_interface sha256: b211d07f0c96637a15fb06f6168617e18030d5d74ad03795dd8547a52717c171 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.0" screen_brightness_windows: @@ -1486,7 +1486,7 @@ packages: description: name: screen_brightness_windows sha256: "80d90ecdc63fc0823f2ecb1be323471619287937e14210650d7b25ca181abd05" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.1" screen_capture_event: @@ -1494,31 +1494,31 @@ packages: description: name: screen_capture_event sha256: "49981745c19e86c3ea7df2b1982651f5f7fb439d293c72cc578c15d032731af7" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" share_plus: dependency: "direct main" description: name: share_plus - sha256: "6cec740fa0943a826951223e76218df002804adb588235a8910dc3d6b0654e11" - url: "https://pub.flutter-io.cn" + sha256: ed3fcea4f789ed95913328e629c0c53e69e80e08b6c24542f1b3576046c614e8 + url: "https://pub.dev" source: hosted - version: "7.1.0" + version: "7.0.2" share_plus_platform_interface: dependency: transitive description: name: share_plus_platform_interface - sha256: "357412af4178d8e11d14f41723f80f12caea54cf0d5cd29af9dcdab85d58aea7" - url: "https://pub.flutter-io.cn" + sha256: "0c6e61471bd71b04a138b8b588fa388e66d8b005e6f2deda63371c5c505a0981" + url: "https://pub.dev" source: hosted - version: "3.3.0" + version: "3.2.1" shared_preferences: dependency: "direct main" description: name: shared_preferences sha256: "0344316c947ffeb3a529eac929e1978fcd37c26be4e8468628bac399365a3ca1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.0" shared_preferences_android: @@ -1526,7 +1526,7 @@ packages: description: name: shared_preferences_android sha256: fe8401ec5b6dcd739a0fe9588802069e608c3fdbfd3c3c93e546cf2f90438076 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.0" shared_preferences_foundation: @@ -1534,7 +1534,7 @@ packages: description: name: shared_preferences_foundation sha256: f39696b83e844923b642ce9dd4bd31736c17e697f6731a5adf445b1274cf3cd4 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.2" shared_preferences_linux: @@ -1542,7 +1542,7 @@ packages: description: name: shared_preferences_linux sha256: "71d6806d1449b0a9d4e85e0c7a917771e672a3d5dc61149cc9fac871115018e1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.0" shared_preferences_platform_interface: @@ -1550,7 +1550,7 @@ packages: description: name: shared_preferences_platform_interface sha256: "23b052f17a25b90ff2b61aad4cc962154da76fb62848a9ce088efe30d7c50ab1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.0" shared_preferences_web: @@ -1558,7 +1558,7 @@ packages: description: name: shared_preferences_web sha256: "7347b194fb0bbeb4058e6a4e87ee70350b6b2b90f8ac5f8bd5b3a01548f6d33a" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.2.0" shared_preferences_windows: @@ -1566,7 +1566,7 @@ packages: description: name: shared_preferences_windows sha256: f95e6a43162bce43c9c3405f3eb6f39e5b5d11f65fab19196cf8225e2777624d - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.3.0" shelf: @@ -1574,7 +1574,7 @@ packages: description: name: shelf sha256: ad29c505aee705f41a4d8963641f91ac4cee3c8fad5947e033390a7bd8180fa4 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.4.1" shelf_web_socket: @@ -1582,7 +1582,7 @@ packages: description: name: shelf_web_socket sha256: "9ca081be41c60190ebcb4766b2486a7d50261db7bd0f5d9615f2d653637a84c1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.4" sky_engine: @@ -1595,7 +1595,7 @@ packages: description: name: source_gen sha256: fc0da689e5302edb6177fdd964efcb7f58912f43c28c2047a808f5bfff643d16 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.4.0" source_helper: @@ -1603,7 +1603,7 @@ packages: description: name: source_helper sha256: "6adebc0006c37dd63fe05bca0a929b99f06402fc95aa35bf36d67f5c06de01fd" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.4" source_span: @@ -1611,31 +1611,31 @@ packages: description: name: source_span sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.9.1" sqflite: dependency: transitive description: name: sqflite - sha256: "591f1602816e9c31377d5f008c2d9ef7b8aca8941c3f89cc5fd9d84da0c38a9a" - url: "https://pub.flutter-io.cn" + sha256: b4d6710e1200e96845747e37338ea8a819a12b51689a3bcf31eff0003b37a0b9 + url: "https://pub.dev" source: hosted - version: "2.3.0" + version: "2.2.8+4" sqflite_common: dependency: transitive description: name: sqflite_common - sha256: "1b92f368f44b0dee2425bb861cfa17b6f6cf3961f762ff6f941d20b33355660a" - url: "https://pub.flutter-io.cn" + sha256: "8f7603f3f8f126740bc55c4ca2d1027aab4b74a1267a3e31ce51fe40e3b65b8f" + url: "https://pub.dev" source: hosted - version: "2.5.0" + version: "2.4.5+1" stack_trace: dependency: transitive description: name: stack_trace sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.11.0" stream_channel: @@ -1643,7 +1643,7 @@ packages: description: name: stream_channel sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.1" stream_transform: @@ -1651,7 +1651,7 @@ packages: description: name: stream_transform sha256: "14a00e794c7c11aa145a170587321aedce29769c08d7f58b1d141da75e3b1c6f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.0" string_scanner: @@ -1659,7 +1659,7 @@ packages: description: name: string_scanner sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.0" sync_http: @@ -1667,7 +1667,7 @@ packages: description: name: sync_http sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.3.1" synchronized: @@ -1675,7 +1675,7 @@ packages: description: name: synchronized sha256: "5fcbd27688af6082f5abd611af56ee575342c30e87541d0245f7ff99faa02c60" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.0" system_tray: @@ -1692,7 +1692,7 @@ packages: description: name: term_glyph sha256: a29248a84fbb7c79282b40b8c72a1209db169a2e0542bce341da992fe1bc7e84 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.2.1" test_api: @@ -1700,7 +1700,7 @@ packages: description: name: test_api sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.5.1" timezone: @@ -1708,7 +1708,7 @@ packages: description: name: timezone sha256: "1cfd8ddc2d1cfd836bc93e67b9be88c3adaeca6f40a00ca999104c30693cdca0" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.9.2" timing: @@ -1716,7 +1716,7 @@ packages: description: name: timing sha256: "70a3b636575d4163c477e6de42f247a23b315ae20e86442bebe32d3cabf61c32" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.1" tuple: @@ -1724,23 +1724,15 @@ packages: description: name: tuple sha256: a97ce2013f240b2f3807bcbaf218765b6f301c3eff91092bcfa23a039e7dd151 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.2" - tutorial_coach_mark: - dependency: "direct main" - description: - name: tutorial_coach_mark - sha256: ba60583d1b500111bf5040eb24330862b25162d926f72923b8e45c16621878b0 - url: "https://pub.flutter-io.cn" - source: hosted - version: "1.2.9" typed_data: dependency: transitive description: name: typed_data sha256: facc8d6582f16042dd49f2463ff1bd6e2c9ef9f3d5da3d9b087e244a7b564b3c - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.3.2" uni_links: @@ -1748,7 +1740,7 @@ packages: description: name: uni_links sha256: "051098acfc9e26a9fde03b487bef5d3d228ca8f67693480c6f33fd4fbb8e2b6e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.5.1" uni_links_platform_interface: @@ -1756,7 +1748,7 @@ packages: description: name: uni_links_platform_interface sha256: "929cf1a71b59e3b7c2d8a2605a9cf7e0b125b13bc858e55083d88c62722d4507" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.0" uni_links_web: @@ -1764,7 +1756,7 @@ packages: description: name: uni_links_web sha256: "7539db908e25f67de2438e33cc1020b30ab94e66720b5677ba6763b25f6394df" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "0.1.0" url_launcher: @@ -1772,7 +1764,7 @@ packages: description: name: url_launcher sha256: "781bd58a1eb16069412365c98597726cd8810ae27435f04b3b4d3a470bacd61e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.1.12" url_launcher_android: @@ -1780,7 +1772,7 @@ packages: description: name: url_launcher_android sha256: "78cb6dea3e93148615109e58e42c35d1ffbf5ef66c44add673d0ab75f12ff3af" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.0.37" url_launcher_ios: @@ -1788,7 +1780,7 @@ packages: description: name: url_launcher_ios sha256: "9af7ea73259886b92199f9e42c116072f05ff9bea2dcb339ab935dfc957392c2" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.1.4" url_launcher_linux: @@ -1796,7 +1788,7 @@ packages: description: name: url_launcher_linux sha256: "207f4ddda99b95b4d4868320a352d374b0b7e05eefad95a4a26f57da413443f5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.5" url_launcher_macos: @@ -1804,7 +1796,7 @@ packages: description: name: url_launcher_macos sha256: "1c4fdc0bfea61a70792ce97157e5cc17260f61abbe4f39354513f39ec6fd73b1" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.6" url_launcher_platform_interface: @@ -1812,7 +1804,7 @@ packages: description: name: url_launcher_platform_interface sha256: bfdfa402f1f3298637d71ca8ecfe840b4696698213d5346e9d12d4ab647ee2ea - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.3" url_launcher_web: @@ -1820,7 +1812,7 @@ packages: description: name: url_launcher_web sha256: cc26720eefe98c1b71d85f9dc7ef0cada5132617046369d9dc296b3ecaa5cbb4 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.0.18" url_launcher_windows: @@ -1828,7 +1820,7 @@ packages: description: name: url_launcher_windows sha256: "7967065dd2b5fccc18c653b97958fdf839c5478c28e767c61ee879f4e7882422" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.7" uuid: @@ -1836,7 +1828,7 @@ packages: description: name: uuid sha256: "648e103079f7c64a36dc7d39369cabb358d377078a051d6ae2ad3aa539519313" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.0.7" vector_graphics: @@ -1844,7 +1836,7 @@ packages: description: name: vector_graphics sha256: "670f6e07aca990b4a2bcdc08a784193c4ccdd1932620244c3a86bb72a0eac67f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.7" vector_graphics_codec: @@ -1852,7 +1844,7 @@ packages: description: name: vector_graphics_codec sha256: "7451721781d967db9933b63f5733b1c4533022c0ba373a01bdd79d1a5457f69f" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.7" vector_graphics_compiler: @@ -1860,7 +1852,7 @@ packages: description: name: vector_graphics_compiler sha256: "80a13c613c8bde758b1464a1755a7b3a8f2b6cec61fbf0f5a53c94c30f03ba2e" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.7" vector_math: @@ -1868,7 +1860,7 @@ packages: description: name: vector_math sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.1.4" watcher: @@ -1876,7 +1868,7 @@ packages: description: name: watcher sha256: "3d2ad6751b3c16cf07c7fca317a1413b3f26530319181b37e3b9039b84fc01d8" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.0" web_socket_channel: @@ -1884,23 +1876,23 @@ packages: description: name: web_socket_channel sha256: d88238e5eac9a42bb43ca4e721edba3c08c6354d4a53063afaa568516217621b - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "2.4.0" win32: dependency: "direct main" description: name: win32 - sha256: f2add6fa510d3ae152903412227bda57d0d5a8da61d2c39c1fb022c9429a41c0 - url: "https://pub.flutter-io.cn" + sha256: dfdf0136e0aa7a1b474ea133e67cb0154a0acd2599c4f3ada3b49d38d38793ee + url: "https://pub.dev" source: hosted - version: "5.0.6" + version: "5.0.5" win32_registry: dependency: transitive description: name: win32_registry sha256: e4506d60b7244251bc59df15656a3093501c37fb5af02105a944d73eb95be4c9 - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.1.1" xdg_directories: @@ -1908,7 +1900,7 @@ packages: description: name: xdg_directories sha256: e0b1147eec179d3911f1f19b59206448f78195ca1d20514134e10641b7d7fbff - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "1.0.1" xiao_mi_push_plugin: @@ -1925,7 +1917,7 @@ packages: description: name: xml sha256: "5bc72e1e45e941d825fd7468b9b4cc3b9327942649aeb6fc5cdbf135f0a86e84" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "6.3.0" yaml: @@ -1933,9 +1925,9 @@ packages: description: name: yaml sha256: "75769501ea3489fca56601ff33454fe45507ea3bfb014161abc3b43ae25989d5" - url: "https://pub.flutter-io.cn" + url: "https://pub.dev" source: hosted version: "3.1.2" sdks: dart: ">=3.0.0 <4.0.0" - flutter: ">=3.10.0" + flutter: ">=3.10.0" \ No newline at end of file From 24754f364cd8043900eaf093fe78b519a25c6ecc Mon Sep 17 00:00:00 2001 From: ByDream <2249984221@qq.com> Date: Sun, 6 Aug 2023 17:25:06 +0800 Subject: [PATCH 5/7] feat: provide feature display the first time using timetable page #275 fourth pr attempt --- lib/l10n/intl_ja.arb | 8 +-- lib/page/subpage_timetable.dart | 120 +++++++++++++++++++++++++++----- 2 files changed, 102 insertions(+), 26 deletions(-) diff --git a/lib/l10n/intl_ja.arb b/lib/l10n/intl_ja.arb index 8a249466..7b7041d2 100644 --- a/lib/l10n/intl_ja.arb +++ b/lib/l10n/intl_ja.arb @@ -486,11 +486,5 @@ "copy_floor_id": "拷贝楼层号", "copy_floor_id_success": "楼层号成功保存至剪贴板", "copy_hole_id": "拷贝洞号", - "copy_hole_id_success": "洞号成功保存至剪贴板", - "choose_semester": "Choose semester:", - "choose_semester_message": "Select the semester you want to view.", - "manually_add_course":"Add lesson manually:", - "manually_add_course_message":"If there is a class that is not included in the class schedule, but you want to check it, add it manually yourself.", - "start_date_select": "Semester start date query", - "start_date_select_message": "You must select the start date of the semester to view your class schedule. Not selecting will result in a date error. \nTip: Start date is the Monday of the first week." + "copy_hole_id_success": "洞号成功保存至剪贴板" } \ No newline at end of file diff --git a/lib/page/subpage_timetable.dart b/lib/page/subpage_timetable.dart index 6e4c670d..361cc787 100644 --- a/lib/page/subpage_timetable.dart +++ b/lib/page/subpage_timetable.dart @@ -115,7 +115,6 @@ class ShareTimetableEvent {} class ManuallyAddCourseEvent {} class TimetableSubPageState extends PlatformSubpageState { - late TutorialCoachMark tutorialCoachMark; final StateStreamListener _shareSubscription = StateStreamListener(); final StateStreamListener _addCourseSubscription = @@ -258,8 +257,10 @@ class TimetableSubPageState extends PlatformSubpageState { @override void initState() { if (SettingsProvider.getInstance().hasVisitedTimeTable == false) { - createTutorial(); - showTutorial(); + // Future.delayed(Duration.zero, showTutorial); + WidgetsBinding.instance.addPostFrameCallback((_) { + showTutorial(createTutorial()); + }); SettingsProvider.getInstance().hasVisitedTimeTable = true; } super.initState(); @@ -300,12 +301,12 @@ class TimetableSubPageState extends PlatformSubpageState { hashCode); } - void showTutorial() { + void showTutorial(TutorialCoachMark tutorialCoachMark) { tutorialCoachMark.show(context: context); } - void createTutorial() { - tutorialCoachMark = TutorialCoachMark( + TutorialCoachMark createTutorial() { + return TutorialCoachMark( targets: _createTargets(), colorShadow: const Color.fromARGB(255, 9, 110, 192), textSkip: "SKIP", @@ -418,19 +419,9 @@ class TimetableSubPageState extends PlatformSubpageState { ), Padding( padding: const EdgeInsets.only(top: 10.0), - child: Column( - children: [ - Align( - child: Text( - S.of(context).start_date_select_message, - style: const TextStyle( - fontWeight: FontWeight.bold, - color: Colors.white, - fontSize: 20.0, - ), - ), - ), - ], + child: Text( + S.of(context).start_date_select_message, + style: const TextStyle(color: Colors.white), ), ), ElevatedButton( @@ -450,6 +441,97 @@ class TimetableSubPageState extends PlatformSubpageState { return targets; } + // void createTutorial() { + // tutorialCoachMark = TutorialCoachMark( + // targets: _createTargets(), + // colorShadow: const Color.fromARGB(255, 9, 110, 192), + // textSkip: "SKIP", + // paddingFocus: 10, + // opacityShadow: 0.5, + // pulseAnimationDuration: const Duration(milliseconds: 1000), + // imageFilter: ImageFilter.blur(sigmaX: 8, sigmaY: 8), + // ); + // } + + // List _createTargets() { + // return [ + // _createTarget( + // identify: "SemesterSelectionButton", + // keyTarget: keyButton1, + // title: S.of(context).choose_semester, + // message: S.of(context).choose_semester_message, + // ), + // _createTarget( + // identify: "ManuallyAddCourseButton", + // keyTarget: keyButton, + // title: S.of(context).manually_add_course, + // message: S.of(context).manually_add_course_message, + // // hasActionWidget: true, + // shape: ShapeLightFocus.RRect, + // radius: 5, + // ), + // _createTarget( + // identify: "StartDateSelectionButton", + // keyTarget: keyButton2, + // title: S.of(context).start_date_select, + // message: S.of(context).start_date_select_message, + // shape: ShapeLightFocus.Circle, + // ), + // ]; + // } + + // TargetFocus _createTarget({ + // required String identify, + // required GlobalKey keyTarget, + // required String title, + // required String message, + // ShapeLightFocus shape = ShapeLightFocus.RRect, + // double radius = 5, + // bool? hasActionWidget, + // }) { + // return TargetFocus( + // identify: identify, + // keyTarget: keyTarget, + // contents: [ + // TargetContent( + // align: ContentAlign.bottom, + // builder: (context, controller) { + // return Column( + // mainAxisSize: MainAxisSize.min, + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Text( + // title, + // style: const TextStyle( + // fontWeight: FontWeight.bold, + // color: Colors.white, + // fontSize: 20.0, + // ), + // ), + // Padding( + // padding: const EdgeInsets.only(top: 10.0), + // child: Text( + // message, + // style: const TextStyle(color: Colors.white), + // ), + // ), + // if (hasActionWidget != false) + // ElevatedButton( + // onPressed: () { + // controller.previous(); + // }, + // child: const Icon(Icons.chevron_left), + // ), + // ], + // ); + // }, + // ), + // ], + // shape: shape, + // radius: radius, + // ); + // } + Future refresh( {bool reloadWhenEmptyData = false, bool forceReloadFromRemote = false}) async { From e0f0ba0c08ae53a20b0df246288dfec6d540bb89 Mon Sep 17 00:00:00 2001 From: ByDream <2249984221@qq.com> Date: Mon, 7 Aug 2023 16:30:50 +0800 Subject: [PATCH 6/7] feat: provide feature display the first time using timetable page #275 --- lib/page/subpage_timetable.dart | 252 ++++++++------------------------ 1 file changed, 58 insertions(+), 194 deletions(-) diff --git a/lib/page/subpage_timetable.dart b/lib/page/subpage_timetable.dart index 361cc787..ef93816d 100644 --- a/lib/page/subpage_timetable.dart +++ b/lib/page/subpage_timetable.dart @@ -318,220 +318,84 @@ class TimetableSubPageState extends PlatformSubpageState { } List _createTargets() { - List targets = []; - - targets.add( - TargetFocus( + return [ + _createTarget( identify: "SemesterSelectionButton", keyTarget: keyButton1, - contents: [ - TargetContent( - align: ContentAlign.bottom, - builder: (context, controller) { - return Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - S.of(context).choose_semester, - style: const TextStyle( - fontWeight: FontWeight.bold, - color: Colors.white, - fontSize: 20.0), - ), - Padding( - padding: const EdgeInsets.only(top: 10.0), - child: Text( - S.of(context).choose_semester_message, - style: const TextStyle(color: Colors.white), - ), - ), - ], - ); - }, - ), - ], + title: S.of(context).choose_semester, + message: S.of(context).choose_semester_message, + hasActionWidget: false, ), - ); - targets.add( - TargetFocus( + _createTarget( identify: "ManuallyAddCourseButton", keyTarget: keyButton, - contents: [ - TargetContent( - align: ContentAlign.bottom, - builder: (context, controller) { - return Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - S.of(context).manually_add_course, - style: const TextStyle( - fontWeight: FontWeight.bold, - color: Colors.white, - fontSize: 20.0, - ), - ), - Padding( - padding: const EdgeInsets.only(top: 10.0), - child: Text( - S.of(context).manually_add_course_message, - style: const TextStyle(color: Colors.white), - ), - ), - ElevatedButton( - onPressed: () { - controller.previous(); - }, - child: const Icon(Icons.chevron_left), - ), - ], - ); - }, - ) - ], + title: S.of(context).manually_add_course, + message: S.of(context).manually_add_course_message, + hasActionWidget: true, shape: ShapeLightFocus.RRect, - radius: 5, ), - ); - - targets.add( - TargetFocus( + _createTarget( identify: "StartDateSelectionButton", keyTarget: keyButton2, - shape: ShapeLightFocus.Circle, - contents: [ - TargetContent( - align: ContentAlign.bottom, - builder: (context, controller) { - return Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Text( - S.of(context).start_date_select, - style: const TextStyle( - fontWeight: FontWeight.bold, - color: Colors.white, - fontSize: 20.0, - ), + title: S.of(context).start_date_select, + message: S.of(context).start_date_select_message, + hasActionWidget: true, + ), + ]; + } + + TargetFocus _createTarget({ + required String identify, + required GlobalKey keyTarget, + required String title, + required String message, + ShapeLightFocus shape = ShapeLightFocus.Circle, + double radius = 5, + bool? hasActionWidget, + }) { + return TargetFocus( + identify: identify, + keyTarget: keyTarget, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Text( + title, + style: const TextStyle( + fontWeight: FontWeight.bold, + color: Colors.white, + fontSize: 20.0, ), - Padding( - padding: const EdgeInsets.only(top: 10.0), - child: Text( - S.of(context).start_date_select_message, - style: const TextStyle(color: Colors.white), - ), + ), + Padding( + padding: const EdgeInsets.only(top: 10.0), + child: Text( + message, + style: const TextStyle(color: Colors.white), ), + ), + if (hasActionWidget != false) ElevatedButton( onPressed: () { controller.previous(); }, child: const Icon(Icons.chevron_left), ), - ], - ); - }, - ) - ], - ), + ], + ); + }, + ), + ], + shape: shape, + radius: radius, ); - - return targets; } - // void createTutorial() { - // tutorialCoachMark = TutorialCoachMark( - // targets: _createTargets(), - // colorShadow: const Color.fromARGB(255, 9, 110, 192), - // textSkip: "SKIP", - // paddingFocus: 10, - // opacityShadow: 0.5, - // pulseAnimationDuration: const Duration(milliseconds: 1000), - // imageFilter: ImageFilter.blur(sigmaX: 8, sigmaY: 8), - // ); - // } - - // List _createTargets() { - // return [ - // _createTarget( - // identify: "SemesterSelectionButton", - // keyTarget: keyButton1, - // title: S.of(context).choose_semester, - // message: S.of(context).choose_semester_message, - // ), - // _createTarget( - // identify: "ManuallyAddCourseButton", - // keyTarget: keyButton, - // title: S.of(context).manually_add_course, - // message: S.of(context).manually_add_course_message, - // // hasActionWidget: true, - // shape: ShapeLightFocus.RRect, - // radius: 5, - // ), - // _createTarget( - // identify: "StartDateSelectionButton", - // keyTarget: keyButton2, - // title: S.of(context).start_date_select, - // message: S.of(context).start_date_select_message, - // shape: ShapeLightFocus.Circle, - // ), - // ]; - // } - - // TargetFocus _createTarget({ - // required String identify, - // required GlobalKey keyTarget, - // required String title, - // required String message, - // ShapeLightFocus shape = ShapeLightFocus.RRect, - // double radius = 5, - // bool? hasActionWidget, - // }) { - // return TargetFocus( - // identify: identify, - // keyTarget: keyTarget, - // contents: [ - // TargetContent( - // align: ContentAlign.bottom, - // builder: (context, controller) { - // return Column( - // mainAxisSize: MainAxisSize.min, - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // Text( - // title, - // style: const TextStyle( - // fontWeight: FontWeight.bold, - // color: Colors.white, - // fontSize: 20.0, - // ), - // ), - // Padding( - // padding: const EdgeInsets.only(top: 10.0), - // child: Text( - // message, - // style: const TextStyle(color: Colors.white), - // ), - // ), - // if (hasActionWidget != false) - // ElevatedButton( - // onPressed: () { - // controller.previous(); - // }, - // child: const Icon(Icons.chevron_left), - // ), - // ], - // ); - // }, - // ), - // ], - // shape: shape, - // radius: radius, - // ); - // } - Future refresh( {bool reloadWhenEmptyData = false, bool forceReloadFromRemote = false}) async { From 495285dcf5bd19cbf0c744eb28e7b755b2d99d48 Mon Sep 17 00:00:00 2001 From: w568w <1278297578@qq.com> Date: Mon, 7 Aug 2023 19:31:59 +0800 Subject: [PATCH 7/7] style: dart fix and minor code-style changes --- lib/page/subpage_timetable.dart | 117 ++++++++++------------ lib/util/opentreehole/human_duration.dart | 2 +- pubspec.lock | 10 +- 3 files changed, 61 insertions(+), 68 deletions(-) diff --git a/lib/page/subpage_timetable.dart b/lib/page/subpage_timetable.dart index ef93816d..8560ceb5 100644 --- a/lib/page/subpage_timetable.dart +++ b/lib/page/subpage_timetable.dart @@ -256,11 +256,9 @@ class TimetableSubPageState extends PlatformSubpageState { @override void initState() { - if (SettingsProvider.getInstance().hasVisitedTimeTable == false) { - // Future.delayed(Duration.zero, showTutorial); - WidgetsBinding.instance.addPostFrameCallback((_) { - showTutorial(createTutorial()); - }); + if (!SettingsProvider.getInstance().hasVisitedTimeTable) { + WidgetsBinding.instance + .addPostFrameCallback((_) => createTutorial().show(context: context)); SettingsProvider.getInstance().hasVisitedTimeTable = true; } super.initState(); @@ -301,48 +299,40 @@ class TimetableSubPageState extends PlatformSubpageState { hashCode); } - void showTutorial(TutorialCoachMark tutorialCoachMark) { - tutorialCoachMark.show(context: context); - } - - TutorialCoachMark createTutorial() { - return TutorialCoachMark( - targets: _createTargets(), - colorShadow: const Color.fromARGB(255, 9, 110, 192), - textSkip: "SKIP", - paddingFocus: 10, - opacityShadow: 0.5, - pulseAnimationDuration: const Duration(milliseconds: 1000), - imageFilter: ImageFilter.blur(sigmaX: 8, sigmaY: 8), - ); - } + TutorialCoachMark createTutorial() => TutorialCoachMark( + targets: _createTargets(), + colorShadow: const Color.fromARGB(255, 9, 110, 192), + textSkip: S.of(context).skip, + paddingFocus: 10, + opacityShadow: 0.5, + pulseAnimationDuration: const Duration(milliseconds: 1000), + imageFilter: ImageFilter.blur(sigmaX: 8, sigmaY: 8), + ); - List _createTargets() { - return [ - _createTarget( - identify: "SemesterSelectionButton", - keyTarget: keyButton1, - title: S.of(context).choose_semester, - message: S.of(context).choose_semester_message, - hasActionWidget: false, - ), - _createTarget( - identify: "ManuallyAddCourseButton", - keyTarget: keyButton, - title: S.of(context).manually_add_course, - message: S.of(context).manually_add_course_message, - hasActionWidget: true, - shape: ShapeLightFocus.RRect, - ), - _createTarget( - identify: "StartDateSelectionButton", - keyTarget: keyButton2, - title: S.of(context).start_date_select, - message: S.of(context).start_date_select_message, - hasActionWidget: true, - ), - ]; - } + List _createTargets() => [ + _createTarget( + identify: "SemesterSelectionButton", + keyTarget: keyButton1, + title: S.of(context).choose_semester, + message: S.of(context).choose_semester_message, + hasActionWidget: false, + ), + _createTarget( + identify: "ManuallyAddCourseButton", + keyTarget: keyButton, + title: S.of(context).manually_add_course, + message: S.of(context).manually_add_course_message, + hasActionWidget: true, + shape: ShapeLightFocus.RRect, + ), + _createTarget( + identify: "StartDateSelectionButton", + keyTarget: keyButton2, + title: S.of(context).start_date_select, + message: S.of(context).start_date_select_message, + hasActionWidget: true, + ), + ]; TargetFocus _createTarget({ required String identify, @@ -352,15 +342,14 @@ class TimetableSubPageState extends PlatformSubpageState { ShapeLightFocus shape = ShapeLightFocus.Circle, double radius = 5, bool? hasActionWidget, - }) { - return TargetFocus( - identify: identify, - keyTarget: keyTarget, - contents: [ - TargetContent( - align: ContentAlign.bottom, - builder: (context, controller) { - return Column( + }) => + TargetFocus( + identify: identify, + keyTarget: keyTarget, + contents: [ + TargetContent( + align: ContentAlign.bottom, + builder: (context, controller) => Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -381,20 +370,16 @@ class TimetableSubPageState extends PlatformSubpageState { ), if (hasActionWidget != false) ElevatedButton( - onPressed: () { - controller.previous(); - }, + onPressed: controller.previous, child: const Icon(Icons.chevron_left), ), ], - ); - }, - ), - ], - shape: shape, - radius: radius, - ); - } + ), + ), + ], + shape: shape, + radius: radius, + ); Future refresh( {bool reloadWhenEmptyData = false, diff --git a/lib/util/opentreehole/human_duration.dart b/lib/util/opentreehole/human_duration.dart index 5f7787a4..d6f1769d 100644 --- a/lib/util/opentreehole/human_duration.dart +++ b/lib/util/opentreehole/human_duration.dart @@ -34,7 +34,7 @@ class HumanDuration { } else if (duration.inDays <= 30) { return S.of(context).day_ago(duration.inDays); } else { - return DateFormat("yyyy/MM/dd").format(dateTime!.toLocal()); + return DateFormat("yyyy/MM/dd").format(dateTime.toLocal()); } } catch (e) { return ""; diff --git a/pubspec.lock b/pubspec.lock index d52f317e..84206811 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1727,6 +1727,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.0.2" + tutorial_coach_mark: + dependency: "direct main" + description: + name: tutorial_coach_mark + sha256: ba60583d1b500111bf5040eb24330862b25162d926f72923b8e45c16621878b0 + url: "https://pub.dev" + source: hosted + version: "1.2.9" typed_data: dependency: transitive description: @@ -1930,4 +1938,4 @@ packages: version: "3.1.2" sdks: dart: ">=3.0.0 <4.0.0" - flutter: ">=3.10.0" \ No newline at end of file + flutter: ">=3.10.0"