Commit ccc6eada7cf558ee1d3e418c93492073cde8104e

Authored by 权海
1 parent b5678373

feat(ui):增加pegion多平台分发,支持Ohos

Showing 33 changed files with 602 additions and 238 deletions
@@ -52,6 +52,9 @@ PODS: @@ -52,6 +52,9 @@ PODS:
52 - libwebp/webp (1.5.0): 52 - libwebp/webp (1.5.0):
53 - libwebp/sharpyuv 53 - libwebp/sharpyuv
54 - OBS (3.20.11.1) 54 - OBS (3.20.11.1)
  55 + - path_provider_foundation (0.0.1):
  56 + - Flutter
  57 + - FlutterMacOS
55 - permission_handler_apple (9.4.8): 58 - permission_handler_apple (9.4.8):
56 - Flutter 59 - Flutter
57 - PromisesObjC (2.4.1) 60 - PromisesObjC (2.4.1)
@@ -103,6 +106,7 @@ DEPENDENCIES: @@ -103,6 +106,7 @@ DEPENDENCIES:
103 - image_cropper (from `.symlinks/plugins/image_cropper/ios`) 106 - image_cropper (from `.symlinks/plugins/image_cropper/ios`)
104 - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) 107 - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
105 - OBS (from `./Runner/Library`) 108 - OBS (from `./Runner/Library`)
  109 + - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
106 - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) 110 - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
107 - share_plus (from `.symlinks/plugins/share_plus/ios`) 111 - share_plus (from `.symlinks/plugins/share_plus/ios`)
108 - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) 112 - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
@@ -141,6 +145,8 @@ EXTERNAL SOURCES: @@ -141,6 +145,8 @@ EXTERNAL SOURCES:
141 :path: ".symlinks/plugins/image_picker_ios/ios" 145 :path: ".symlinks/plugins/image_picker_ios/ios"
142 OBS: 146 OBS:
143 :path: "./Runner/Library" 147 :path: "./Runner/Library"
  148 + path_provider_foundation:
  149 + :path: ".symlinks/plugins/path_provider_foundation/darwin"
144 permission_handler_apple: 150 permission_handler_apple:
145 :path: ".symlinks/plugins/permission_handler_apple/ios" 151 :path: ".symlinks/plugins/permission_handler_apple/ios"
146 share_plus: 152 share_plus:
@@ -167,15 +173,16 @@ SPEC CHECKSUMS: @@ -167,15 +173,16 @@ SPEC CHECKSUMS:
167 GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238 173 GTMAppAuth: 217a876b249c3c585a54fd6f73e6b58c4f5c4238
168 GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6 174 GTMSessionFetcher: 5aea5ba6bd522a239e236100971f10cb71b96ab6
169 image_cropper: c4326ea50132b1e1564499e5d32a84f01fb03537 175 image_cropper: c4326ea50132b1e1564499e5d32a84f01fb03537
170 - image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326 176 + image_picker_ios: 7fe1ff8e34c1790d6fff70a32484959f563a928a
171 libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8 177 libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
172 OBS: 4cf1e6db5515aefd6c3c6ae3e90e85ea5f028e83 178 OBS: 4cf1e6db5515aefd6c3c6ae3e90e85ea5f028e83
  179 + path_provider_foundation: 080d55be775b7414fd5a5ef3ac137b97b097e564
173 permission_handler_apple: 92d754bbaa7361d436db2d6c3c1c2a0fdcec462e 180 permission_handler_apple: 92d754bbaa7361d436db2d6c3c1c2a0fdcec462e
174 PromisesObjC: 752c3227f599e3467650e47ea36f433eeb10c273 181 PromisesObjC: 752c3227f599e3467650e47ea36f433eeb10c273
175 PromisesSwift: 217dea0fd5d2ad65222a109c48698add13cc1c5b 182 PromisesSwift: 217dea0fd5d2ad65222a109c48698add13cc1c5b
176 RecaptchaInterop: 11e0b637842dfb48308d242afc3f448062325aba 183 RecaptchaInterop: 11e0b637842dfb48308d242afc3f448062325aba
177 share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a 184 share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a
178 - shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb 185 + shared_preferences_foundation: 9e1978ff2562383bd5676f64ec4e9aa8fa06a6f7
179 sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 186 sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0
180 TAThirdParty: 65db0235cd209237781535f19f9d0eef706156e5 187 TAThirdParty: 65db0235cd209237781535f19f9d0eef706156e5
181 thinking_analytics: 6f254c030da8dfc3409c08d91929b6ad89c415be 188 thinking_analytics: 6f254c030da8dfc3409c08d91929b6ad89c415be
1 import 'package:doublefeel_flutter/app/routes/app_pages.dart'; 1 import 'package:doublefeel_flutter/app/routes/app_pages.dart';
2 import 'package:doublefeel_flutter/core/logging/app_logger.dart'; 2 import 'package:doublefeel_flutter/core/logging/app_logger.dart';
3 import 'package:doublefeel_flutter/data/local/local_storage.dart'; 3 import 'package:doublefeel_flutter/data/local/local_storage.dart';
4 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 4 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
5 import 'package:flutter/foundation.dart'; 5 import 'package:flutter/foundation.dart';
6 import 'package:flutter/material.dart'; 6 import 'package:flutter/material.dart';
7 7
@@ -11,14 +11,14 @@ class AppReviewPromptLogic { @@ -11,14 +11,14 @@ class AppReviewPromptLogic {
11 AppReviewPromptLogic({ 11 AppReviewPromptLogic({
12 required LocalStorage storage, 12 required LocalStorage storage,
13 required int Function() userIdProvider, 13 required int Function() userIdProvider,
14 - PlatformHostApi? platformHostApi, 14 + AppPlatformHostApi? platformHostApi,
15 }) : _storage = storage, 15 }) : _storage = storage,
16 _userIdProvider = userIdProvider, 16 _userIdProvider = userIdProvider,
17 - _platformHostApi = platformHostApi ?? PlatformHostApi(); 17 + _platformHostApi = platformHostApi ?? AppPlatformHostApi();
18 18
19 final LocalStorage _storage; 19 final LocalStorage _storage;
20 final int Function() _userIdProvider; 20 final int Function() _userIdProvider;
21 - final PlatformHostApi _platformHostApi; 21 + final AppPlatformHostApi _platformHostApi;
22 22
23 bool _isShowing = false; 23 bool _isShowing = false;
24 24
@@ -14,14 +14,14 @@ import 'package:doublefeel_flutter/core/util/app_toast.dart'; @@ -14,14 +14,14 @@ import 'package:doublefeel_flutter/core/util/app_toast.dart';
14 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart'; 14 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart';
15 import 'package:doublefeel_flutter/data/models/friend/friend_models.dart'; 15 import 'package:doublefeel_flutter/data/models/friend/friend_models.dart';
16 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 16 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
17 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 17 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
18 import 'package:flutter/material.dart'; 18 import 'package:flutter/material.dart';
19 import 'package:get/get.dart'; 19 import 'package:get/get.dart';
20 import 'package:lottie/lottie.dart'; 20 import 'package:lottie/lottie.dart';
21 21
22 class BindPartnerController extends GetxController { 22 class BindPartnerController extends GetxController {
23 BindPartnerController(this._friendApi); 23 BindPartnerController(this._friendApi);
24 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 24 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
25 25
26 final FriendApi _friendApi; 26 final FriendApi _friendApi;
27 27
@@ -86,7 +86,7 @@ class BindPartnerController extends GetxController { @@ -86,7 +86,7 @@ class BindPartnerController extends GetxController {
86 try { 86 try {
87 ta.track('click_doublefeel_add_friend_page', 87 ta.track('click_doublefeel_add_friend_page',
88 properties: {'channel_type': channel, 'click_content': '分享我的码'}); 88 properties: {'channel_type': channel, 'click_content': '分享我的码'});
89 - final success = await PlatformHostApi() 89 + final success = await AppPlatformHostApi()
90 .shareText(l10n.sharePartnerCodeTemplate(myInviteCode.value)); 90 .shareText(l10n.sharePartnerCodeTemplate(myInviteCode.value));
91 } catch (e) { 91 } catch (e) {
92 AppToast.show(e.toString()); 92 AppToast.show(e.toString());
@@ -14,7 +14,7 @@ import '../../../../core/services/raw_data_service/health_raw_models.dart'; @@ -14,7 +14,7 @@ import '../../../../core/services/raw_data_service/health_raw_models.dart';
14 import '../../../../core/services/raw_data_service/platform_ios/apple_health_raw_local_notification.dart'; 14 import '../../../../core/services/raw_data_service/platform_ios/apple_health_raw_local_notification.dart';
15 import '../../../../data/local/user_preferences_storage.dart'; 15 import '../../../../data/local/user_preferences_storage.dart';
16 import '../../../../l10n/l10n_extensions.dart'; 16 import '../../../../l10n/l10n_extensions.dart';
17 -import '../../../../pigeon/platform_api.g.dart'; 17 +import '../../../../core/platform/pigeon_api_facade.dart';
18 import '../../../routes/app_pages.dart'; 18 import '../../../routes/app_pages.dart';
19 19
20 class DeveloperOptionsItem { 20 class DeveloperOptionsItem {
@@ -49,7 +49,7 @@ class DeveloperOptionsController extends GetxController { @@ -49,7 +49,7 @@ class DeveloperOptionsController extends GetxController {
49 49
50 final UserPreferencesStorage _userPreferencesStorage; 50 final UserPreferencesStorage _userPreferencesStorage;
51 final HealthRawDataCoreService _healthRawDataCoreService; 51 final HealthRawDataCoreService _healthRawDataCoreService;
52 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 52 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
53 final TextEditingController tokenController = TextEditingController(); 53 final TextEditingController tokenController = TextEditingController();
54 54
55 final List<DeveloperOptionsItem> options = const [ 55 final List<DeveloperOptionsItem> options = const [
@@ -4,7 +4,7 @@ import 'package:doublefeel_flutter/core/network/api/user_api.dart'; @@ -4,7 +4,7 @@ import 'package:doublefeel_flutter/core/network/api/user_api.dart';
4 import 'package:doublefeel_flutter/core/result/app_result.dart'; 4 import 'package:doublefeel_flutter/core/result/app_result.dart';
5 import 'package:doublefeel_flutter/core/util/app_toast.dart'; 5 import 'package:doublefeel_flutter/core/util/app_toast.dart';
6 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 6 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
7 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 7 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
8 import 'package:flutter/material.dart'; 8 import 'package:flutter/material.dart';
9 import 'package:get/get.dart'; 9 import 'package:get/get.dart';
10 import 'package:image_picker/image_picker.dart'; 10 import 'package:image_picker/image_picker.dart';
@@ -23,7 +23,7 @@ class SubmitFeedbackController extends GetxController { @@ -23,7 +23,7 @@ class SubmitFeedbackController extends GetxController {
23 23
24 final ImagePicker _picker = ImagePicker(); 24 final ImagePicker _picker = ImagePicker();
25 25
26 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 26 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
27 27
28 @override 28 @override
29 void onInit() { 29 void onInit() {
@@ -12,7 +12,7 @@ import 'package:doublefeel_flutter/data/local/user_account_storage.dart'; @@ -12,7 +12,7 @@ import 'package:doublefeel_flutter/data/local/user_account_storage.dart';
12 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart'; 12 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart';
13 import 'package:doublefeel_flutter/data/models/local/user_preferences.dart'; 13 import 'package:doublefeel_flutter/data/models/local/user_preferences.dart';
14 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 14 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
15 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 15 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
16 import 'package:get/get.dart'; 16 import 'package:get/get.dart';
17 17
18 import '../data/friends_repository.dart'; 18 import '../data/friends_repository.dart';
@@ -36,7 +36,7 @@ class FriendsController extends GetxController { @@ -36,7 +36,7 @@ class FriendsController extends GetxController {
36 _userAccountStorage = 36 _userAccountStorage =
37 userAccountStorage ?? Get.find<UserAccountStorage>(), 37 userAccountStorage ?? Get.find<UserAccountStorage>(),
38 _updateWatchOtherUserInfo = updateWatchOtherUserInfo ?? 38 _updateWatchOtherUserInfo = updateWatchOtherUserInfo ??
39 - ((info) => PlatformHostApi().refreshWatchAppAndWidgets()); 39 + ((info) => AppPlatformHostApi().refreshWatchAppAndWidgets());
40 40
41 static const maxFriends = 10; 41 static const maxFriends = 10;
42 42
@@ -299,7 +299,7 @@ class FriendsController extends GetxController { @@ -299,7 +299,7 @@ class FriendsController extends GetxController {
299 299
300 Future<void> _refreshWatchAppAndWidgetsAfterFriendDeleted() async { 300 Future<void> _refreshWatchAppAndWidgetsAfterFriendDeleted() async {
301 try { 301 try {
302 - await PlatformHostApi().refreshWatchAppAndWidgets(); 302 + await AppPlatformHostApi().refreshWatchAppAndWidgets();
303 } catch (error, stackTrace) { 303 } catch (error, stackTrace) {
304 AppLogger.e( 304 AppLogger.e(
305 'FriendsController.refreshWatchAppAndWidgetsAfterFriendDeleted failed', 305 'FriendsController.refreshWatchAppAndWidgetsAfterFriendDeleted failed',
@@ -8,7 +8,7 @@ import 'package:doublefeel_flutter/core/services/raw_data_service/health_raw_dat @@ -8,7 +8,7 @@ import 'package:doublefeel_flutter/core/services/raw_data_service/health_raw_dat
8 import 'package:doublefeel_flutter/core/services/thinking_data_service.dart'; 8 import 'package:doublefeel_flutter/core/services/thinking_data_service.dart';
9 import 'package:doublefeel_flutter/core/services/user_state_service.dart'; 9 import 'package:doublefeel_flutter/core/services/user_state_service.dart';
10 import 'package:doublefeel_flutter/data/local/local_storage.dart'; 10 import 'package:doublefeel_flutter/data/local/local_storage.dart';
11 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 11 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
12 import 'package:flutter/material.dart'; 12 import 'package:flutter/material.dart';
13 import 'package:flutter/scheduler.dart'; 13 import 'package:flutter/scheduler.dart';
14 import 'package:flutter/services.dart'; 14 import 'package:flutter/services.dart';
@@ -32,7 +32,7 @@ class HomeController extends GetxController { @@ -32,7 +32,7 @@ class HomeController extends GetxController {
32 32
33 final LocalStorage _storage = Get.find<LocalStorage>(); 33 final LocalStorage _storage = Get.find<LocalStorage>();
34 final UserStateService userStateService = Get.find<UserStateService>(); 34 final UserStateService userStateService = Get.find<UserStateService>();
35 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 35 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
36 36
37 /// 当前选中的底部 tab 索引 37 /// 当前选中的底部 tab 索引
38 final selectedIndex = 0.obs; 38 final selectedIndex = 0.obs;
@@ -10,7 +10,7 @@ import 'package:doublefeel_flutter/core/result/app_result.dart'; @@ -10,7 +10,7 @@ import 'package:doublefeel_flutter/core/result/app_result.dart';
10 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart'; 10 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart';
11 import 'package:doublefeel_flutter/data/models/local/user_preferences.dart'; 11 import 'package:doublefeel_flutter/data/models/local/user_preferences.dart';
12 import 'package:doublefeel_flutter/data/models/user/user_models.dart'; 12 import 'package:doublefeel_flutter/data/models/user/user_models.dart';
13 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 13 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
14 import 'package:get/get.dart'; 14 import 'package:get/get.dart';
15 import 'package:image_cropper/image_cropper.dart'; 15 import 'package:image_cropper/image_cropper.dart';
16 import 'package:image_picker/image_picker.dart'; 16 import 'package:image_picker/image_picker.dart';
@@ -24,7 +24,7 @@ class MyController extends GetxController { @@ -24,7 +24,7 @@ class MyController extends GetxController {
24 final ImagePicker _picker = ImagePicker(); 24 final ImagePicker _picker = ImagePicker();
25 final watchThemeItems = <WatchThemeItem>[].obs; 25 final watchThemeItems = <WatchThemeItem>[].obs;
26 final isLoadingWatchThemes = false.obs; 26 final isLoadingWatchThemes = false.obs;
27 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 27 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
28 28
29 List<WatchThemeItem> get officialWatchThemes => 29 List<WatchThemeItem> get officialWatchThemes =>
30 watchThemeItems.where((theme) => theme.isOfficialTheme).toList(); 30 watchThemeItems.where((theme) => theme.isOfficialTheme).toList();
@@ -28,9 +28,7 @@ import 'package:doublefeel_flutter/data/models/health/health_v2_models.dart'; @@ -28,9 +28,7 @@ import 'package:doublefeel_flutter/data/models/health/health_v2_models.dart';
28 import 'package:doublefeel_flutter/data/models/local/user_preferences.dart'; 28 import 'package:doublefeel_flutter/data/models/local/user_preferences.dart';
29 import 'package:doublefeel_flutter/data/models/pay/pay_models.dart'; 29 import 'package:doublefeel_flutter/data/models/pay/pay_models.dart';
30 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 30 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
31 -import 'package:doublefeel_flutter/pigeon/health_kit_api.g.dart';  
32 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart';  
33 -import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart'; 31 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
34 import 'package:flutter/material.dart'; 32 import 'package:flutter/material.dart';
35 import 'package:get/get.dart'; 33 import 'package:get/get.dart';
36 import 'package:intl/intl.dart'; 34 import 'package:intl/intl.dart';
@@ -74,7 +72,7 @@ class TodayController extends GetxController with WidgetsBindingObserver { @@ -74,7 +72,7 @@ class TodayController extends GetxController with WidgetsBindingObserver {
74 final HealthDataSource _healthApi; 72 final HealthDataSource _healthApi;
75 final FriendApi _friendApi; 73 final FriendApi _friendApi;
76 final UserStateService _userStateService; 74 final UserStateService _userStateService;
77 - final HealthKitHostApi _hostApi = HealthKitHostApi(); 75 + final AppHealthKitHostApi _hostApi = AppHealthKitHostApi();
78 final HealthRawDataCoreService _healthRawDataCoreService = 76 final HealthRawDataCoreService _healthRawDataCoreService =
79 Get.find<HealthRawDataCoreService>(); 77 Get.find<HealthRawDataCoreService>();
80 78
@@ -198,7 +196,7 @@ class TodayController extends GetxController with WidgetsBindingObserver { @@ -198,7 +196,7 @@ class TodayController extends GetxController with WidgetsBindingObserver {
198 showHrvAdBanner.value = false; 196 showHrvAdBanner.value = false;
199 } else { 197 } else {
200 try { 198 try {
201 - WearEngineHostApi() 199 + AppWearEngineHostApi()
202 .hasInstalledWatchSurface() 200 .hasInstalledWatchSurface()
203 .then((hasInstalledWatchSurface) { 201 .then((hasInstalledWatchSurface) {
204 showHrvAdBanner.value = !hasInstalledWatchSurface; 202 showHrvAdBanner.value = !hasInstalledWatchSurface;
@@ -733,7 +731,7 @@ class TodayController extends GetxController with WidgetsBindingObserver { @@ -733,7 +731,7 @@ class TodayController extends GetxController with WidgetsBindingObserver {
733 731
734 final yearlyProduct = Rxn<PayProduct>(); 732 final yearlyProduct = Rxn<PayProduct>();
735 final yearlyProductAppleInfo = Rxn<AppleProductInfo>(); 733 final yearlyProductAppleInfo = Rxn<AppleProductInfo>();
736 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 734 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
737 735
738 Future<void> getProductList() async { 736 Future<void> getProductList() async {
739 final result = await _payApi.getProductList(); 737 final result = await _payApi.getProductList();
@@ -12,7 +12,7 @@ import 'package:doublefeel_flutter/core/services/thinking_data_service.dart'; @@ -12,7 +12,7 @@ import 'package:doublefeel_flutter/core/services/thinking_data_service.dart';
12 import 'package:doublefeel_flutter/data/models/local/user_preferences.dart'; 12 import 'package:doublefeel_flutter/data/models/local/user_preferences.dart';
13 import 'package:doublefeel_flutter/l10n/gen/app_localizations.dart'; 13 import 'package:doublefeel_flutter/l10n/gen/app_localizations.dart';
14 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 14 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
15 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 15 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
16 import 'package:flutter/services.dart'; 16 import 'package:flutter/services.dart';
17 import 'package:flutter/widgets.dart'; 17 import 'package:flutter/widgets.dart';
18 import 'package:get/get.dart'; 18 import 'package:get/get.dart';
@@ -154,7 +154,7 @@ class LoginController extends GetxController { @@ -154,7 +154,7 @@ class LoginController extends GetxController {
154 } 154 }
155 try { 155 try {
156 final result = await LoadingService.instance.run(() async { 156 final result = await LoadingService.instance.run(() async {
157 - return await PlatformHostApi().requestAppleSignIn(); 157 + return await AppPlatformHostApi().requestAppleSignIn();
158 }, type: LoadingType.circular); 158 }, type: LoadingType.circular);
159 // result 为 null 或 identityToken 为空,说明用户取消或苹果授权失败 159 // result 为 null 或 identityToken 为空,说明用户取消或苹果授权失败
160 if (result == null || 160 if (result == null ||
@@ -175,7 +175,7 @@ class LoginController extends GetxController { @@ -175,7 +175,7 @@ class LoginController extends GetxController {
175 void onGoogleLoginPressed() async { 175 void onGoogleLoginPressed() async {
176 try { 176 try {
177 final result = await LoadingService.instance.run(() async { 177 final result = await LoadingService.instance.run(() async {
178 - return await PlatformHostApi().requestGoogleSignIn(); 178 + return await AppPlatformHostApi().requestGoogleSignIn();
179 }, type: LoadingType.circular); 179 }, type: LoadingType.circular);
180 // result 为 null 或 identityToken 为空,说明用户取消或苹果授权失败 180 // result 为 null 或 identityToken 为空,说明用户取消或苹果授权失败
181 if (result == null || 181 if (result == null ||
@@ -628,7 +628,7 @@ class LoginController extends GetxController { @@ -628,7 +628,7 @@ class LoginController extends GetxController {
628 try { 628 try {
629 if (Get.isRegistered<AppEnvironmentConfig>()) { 629 if (Get.isRegistered<AppEnvironmentConfig>()) {
630 var env = Get.find<AppEnvironmentConfig>(); 630 var env = Get.find<AppEnvironmentConfig>();
631 - await PlatformHostApi().updateLoginInfo( 631 + await AppPlatformHostApi().updateLoginInfo(
632 jsonEncode(UserPreferences( 632 jsonEncode(UserPreferences(
633 accessToken: accessToken, 633 accessToken: accessToken,
634 meUserInfo: me, 634 meUserInfo: me,
@@ -4,7 +4,7 @@ import 'package:doublefeel_flutter/core/theme/app_theme.dart'; @@ -4,7 +4,7 @@ import 'package:doublefeel_flutter/core/theme/app_theme.dart';
4 import 'package:doublefeel_flutter/core/util/app_toast.dart'; 4 import 'package:doublefeel_flutter/core/util/app_toast.dart';
5 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart'; 5 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart';
6 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 6 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
7 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 7 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
8 import 'package:flutter/material.dart'; 8 import 'package:flutter/material.dart';
9 import 'package:flutter/services.dart'; 9 import 'package:flutter/services.dart';
10 import 'package:get/get.dart'; 10 import 'package:get/get.dart';
@@ -155,7 +155,7 @@ Future<void> sendFeedbackEmail({ @@ -155,7 +155,7 @@ Future<void> sendFeedbackEmail({
155 'This issue was reported from $pageName by User ID: $cleanUserId.'; 155 'This issue was reported from $pageName by User ID: $cleanUserId.';
156 156
157 try { 157 try {
158 - await PlatformHostApi() 158 + await AppPlatformHostApi()
159 .sendEmail('support@doublefeel.cn', 'DoubleFeel Feedback', body); 159 .sendEmail('support@doublefeel.cn', 'DoubleFeel Feedback', body);
160 } catch (_) {} 160 } catch (_) {}
161 } 161 }
@@ -9,7 +9,7 @@ import 'package:doublefeel_flutter/data/models/local/user_preferences.dart'; @@ -9,7 +9,7 @@ import 'package:doublefeel_flutter/data/models/local/user_preferences.dart';
9 import 'package:doublefeel_flutter/data/models/pay/apple_pay_order_response.dart'; 9 import 'package:doublefeel_flutter/data/models/pay/apple_pay_order_response.dart';
10 import 'package:doublefeel_flutter/data/models/pay/pay_models.dart'; 10 import 'package:doublefeel_flutter/data/models/pay/pay_models.dart';
11 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 11 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
12 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 12 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
13 import 'package:flutter/material.dart'; 13 import 'package:flutter/material.dart';
14 import 'package:get/get.dart'; 14 import 'package:get/get.dart';
15 15
@@ -23,7 +23,7 @@ class MembershipDetailController extends GetxController { @@ -23,7 +23,7 @@ class MembershipDetailController extends GetxController {
23 23
24 final UserPreferencesStorage _userPreferences = 24 final UserPreferencesStorage _userPreferences =
25 Get.find<UserPreferencesStorage>(); 25 Get.find<UserPreferencesStorage>();
26 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 26 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
27 27
28 final isRestoring = false.obs; 28 final isRestoring = false.obs;
29 final scrollController = ScrollController(); 29 final scrollController = ScrollController();
@@ -8,7 +8,7 @@ import 'package:doublefeel_flutter/data/models/local/user_preferences.dart'; @@ -8,7 +8,7 @@ import 'package:doublefeel_flutter/data/models/local/user_preferences.dart';
8 import 'package:doublefeel_flutter/data/models/pay/apple_pay_order_response.dart'; 8 import 'package:doublefeel_flutter/data/models/pay/apple_pay_order_response.dart';
9 import 'package:doublefeel_flutter/data/models/pay/pay_models.dart'; 9 import 'package:doublefeel_flutter/data/models/pay/pay_models.dart';
10 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 10 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
11 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 11 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
12 import 'package:get/get.dart'; 12 import 'package:get/get.dart';
13 13
14 import '../../../routes/app_pages.dart'; 14 import '../../../routes/app_pages.dart';
@@ -21,7 +21,7 @@ class MembershipOfferController extends GetxController { @@ -21,7 +21,7 @@ class MembershipOfferController extends GetxController {
21 21
22 final UserPreferencesStorage _userPreferences = 22 final UserPreferencesStorage _userPreferences =
23 Get.find<UserPreferencesStorage>(); 23 Get.find<UserPreferencesStorage>();
24 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 24 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
25 25
26 final isUnlocking = false.obs; 26 final isUnlocking = false.obs;
27 Future<void> unlock() async { 27 Future<void> unlock() async {
@@ -92,7 +92,8 @@ class MembershipOfferController extends GetxController { @@ -92,7 +92,8 @@ class MembershipOfferController extends GetxController {
92 trackMap['currency_code'] = appleInfo?.currencyCode ?? ''; 92 trackMap['currency_code'] = appleInfo?.currencyCode ?? '';
93 93
94 var actualPrice = appleInfo?.price ?? 0; 94 var actualPrice = appleInfo?.price ?? 0;
95 - trackMap['actual_price'] = actualPrice > 0 ? actualPrice : (appleInfo?.originPrice ?? 0); 95 + trackMap['actual_price'] =
  96 + actualPrice > 0 ? actualPrice : (appleInfo?.originPrice ?? 0);
96 97
97 ta.track( 98 ta.track(
98 'success_doublefeel_pay_order', 99 'success_doublefeel_pay_order',
@@ -3,7 +3,7 @@ import 'package:doublefeel_flutter/app/routes/app_pages.dart'; @@ -3,7 +3,7 @@ import 'package:doublefeel_flutter/app/routes/app_pages.dart';
3 import 'package:doublefeel_flutter/core/theme/app_theme.dart'; 3 import 'package:doublefeel_flutter/core/theme/app_theme.dart';
4 import 'package:doublefeel_flutter/data/models/pay/pay_models.dart'; 4 import 'package:doublefeel_flutter/data/models/pay/pay_models.dart';
5 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 5 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
6 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 6 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
7 import 'package:flutter/material.dart'; 7 import 'package:flutter/material.dart';
8 import 'package:get/get.dart'; 8 import 'package:get/get.dart';
9 import 'package:lottie/lottie.dart'; 9 import 'package:lottie/lottie.dart';
@@ -16,7 +16,7 @@ import 'package:doublefeel_flutter/data/models/local/user_preferences.dart'; @@ -16,7 +16,7 @@ import 'package:doublefeel_flutter/data/models/local/user_preferences.dart';
16 import 'package:doublefeel_flutter/data/models/pay/apple_pay_order_response.dart'; 16 import 'package:doublefeel_flutter/data/models/pay/apple_pay_order_response.dart';
17 import 'package:doublefeel_flutter/data/models/pay/pay_models.dart'; 17 import 'package:doublefeel_flutter/data/models/pay/pay_models.dart';
18 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 18 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
19 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 19 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
20 import 'package:flutter/material.dart'; 20 import 'package:flutter/material.dart';
21 import 'package:get/get.dart'; 21 import 'package:get/get.dart';
22 22
@@ -52,7 +52,7 @@ class PurchaseController extends GetxController { @@ -52,7 +52,7 @@ class PurchaseController extends GetxController {
52 final VipApi _vipApi = Get.find<VipApi>(); 52 final VipApi _vipApi = Get.find<VipApi>();
53 final UserPreferencesStorage _userPreferences = 53 final UserPreferencesStorage _userPreferences =
54 Get.find<UserPreferencesStorage>(); 54 Get.find<UserPreferencesStorage>();
55 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 55 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
56 56
57 final scrollController = ScrollController(); 57 final scrollController = ScrollController();
58 final planScrollController = ScrollController(); 58 final planScrollController = ScrollController();
@@ -454,9 +454,8 @@ class PurchaseController extends GetxController { @@ -454,9 +454,8 @@ class PurchaseController extends GetxController {
454 'product_type': plan?.product?.appleId, 454 'product_type': plan?.product?.appleId,
455 'price': plan?.product?.price, 455 'price': plan?.product?.price,
456 'currency_code': appleInfo?.currencyCode ?? '', 456 'currency_code': appleInfo?.currencyCode ?? '',
457 - 'actual_price': actualPrice > 0  
458 - ? actualPrice  
459 - : (appleInfo?.originPrice ?? 0), 457 + 'actual_price':
  458 + actualPrice > 0 ? actualPrice : (appleInfo?.originPrice ?? 0),
460 }, 459 },
461 ); 460 );
462 } 461 }
@@ -7,8 +7,7 @@ import 'package:doublefeel_flutter/core/services/thinking_data_service.dart'; @@ -7,8 +7,7 @@ import 'package:doublefeel_flutter/core/services/thinking_data_service.dart';
7 import 'package:doublefeel_flutter/core/services/user_state_service.dart'; 7 import 'package:doublefeel_flutter/core/services/user_state_service.dart';
8 import 'package:doublefeel_flutter/data/local/user_account_storage.dart'; 8 import 'package:doublefeel_flutter/data/local/user_account_storage.dart';
9 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart'; 9 import 'package:doublefeel_flutter/data/local/user_preferences_storage.dart';
10 -import 'package:doublefeel_flutter/pigeon/health_kit_api.g.dart';  
11 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 10 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
12 import 'package:get/get.dart'; 11 import 'package:get/get.dart';
13 import 'package:permission_handler/permission_handler.dart'; 12 import 'package:permission_handler/permission_handler.dart';
14 13
@@ -24,8 +23,8 @@ class UserOnboardingController extends GetxController { @@ -24,8 +23,8 @@ class UserOnboardingController extends GetxController {
24 23
25 UserOnboardingController(this._userApi); 24 UserOnboardingController(this._userApi);
26 final UserApi _userApi; 25 final UserApi _userApi;
27 - final HealthKitHostApi _hostApi = HealthKitHostApi();  
28 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 26 + final AppHealthKitHostApi _hostApi = AppHealthKitHostApi();
  27 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
29 28
30 bool hasSelection(int pageIndex) => 29 bool hasSelection(int pageIndex) =>
31 selections[pageIndex]?.isNotEmpty ?? false; 30 selections[pageIndex]?.isNotEmpty ?? false;
@@ -7,8 +7,7 @@ import 'package:doublefeel_flutter/core/constants/app_const.dart'; @@ -7,8 +7,7 @@ import 'package:doublefeel_flutter/core/constants/app_const.dart';
7 import 'package:doublefeel_flutter/core/network/api/theme_api.dart'; 7 import 'package:doublefeel_flutter/core/network/api/theme_api.dart';
8 import 'package:doublefeel_flutter/core/result/app_result.dart'; 8 import 'package:doublefeel_flutter/core/result/app_result.dart';
9 import 'package:doublefeel_flutter/core/util/app_toast.dart'; 9 import 'package:doublefeel_flutter/core/util/app_toast.dart';
10 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart';  
11 -import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart'; 10 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
12 import 'package:flutter/material.dart'; 11 import 'package:flutter/material.dart';
13 import 'package:get/get.dart'; 12 import 'package:get/get.dart';
14 import 'package:image_picker/image_picker.dart'; 13 import 'package:image_picker/image_picker.dart';
@@ -22,8 +21,8 @@ class CreateWatchThemeController extends GetxController { @@ -22,8 +21,8 @@ class CreateWatchThemeController extends GetxController {
22 CreateWatchThemeController(this._themeApi); 21 CreateWatchThemeController(this._themeApi);
23 22
24 final ThemeApi _themeApi; 23 final ThemeApi _themeApi;
25 - final PlatformHostApi _platformHostApi = PlatformHostApi();  
26 - final WearEngineHostApi _wearEngineHostApi = WearEngineHostApi(); 24 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
  25 + final AppWearEngineHostApi _wearEngineHostApi = AppWearEngineHostApi();
27 final ImagePicker _imagePicker = ImagePicker(); 26 final ImagePicker _imagePicker = ImagePicker();
28 27
29 final customThemeName = ''.obs; 28 final customThemeName = ''.obs;
@@ -6,8 +6,7 @@ import 'package:doublefeel_flutter/core/network/api/friend_api.dart'; @@ -6,8 +6,7 @@ import 'package:doublefeel_flutter/core/network/api/friend_api.dart';
6 import 'package:doublefeel_flutter/core/network/api/theme_api.dart'; 6 import 'package:doublefeel_flutter/core/network/api/theme_api.dart';
7 import 'package:doublefeel_flutter/core/result/app_result.dart'; 7 import 'package:doublefeel_flutter/core/result/app_result.dart';
8 import 'package:doublefeel_flutter/core/util/app_toast.dart'; 8 import 'package:doublefeel_flutter/core/util/app_toast.dart';
9 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart';  
10 -import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart'; 9 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
11 import 'package:flutter/material.dart'; 10 import 'package:flutter/material.dart';
12 import 'package:get/get.dart'; 11 import 'package:get/get.dart';
13 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 12 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
@@ -119,7 +118,7 @@ class CustomWatchThemePreviewController extends GetxController { @@ -119,7 +118,7 @@ class CustomWatchThemePreviewController extends GetxController {
119 AppToast.show(l10n.watchThemeDeleteFailed); 118 AppToast.show(l10n.watchThemeDeleteFailed);
120 return; 119 return;
121 } 120 }
122 - await WearEngineHostApi().syncWatchTheme(null); 121 + await AppWearEngineHostApi().syncWatchTheme(null);
123 AppToast.show(l10n.watchThemeDeleted); 122 AppToast.show(l10n.watchThemeDeleted);
124 Get.back(); 123 Get.back();
125 } 124 }
@@ -139,13 +138,13 @@ class CustomWatchThemePreviewController extends GetxController { @@ -139,13 +138,13 @@ class CustomWatchThemePreviewController extends GetxController {
139 if (selectedFriend == null) return; 138 if (selectedFriend == null) return;
140 139
141 await loadFriendTheme(); 140 await loadFriendTheme();
142 - PlatformHostApi().refreshWatchAppAndWidgets(); 141 + AppPlatformHostApi().refreshWatchAppAndWidgets();
143 } 142 }
144 143
145 Future<void> addWatchFace() async { 144 Future<void> addWatchFace() async {
146 WearDeviceInfo? device; 145 WearDeviceInfo? device;
147 try { 146 try {
148 - device = await WearEngineHostApi().checkConnectedDevice(); 147 + device = await AppWearEngineHostApi().checkConnectedDevice();
149 } catch (e) { 148 } catch (e) {
150 device = null; 149 device = null;
151 } 150 }
@@ -157,17 +156,17 @@ class CustomWatchThemePreviewController extends GetxController { @@ -157,17 +156,17 @@ class CustomWatchThemePreviewController extends GetxController {
157 return; 156 return;
158 } 157 }
159 try { 158 try {
160 - await WearEngineHostApi().addWatchSurface(); 159 + await AppWearEngineHostApi().addWatchSurface();
161 } catch (_) { 160 } catch (_) {
162 // Opening the Watch app still helps the user install the watch face. 161 // Opening the Watch app still helps the user install the watch face.
163 } 162 }
164 - await PlatformHostApi().nativeHandleUrl("itms-watchs://"); 163 + await AppPlatformHostApi().nativeHandleUrl("itms-watchs://");
165 } 164 }
166 165
167 Future<void> tryApplyAndSyncWatchFace() async { 166 Future<void> tryApplyAndSyncWatchFace() async {
168 WearDeviceInfo? device; 167 WearDeviceInfo? device;
169 try { 168 try {
170 - device = await WearEngineHostApi().checkConnectedDevice(); 169 + device = await AppWearEngineHostApi().checkConnectedDevice();
171 } catch (e) { 170 } catch (e) {
172 device = null; 171 device = null;
173 } 172 }
@@ -224,7 +223,8 @@ class CustomWatchThemePreviewController extends GetxController { @@ -224,7 +223,8 @@ class CustomWatchThemePreviewController extends GetxController {
224 try { 223 try {
225 final result = await _themeApi.applyTheme(themeId); 224 final result = await _themeApi.applyTheme(themeId);
226 if (result is! AppSuccess<void>) { 225 if (result is! AppSuccess<void>) {
227 - syncSuccess = await WearEngineHostApi().syncWatchTheme(downloadedTheme); 226 + syncSuccess =
  227 + await AppWearEngineHostApi().syncWatchTheme(downloadedTheme);
228 isApplying.value = false; 228 isApplying.value = false;
229 AppToast.show(l10n.watchThemeApplyFailed); 229 AppToast.show(l10n.watchThemeApplyFailed);
230 return false; 230 return false;
@@ -6,8 +6,7 @@ import 'package:doublefeel_flutter/core/network/api/friend_api.dart'; @@ -6,8 +6,7 @@ import 'package:doublefeel_flutter/core/network/api/friend_api.dart';
6 import 'package:doublefeel_flutter/core/network/api/theme_api.dart'; 6 import 'package:doublefeel_flutter/core/network/api/theme_api.dart';
7 import 'package:doublefeel_flutter/core/result/app_result.dart'; 7 import 'package:doublefeel_flutter/core/result/app_result.dart';
8 import 'package:doublefeel_flutter/core/util/app_toast.dart'; 8 import 'package:doublefeel_flutter/core/util/app_toast.dart';
9 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart';  
10 -import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart'; 9 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
11 import 'package:flutter/material.dart'; 10 import 'package:flutter/material.dart';
12 import 'package:get/get.dart'; 11 import 'package:get/get.dart';
13 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 12 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
@@ -109,13 +108,13 @@ class WatchThemePreviewController extends GetxController { @@ -109,13 +108,13 @@ class WatchThemePreviewController extends GetxController {
109 108
110 await loadFriendTheme(); 109 await loadFriendTheme();
111 // 同时刷新好友、好友数据和好友主题 110 // 同时刷新好友、好友数据和好友主题
112 - PlatformHostApi().refreshWatchAppAndWidgets(); 111 + AppPlatformHostApi().refreshWatchAppAndWidgets();
113 } 112 }
114 113
115 Future<void> addWatchFace() async { 114 Future<void> addWatchFace() async {
116 WearDeviceInfo? device; 115 WearDeviceInfo? device;
117 try { 116 try {
118 - device = await WearEngineHostApi().checkConnectedDevice(); 117 + device = await AppWearEngineHostApi().checkConnectedDevice();
119 } catch (e) { 118 } catch (e) {
120 device = null; 119 device = null;
121 } 120 }
@@ -128,17 +127,17 @@ class WatchThemePreviewController extends GetxController { @@ -128,17 +127,17 @@ class WatchThemePreviewController extends GetxController {
128 } 127 }
129 128
130 try { 129 try {
131 - await WearEngineHostApi().addWatchSurface(); 130 + await AppWearEngineHostApi().addWatchSurface();
132 } catch (e) { 131 } catch (e) {
133 // Opening the Watch app still helps the user install the watch face. 132 // Opening the Watch app still helps the user install the watch face.
134 } 133 }
135 - await PlatformHostApi().nativeHandleUrl("itms-watchs://"); 134 + await AppPlatformHostApi().nativeHandleUrl("itms-watchs://");
136 } 135 }
137 136
138 Future<void> tryApplyAndSyncWatchFace() async { 137 Future<void> tryApplyAndSyncWatchFace() async {
139 WearDeviceInfo? device; 138 WearDeviceInfo? device;
140 try { 139 try {
141 - device = await WearEngineHostApi().checkConnectedDevice(); 140 + device = await AppWearEngineHostApi().checkConnectedDevice();
142 } catch (e) { 141 } catch (e) {
143 device = null; 142 device = null;
144 } 143 }
@@ -195,7 +194,8 @@ class WatchThemePreviewController extends GetxController { @@ -195,7 +194,8 @@ class WatchThemePreviewController extends GetxController {
195 try { 194 try {
196 final result = await _themeApi.applyTheme(themeId); 195 final result = await _themeApi.applyTheme(themeId);
197 if (result is! AppSuccess<void>) { 196 if (result is! AppSuccess<void>) {
198 - syncSuccess = await WearEngineHostApi().syncWatchTheme(downloadedTheme); 197 + syncSuccess =
  198 + await AppWearEngineHostApi().syncWatchTheme(downloadedTheme);
199 isApplying.value = false; 199 isApplying.value = false;
200 AppToast.show(l10n.watchThemeApplyFailed); 200 AppToast.show(l10n.watchThemeApplyFailed);
201 return false; 201 return false;
1 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 1 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
2 -import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart'; 2 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
3 3
4 extension WatchDeviceExtension on WearDeviceInfo { 4 extension WatchDeviceExtension on WearDeviceInfo {
5 String? get connectedDeviceDesc { 5 String? get connectedDeviceDesc {
@@ -2,7 +2,7 @@ import 'dart:io'; @@ -2,7 +2,7 @@ import 'dart:io';
2 import 'dart:typed_data'; 2 import 'dart:typed_data';
3 3
4 import 'package:doublefeel_flutter/app/modules/watch_theme/models/watch_theme_models.dart'; 4 import 'package:doublefeel_flutter/app/modules/watch_theme/models/watch_theme_models.dart';
5 -import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart'; 5 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
6 import 'package:flutter/services.dart'; 6 import 'package:flutter/services.dart';
7 7
8 class WatchThemeSyncPayloadBuilder { 8 class WatchThemeSyncPayloadBuilder {
1 import 'package:doublefeel_flutter/core/network/dio_client.dart'; 1 import 'package:doublefeel_flutter/core/network/dio_client.dart';
2 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 2 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
3 import 'package:flutter/foundation.dart'; 3 import 'package:flutter/foundation.dart';
4 import 'package:flutter/widgets.dart'; 4 import 'package:flutter/widgets.dart';
5 import 'package:get/get.dart'; 5 import 'package:get/get.dart';
@@ -14,7 +14,7 @@ class AppEnvironmentConfig { @@ -14,7 +14,7 @@ class AppEnvironmentConfig {
14 AppEnvironmentConfig(this._storage); 14 AppEnvironmentConfig(this._storage);
15 15
16 final LocalStorage _storage; 16 final LocalStorage _storage;
17 - final PlatformHostApi _platformHostApi = PlatformHostApi(); 17 + final AppPlatformHostApi _platformHostApi = AppPlatformHostApi();
18 18
19 final Rx<AppEnvironment> environment = AppEnvironment.release.obs; 19 final Rx<AppEnvironment> environment = AppEnvironment.release.obs;
20 20
1 import 'package:doublefeel_flutter/data/models/friend/friend_models.dart'; 1 import 'package:doublefeel_flutter/data/models/friend/friend_models.dart';
2 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 2 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
3 3
4 import '../../constants/app_const.dart'; 4 import '../../constants/app_const.dart';
5 import '../../error/http_error_handling_policy.dart'; 5 import '../../error/http_error_handling_policy.dart';
1 -import '../../pigeon/platform_api.g.dart'; 1 +import '../platform/pigeon_api_facade.dart';
2 2
3 /// App 启动时通过 [init] 经由 Pigeon 从 native 获取完整 User-Agent 并缓存, 3 /// App 启动时通过 [init] 经由 Pigeon 从 native 获取完整 User-Agent 并缓存,
4 /// 供 [TokenInterceptor] 等拦截器同步读取。 4 /// 供 [TokenInterceptor] 等拦截器同步读取。
@@ -14,7 +14,7 @@ abstract final class UserAgentProvider { @@ -14,7 +14,7 @@ abstract final class UserAgentProvider {
14 /// 在 [AppBootstrap.init] 中 await,确保首次网络请求前 UA 已就绪。 14 /// 在 [AppBootstrap.init] 中 await,确保首次网络请求前 UA 已就绪。
15 static Future<void> init() async { 15 static Future<void> init() async {
16 try { 16 try {
17 - _userAgent = await PlatformHostApi().getFullUserAgent(); 17 + _userAgent = await AppPlatformHostApi().getFullUserAgent();
18 } catch (_) { 18 } catch (_) {
19 // native 获取失败时保留占位值,不阻塞启动 19 // native 获取失败时保留占位值,不阻塞启动
20 } 20 }
  1 +import 'package:flutter/foundation.dart';
  2 +import 'package:doublefeel_flutter/pigeon/alipay_api.g.dart' as alipay;
  3 +import 'package:doublefeel_flutter/pigeon/health_kit_api.g.dart' as health_kit;
  4 +import 'package:doublefeel_flutter/pigeon/health_kit_raw_data_api.g.dart'
  5 + as health_raw;
  6 +import 'package:doublefeel_flutter/pigeon/platform_api.g.dart' as platform;
  7 +import 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart' as wear;
  8 +
  9 +export 'package:doublefeel_flutter/pigeon/alipay_api.g.dart';
  10 +export 'package:doublefeel_flutter/pigeon/health_kit_api.g.dart';
  11 +export 'package:doublefeel_flutter/pigeon/health_kit_raw_data_api.g.dart';
  12 +export 'package:doublefeel_flutter/pigeon/platform_api.g.dart';
  13 +export 'package:doublefeel_flutter/pigeon/wear_engine_api.g.dart';
  14 +
  15 +enum AppPigeonPlatform { ios, android, ohos }
  16 +
  17 +typedef AppPigeonPlatformProvider = AppPigeonPlatform Function();
  18 +
  19 +AppPigeonPlatform resolveAppPigeonPlatform({TargetPlatform? targetPlatform}) {
  20 + final platform = targetPlatform ?? defaultTargetPlatform;
  21 + if (platform == TargetPlatform.ohos) {
  22 + return AppPigeonPlatform.ohos;
  23 + }
  24 + if (platform == TargetPlatform.iOS) {
  25 + return AppPigeonPlatform.ios;
  26 + }
  27 + return AppPigeonPlatform.android;
  28 +}
  29 +
  30 +abstract class _AppPigeonApiFacade {
  31 + _AppPigeonApiFacade({
  32 + AppPigeonPlatform? appPlatform,
  33 + AppPigeonPlatformProvider? platformProvider,
  34 + }) : _platformProvider = platformProvider ??
  35 + (() => appPlatform ?? resolveAppPigeonPlatform());
  36 +
  37 + final AppPigeonPlatformProvider _platformProvider;
  38 +
  39 + AppPigeonPlatform get appPigeonPlatform => _platformProvider();
  40 +
  41 + Future<T> dispatch<T>({
  42 + required Future<T> Function() ios,
  43 + Future<T> Function()? android,
  44 + Future<T> Function()? ohos,
  45 + }) {
  46 + return switch (appPigeonPlatform) {
  47 + AppPigeonPlatform.ios => ios(),
  48 + AppPigeonPlatform.android => (android ?? ios)(),
  49 + AppPigeonPlatform.ohos => (ohos ?? android ?? ios)(),
  50 + };
  51 + }
  52 +}
  53 +
  54 +class AppPlatformHostApi extends _AppPigeonApiFacade {
  55 + AppPlatformHostApi({
  56 + platform.PlatformHostApi? api,
  57 + super.appPlatform,
  58 + super.platformProvider,
  59 + }) : _api = api ?? platform.PlatformHostApi();
  60 +
  61 + final platform.PlatformHostApi _api;
  62 +
  63 + Future<String> getFullUserAgent() =>
  64 + dispatch(ios: () => _api.getFullUserAgent());
  65 +
  66 + Future<bool> isChinaRegion() => dispatch(
  67 + ios: () => _api.isChinaRegion(),
  68 + ohos: () async {
  69 + return true;
  70 + });
  71 +
  72 + Future<int> getApnsAuthStatus() =>
  73 + dispatch(ios: () => _api.getApnsAuthStatus());
  74 +
  75 + Future<bool> requestNotificationAuth() =>
  76 + dispatch(ios: () => _api.requestNotificationAuth());
  77 +
  78 + Future<bool> isDebugEnvoriment() => dispatch(
  79 + ios: () => _api.isDebugEnvoriment(),
  80 + ohos: () async {
  81 + return false;
  82 + });
  83 +
  84 + Future<bool> shareText(String text) =>
  85 + dispatch(ios: () => _api.shareText(text));
  86 +
  87 + Future<bool> shareFileData(Uint8List databytes) =>
  88 + dispatch(ios: () => _api.shareFileData(databytes));
  89 +
  90 + Future<void> updateLoginInfo(String jsonString, String baseUrl) =>
  91 + dispatch(ios: () => _api.updateLoginInfo(jsonString, baseUrl));
  92 +
  93 + Future<void> logout() => dispatch(ios: () => _api.logout());
  94 +
  95 + Future<void> refreshVip() => dispatch(ios: () => _api.refreshVip());
  96 +
  97 + Future<void> refreshWatchAppAndWidgets() =>
  98 + dispatch(ios: () => _api.refreshWatchAppAndWidgets());
  99 +
  100 + Future<bool> requestAppReview() =>
  101 + dispatch(ios: () => _api.requestAppReview());
  102 +
  103 + Future<bool> jumpAppSetting() => dispatch(ios: () => _api.jumpAppSetting());
  104 +
  105 + Future<bool> nativeHandleUrl(String urlString) =>
  106 + dispatch(ios: () => _api.nativeHandleUrl(urlString));
  107 +
  108 + Future<String?> requestUnhandedUrl() =>
  109 + dispatch(ios: () => _api.requestUnhandedUrl());
  110 +
  111 + Future<platform.AppleSignInModel?> requestAppleSignIn() =>
  112 + dispatch(ios: () => _api.requestAppleSignIn());
  113 +
  114 + Future<platform.GoogleSignInModel?> requestGoogleSignIn() =>
  115 + dispatch(ios: () => _api.requestGoogleSignIn());
  116 +
  117 + Future<bool> sendEmail(String mailTo, String title, String content) =>
  118 + dispatch(ios: () => _api.sendEmail(mailTo, title, content));
  119 +
  120 + Future<platform.AppleProductInfo?> requestAppleProductInfo(
  121 + String productId,
  122 + int baseUnit,
  123 + ) =>
  124 + dispatch(ios: () => _api.requestAppleProductInfo(productId, baseUnit));
  125 +
  126 + Future<platform.AppleProductPaymentResult?> performApplePayment(
  127 + String productId,
  128 + String uuid,
  129 + ) =>
  130 + dispatch(ios: () => _api.performApplePayment(productId, uuid));
  131 +
  132 + Future<bool> performRestore() => dispatch(ios: () => _api.performRestore());
  133 +
  134 + Future<String?> uploadFile(
  135 + String filePath,
  136 + platform.HResourceType resourceType,
  137 + ) =>
  138 + dispatch(ios: () => _api.uploadFile(filePath, resourceType));
  139 +
  140 + Future<String?> performCropImage(
  141 + String imageUrl,
  142 + int? maxKB,
  143 + int? width,
  144 + int? height,
  145 + ) =>
  146 + dispatch(
  147 + ios: () => _api.performCropImage(imageUrl, maxKB, width, height));
  148 +
  149 + Future<bool> sendLocalNotification(
  150 + int dataType,
  151 + int dateTime,
  152 + String title,
  153 + String content,
  154 + String link,
  155 + ) =>
  156 + dispatch(
  157 + ios: () => _api.sendLocalNotification(
  158 + dataType, dateTime, title, content, link),
  159 + );
  160 +}
  161 +
  162 +class AppHealthKitHostApi extends _AppPigeonApiFacade {
  163 + AppHealthKitHostApi({
  164 + health_kit.HealthKitHostApi? api,
  165 + super.appPlatform,
  166 + super.platformProvider,
  167 + }) : _api = api ?? health_kit.HealthKitHostApi();
  168 +
  169 + final health_kit.HealthKitHostApi _api;
  170 +
  171 + Future<String> getHealthServerAuthUrl() =>
  172 + dispatch(ios: () => _api.getHealthServerAuthUrl());
  173 +
  174 + Future<bool> cancelHealthAppAuthorization() =>
  175 + dispatch(ios: () => _api.cancelHealthAppAuthorization());
  176 +
  177 + Future<health_kit.HealthAuthorization> checkHealthAppAuthorization() =>
  178 + dispatch(ios: () => _api.checkHealthAppAuthorization());
  179 +
  180 + Future<bool> requestHealthClientAuthorization() =>
  181 + dispatch(ios: () => _api.requestHealthClientAuthorization());
  182 +}
  183 +
  184 +class AppHealthKitRawDataHostApi extends _AppPigeonApiFacade {
  185 + AppHealthKitRawDataHostApi({
  186 + health_raw.HealthKitRawDataHostApi? api,
  187 + super.appPlatform,
  188 + super.platformProvider,
  189 + }) : _api = api ?? health_raw.HealthKitRawDataHostApi();
  190 +
  191 + final health_raw.HealthKitRawDataHostApi _api;
  192 +
  193 + Future<bool> hasHealthData() => dispatch(ios: () => _api.hasHealthData());
  194 +
  195 + Future<List<health_raw.HealthKitRawDataPoint>> getHealthKitRawData(
  196 + int dataType,
  197 + int startTime,
  198 + int endTime,
  199 + ) =>
  200 + dispatch(
  201 + ios: () => _api.getHealthKitRawData(dataType, startTime, endTime),
  202 + );
  203 +
  204 + Future<bool> performHealthDataUpload() =>
  205 + dispatch(ios: () => _api.performHealthDataUpload());
  206 +
  207 + Future<bool> syncDatabase({
  208 + required String hrDataPath,
  209 + required String hrvDataPath,
  210 + required String sleepDataPath,
  211 + required String avgRealtimeStressDataPath,
  212 + }) =>
  213 + dispatch(
  214 + ios: () => _api.syncDatabase(
  215 + hrDataPath: hrDataPath,
  216 + hrvDataPath: hrvDataPath,
  217 + sleepDataPath: sleepDataPath,
  218 + avgRealtimeStressDataPath: avgRealtimeStressDataPath,
  219 + ),
  220 + );
  221 +
  222 + Future<int> performHRDataUpload({required String sqliteFilePath}) => dispatch(
  223 + ios: () => _api.performHRDataUpload(sqliteFilePath: sqliteFilePath),
  224 + );
  225 +
  226 + Future<int> performHRVDataUpload({required String sqliteFilePath}) =>
  227 + dispatch(
  228 + ios: () => _api.performHRVDataUpload(sqliteFilePath: sqliteFilePath),
  229 + );
  230 +
  231 + Future<int> performSleepAnalysisDataUpload(
  232 + {required String sqliteFilePath}) =>
  233 + dispatch(
  234 + ios: () => _api.performSleepAnalysisDataUpload(
  235 + sqliteFilePath: sqliteFilePath,
  236 + ),
  237 + );
  238 +
  239 + Future<int> performAvgRealtimeStressDataUpload({
  240 + required String sqliteFilePath,
  241 + }) =>
  242 + dispatch(
  243 + ios: () => _api.performAvgRealtimeStressDataUpload(
  244 + sqliteFilePath: sqliteFilePath,
  245 + ),
  246 + );
  247 +
  248 + Future<List<health_raw.HealthKitRawSleepDataPoint>> getHealthKitRawSleepData(
  249 + int startTime,
  250 + int endTime,
  251 + ) =>
  252 + dispatch(ios: () => _api.getHealthKitRawSleepData(startTime, endTime));
  253 +
  254 + Future<List<health_raw.HealthKitRawActivityDataPoint>>
  255 + getHealthKitRawActivityData(
  256 + int startTime,
  257 + int endTime,
  258 + ) =>
  259 + dispatch(
  260 + ios: () => _api.getHealthKitRawActivityData(startTime, endTime),
  261 + );
  262 +
  263 + Future<List<health_raw.HealthKitRawWorkoutDataPoint>>
  264 + getHealthKitRawWorkoutData(
  265 + int startTime,
  266 + int endTime,
  267 + ) =>
  268 + dispatch(
  269 + ios: () => _api.getHealthKitRawWorkoutData(startTime, endTime),
  270 + );
  271 +
  272 + Future<bool> saveNativeCallFlutterChange({
  273 + required List<int> relativeDataTypes,
  274 + }) =>
  275 + dispatch(
  276 + ios: () => _api.saveNativeCallFlutterChange(
  277 + relativeDataTypes: relativeDataTypes,
  278 + ),
  279 + );
  280 +
  281 + Future<bool> saveFlutterCaculateFinished({
  282 + required List<int> relativeDataTypes,
  283 + }) =>
  284 + dispatch(
  285 + ios: () => _api.saveFlutterCaculateFinished(
  286 + relativeDataTypes: relativeDataTypes,
  287 + ),
  288 + );
  289 +
  290 + Future<bool> saveLocalNotificationRecord({
  291 + required String notificationType,
  292 + required int timestamp,
  293 + }) =>
  294 + dispatch(
  295 + ios: () => _api.saveLocalNotificationRecord(
  296 + notificationType: notificationType,
  297 + timestamp: timestamp,
  298 + ),
  299 + );
  300 +
  301 + Future<bool> shareNativeAppleHealthObserverRecord() =>
  302 + dispatch(ios: () => _api.shareNativeAppleHealthObserverRecord());
  303 +
  304 + Future<bool> saveLocalNotificationDebugEvent({
  305 + required Map<String, Object?> event,
  306 + }) =>
  307 + dispatch(ios: () => _api.saveLocalNotificationDebugEvent(event: event));
  308 +
  309 + Future<bool> shareFlutterObserverRecord() =>
  310 + dispatch(ios: () => _api.shareFlutterObserverRecord());
  311 +
  312 + Future<bool> shareLocalNotificationDebugRecord() =>
  313 + dispatch(ios: () => _api.shareLocalNotificationDebugRecord());
  314 +
  315 + Future<bool> shareUploadTaskRecord() =>
  316 + dispatch(ios: () => _api.shareUploadTaskRecord());
  317 +}
  318 +
  319 +class AppWearEngineHostApi extends _AppPigeonApiFacade {
  320 + AppWearEngineHostApi({
  321 + wear.WearEngineHostApi? api,
  322 + super.appPlatform,
  323 + super.platformProvider,
  324 + }) : _api = api ?? wear.WearEngineHostApi();
  325 +
  326 + final wear.WearEngineHostApi _api;
  327 +
  328 + Future<bool> hasAvailableDevices() =>
  329 + dispatch(ios: () => _api.hasAvailableDevices());
  330 +
  331 + Future<wear.WearDeviceInfo?> checkConnectedDevice() =>
  332 + dispatch(ios: () => _api.checkConnectedDevice());
  333 +
  334 + Future<bool> registerMessageReceiver() =>
  335 + dispatch(ios: () => _api.registerMessageReceiver());
  336 +
  337 + Future<bool> sendTextMessage(String message) =>
  338 + dispatch(ios: () => _api.sendTextMessage(message));
  339 +
  340 + Future<bool> addWatchSurface() => dispatch(ios: () => _api.addWatchSurface());
  341 +
  342 + Future<bool> syncWatchTheme(wear.WatchTransformTheme? theme) =>
  343 + dispatch(ios: () => _api.syncWatchTheme(theme));
  344 +
  345 + Future<String?> removeBackground(String originImagePath) =>
  346 + dispatch(ios: () => _api.removeBackground(originImagePath));
  347 +
  348 + Future<bool> hasInstalledWatchSurface() =>
  349 + dispatch(ios: () => _api.hasInstalledWatchSurface());
  350 +}
  351 +
  352 +class AppAlipayHostApi extends _AppPigeonApiFacade {
  353 + AppAlipayHostApi({
  354 + alipay.AlipayHostApi? api,
  355 + super.appPlatform,
  356 + super.platformProvider,
  357 + }) : _api = api ?? alipay.AlipayHostApi();
  358 +
  359 + final alipay.AlipayHostApi _api;
  360 +
  361 + Future<alipay.AliPayResultCode> launchAliPay(String prepayData) =>
  362 + dispatch(ios: () => _api.launchAliPay(prepayData));
  363 +}
1 import 'package:flutter/foundation.dart'; 1 import 'package:flutter/foundation.dart';
2 2
3 -import '../../../pigeon/health_kit_raw_data_api.g.dart'; 3 +import '../../platform/pigeon_api_facade.dart';
4 import 'platform_ohos/ohos_health_raw_data_sync_service.dart'; 4 import 'platform_ohos/ohos_health_raw_data_sync_service.dart';
5 5
6 abstract class HealthRawDataSource { 6 abstract class HealthRawDataSource {
@@ -89,9 +89,9 @@ class PlatformHealthRawDataSource implements HealthRawDataSource { @@ -89,9 +89,9 @@ class PlatformHealthRawDataSource implements HealthRawDataSource {
89 class AppleHealthRawDataSource implements HealthRawDataSource { 89 class AppleHealthRawDataSource implements HealthRawDataSource {
90 AppleHealthRawDataSource({ 90 AppleHealthRawDataSource({
91 HealthKitRawDataHostApi? rawDataApi, 91 HealthKitRawDataHostApi? rawDataApi,
92 - }) : _rawDataApi = rawDataApi ?? HealthKitRawDataHostApi(); 92 + }) : _rawDataApi = AppHealthKitRawDataHostApi(api: rawDataApi);
93 93
94 - final HealthKitRawDataHostApi _rawDataApi; 94 + final AppHealthKitRawDataHostApi _rawDataApi;
95 95
96 @override 96 @override
97 Future<bool> hasHealthData() { 97 Future<bool> hasHealthData() {
@@ -10,8 +10,7 @@ import 'package:sqflite/sqflite.dart'; @@ -10,8 +10,7 @@ import 'package:sqflite/sqflite.dart';
10 10
11 import '../../../../data/models/enums/app_enums.dart'; 11 import '../../../../data/models/enums/app_enums.dart';
12 import '../../../../l10n/l10n_extensions.dart'; 12 import '../../../../l10n/l10n_extensions.dart';
13 -import '../../../../pigeon/health_kit_api.g.dart';  
14 -import '../../../../pigeon/health_kit_raw_data_api.g.dart'; 13 +import '../../../platform/pigeon_api_facade.dart';
15 import '../../../config/app_environment_config.dart'; 14 import '../../../config/app_environment_config.dart';
16 import '../../../logging/app_logger.dart'; 15 import '../../../logging/app_logger.dart';
17 import '../../../network/api/health_api.dart'; 16 import '../../../network/api/health_api.dart';
@@ -36,8 +35,8 @@ class AppleHealthRawDataCoreService { @@ -36,8 +35,8 @@ class AppleHealthRawDataCoreService {
36 HealthRawLocalNotificationDispatcher? localNotificationDispatcher, 35 HealthRawLocalNotificationDispatcher? localNotificationDispatcher,
37 HealthRawLocalNotificationDebugStore? localNotificationDebugStore, 36 HealthRawLocalNotificationDebugStore? localNotificationDebugStore,
38 HealthApi? serverHealthApi, 37 HealthApi? serverHealthApi,
39 - }) : _healthApi = healthApi ?? HealthKitHostApi(),  
40 - _rawDataApi = rawDataApi ?? HealthKitRawDataHostApi(), 38 + }) : _healthApi = AppHealthKitHostApi(api: healthApi),
  39 + _rawDataApi = AppHealthKitRawDataHostApi(api: rawDataApi),
41 _localStore = localStore ?? HealthRawStressLocalStore(), 40 _localStore = localStore ?? HealthRawStressLocalStore(),
42 _environmentConfig = environmentConfig, 41 _environmentConfig = environmentConfig,
43 _userIdProvider = userIdProvider, 42 _userIdProvider = userIdProvider,
@@ -48,8 +47,8 @@ class AppleHealthRawDataCoreService { @@ -48,8 +47,8 @@ class AppleHealthRawDataCoreService {
48 HealthRawLocalNotificationDebugStore(), 47 HealthRawLocalNotificationDebugStore(),
49 _serverHealthApi = serverHealthApi; 48 _serverHealthApi = serverHealthApi;
50 49
51 - final HealthKitHostApi _healthApi;  
52 - final HealthKitRawDataHostApi _rawDataApi; 50 + final AppHealthKitHostApi _healthApi;
  51 + final AppHealthKitRawDataHostApi _rawDataApi;
53 final HealthRawStressLocalStore _localStore; 52 final HealthRawStressLocalStore _localStore;
54 final AppEnvironmentConfig? _environmentConfig; 53 final AppEnvironmentConfig? _environmentConfig;
55 final int Function()? _userIdProvider; 54 final int Function()? _userIdProvider;
@@ -4,7 +4,7 @@ import 'dart:io'; @@ -4,7 +4,7 @@ import 'dart:io';
4 import 'package:path_provider/path_provider.dart'; 4 import 'package:path_provider/path_provider.dart';
5 5
6 import '../../../../l10n/gen/app_localizations.dart'; 6 import '../../../../l10n/gen/app_localizations.dart';
7 -import '../../../../pigeon/platform_api.g.dart'; 7 +import '../../../platform/pigeon_api_facade.dart';
8 import '../health_raw_models.dart'; 8 import '../health_raw_models.dart';
9 9
10 const healthRawTodayLink = 'doublefeel://flutter/home?tab=today'; 10 const healthRawTodayLink = 'doublefeel://flutter/home?tab=today';
@@ -227,12 +227,12 @@ class HealthRawLocalNotificationBuilder { @@ -227,12 +227,12 @@ class HealthRawLocalNotificationBuilder {
227 227
228 class HealthRawLocalNotificationDispatcher { 228 class HealthRawLocalNotificationDispatcher {
229 HealthRawLocalNotificationDispatcher({ 229 HealthRawLocalNotificationDispatcher({
230 - PlatformHostApi? platformApi, 230 + AppPlatformHostApi? platformApi,
231 HealthRawLocalNotificationRecordStore? recordStore, 231 HealthRawLocalNotificationRecordStore? recordStore,
232 - }) : _platformApi = platformApi ?? PlatformHostApi(), 232 + }) : _platformApi = platformApi ?? AppPlatformHostApi(),
233 _recordStore = recordStore ?? HealthRawLocalNotificationRecordStore(); 233 _recordStore = recordStore ?? HealthRawLocalNotificationRecordStore();
234 234
235 - final PlatformHostApi _platformApi; 235 + final AppPlatformHostApi _platformApi;
236 final HealthRawLocalNotificationRecordStore _recordStore; 236 final HealthRawLocalNotificationRecordStore _recordStore;
237 237
238 Future<List<HealthRawLocalNotification>> sendAll({ 238 Future<List<HealthRawLocalNotification>> sendAll({
1 import 'package:doublefeel_flutter/core/config/app_environment_config.dart'; 1 import 'package:doublefeel_flutter/core/config/app_environment_config.dart';
2 import 'package:doublefeel_flutter/core/services/raw_data_service/health_raw_data_core_service.dart'; 2 import 'package:doublefeel_flutter/core/services/raw_data_service/health_raw_data_core_service.dart';
3 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 3 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
4 4
5 import '../logging/app_logger.dart'; 5 import '../logging/app_logger.dart';
6 import '../network/api/user_api.dart'; 6 import '../network/api/user_api.dart';
@@ -57,7 +57,7 @@ class UserStateService { @@ -57,7 +57,7 @@ class UserStateService {
57 } 57 }
58 await _userPrefs.clear(); 58 await _userPrefs.clear();
59 try { 59 try {
60 - await PlatformHostApi().logout(); 60 + await AppPlatformHostApi().logout();
61 } catch (e) { 61 } catch (e) {
62 AppLogger.w('Platform logout failed', e); 62 AppLogger.w('Platform logout failed', e);
63 } 63 }
@@ -97,7 +97,6 @@ class UserStateService { @@ -97,7 +97,6 @@ class UserStateService {
97 ? 'mainland' 97 ? 'mainland'
98 : 'overseas'; 98 : 'overseas';
99 99
100 -  
101 if (props.isNotEmpty) { 100 if (props.isNotEmpty) {
102 _thinkingDataService.setSuperProperties(props); 101 _thinkingDataService.setSuperProperties(props);
103 } 102 }
@@ -8,7 +8,7 @@ import 'package:doublefeel_flutter/data/models/health/health_v2_models.dart'; @@ -8,7 +8,7 @@ import 'package:doublefeel_flutter/data/models/health/health_v2_models.dart';
8 import 'package:doublefeel_flutter/data/models/health/hrv/hrv_statistics_data.dart'; 8 import 'package:doublefeel_flutter/data/models/health/hrv/hrv_statistics_data.dart';
9 import 'package:doublefeel_flutter/data/models/health/sleep/sleep_statistics_data.dart'; 9 import 'package:doublefeel_flutter/data/models/health/sleep/sleep_statistics_data.dart';
10 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; 10 import 'package:doublefeel_flutter/l10n/l10n_extensions.dart';
11 -import 'package:doublefeel_flutter/pigeon/health_kit_raw_data_api.g.dart'; 11 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
12 12
13 class LocalHealthDataConvert { 13 class LocalHealthDataConvert {
14 const LocalHealthDataConvert._(); 14 const LocalHealthDataConvert._();
@@ -7,7 +7,7 @@ import 'package:doublefeel_flutter/data/models/health/activity/activity_burn_sta @@ -7,7 +7,7 @@ import 'package:doublefeel_flutter/data/models/health/activity/activity_burn_sta
7 import 'package:doublefeel_flutter/data/models/health/health_v2_models.dart'; 7 import 'package:doublefeel_flutter/data/models/health/health_v2_models.dart';
8 import 'package:doublefeel_flutter/data/models/health/hrv/hrv_statistics_data.dart'; 8 import 'package:doublefeel_flutter/data/models/health/hrv/hrv_statistics_data.dart';
9 import 'package:doublefeel_flutter/data/models/health/sleep/sleep_statistics_data.dart'; 9 import 'package:doublefeel_flutter/data/models/health/sleep/sleep_statistics_data.dart';
10 -import 'package:doublefeel_flutter/pigeon/health_kit_raw_data_api.g.dart'; 10 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
11 11
12 import 'health_datasource.dart'; 12 import 'health_datasource.dart';
13 import 'health_local_data_convert.dart'; 13 import 'health_local_data_convert.dart';
@@ -2,7 +2,7 @@ import 'dart:convert'; @@ -2,7 +2,7 @@ import 'dart:convert';
2 2
3 import 'package:doublefeel_flutter/core/config/app_environment_config.dart'; 3 import 'package:doublefeel_flutter/core/config/app_environment_config.dart';
4 import 'package:doublefeel_flutter/core/services/raw_data_service/health_raw_data_core_service.dart'; 4 import 'package:doublefeel_flutter/core/services/raw_data_service/health_raw_data_core_service.dart';
5 -import 'package:doublefeel_flutter/pigeon/platform_api.g.dart'; 5 +import 'package:doublefeel_flutter/core/platform/pigeon_api_facade.dart';
6 import 'package:get/get.dart'; 6 import 'package:get/get.dart';
7 import 'package:shared_preferences/shared_preferences.dart'; 7 import 'package:shared_preferences/shared_preferences.dart';
8 8
@@ -53,7 +53,7 @@ class UserPreferencesStorage { @@ -53,7 +53,7 @@ class UserPreferencesStorage {
53 if (userInfo.accessToken.isEmpty) { 53 if (userInfo.accessToken.isEmpty) {
54 try { 54 try {
55 if (Get.isRegistered<AppEnvironmentConfig>()) { 55 if (Get.isRegistered<AppEnvironmentConfig>()) {
56 - await PlatformHostApi().logout(); 56 + await AppPlatformHostApi().logout();
57 } 57 }
58 } on Exception { 58 } on Exception {
59 return; 59 return;
@@ -63,7 +63,7 @@ class UserPreferencesStorage { @@ -63,7 +63,7 @@ class UserPreferencesStorage {
63 try { 63 try {
64 if (Get.isRegistered<AppEnvironmentConfig>()) { 64 if (Get.isRegistered<AppEnvironmentConfig>()) {
65 var env = Get.find<AppEnvironmentConfig>(); 65 var env = Get.find<AppEnvironmentConfig>();
66 - await PlatformHostApi() 66 + await AppPlatformHostApi()
67 .updateLoginInfo(jsonEncode(userInfo), env.serverBaseUrl); 67 .updateLoginInfo(jsonEncode(userInfo), env.serverBaseUrl);
68 await _syncHealthRawDatabaseToNative(); 68 await _syncHealthRawDatabaseToNative();
69 } 69 }
@@ -6,7 +6,7 @@ packages: @@ -6,7 +6,7 @@ packages:
6 description: 6 description:
7 name: _fe_analyzer_shared 7 name: _fe_analyzer_shared
8 sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f 8 sha256: da0d9209ca76bde579f2da330aeb9df62b6319c834fa7baae052021b0462401f
9 - url: "https://pub.dev" 9 + url: "https://pub.flutter-io.cn"
10 source: hosted 10 source: hosted
11 version: "85.0.0" 11 version: "85.0.0"
12 analyzer: 12 analyzer:
@@ -14,7 +14,7 @@ packages: @@ -14,7 +14,7 @@ packages:
14 description: 14 description:
15 name: analyzer 15 name: analyzer
16 sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" 16 sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d"
17 - url: "https://pub.dev" 17 + url: "https://pub.flutter-io.cn"
18 source: hosted 18 source: hosted
19 version: "7.7.1" 19 version: "7.7.1"
20 archive: 20 archive:
@@ -22,7 +22,7 @@ packages: @@ -22,7 +22,7 @@ packages:
22 description: 22 description:
23 name: archive 23 name: archive
24 sha256: ace891da0862b0e4cabbb064ee3fd87b2728b898949fdb366d83fe98342c9f19 24 sha256: ace891da0862b0e4cabbb064ee3fd87b2728b898949fdb366d83fe98342c9f19
25 - url: "https://pub.dev" 25 + url: "https://pub.flutter-io.cn"
26 source: hosted 26 source: hosted
27 version: "4.2.0" 27 version: "4.2.0"
28 args: 28 args:
@@ -30,7 +30,7 @@ packages: @@ -30,7 +30,7 @@ packages:
30 description: 30 description:
31 name: args 31 name: args
32 sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 32 sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04
33 - url: "https://pub.dev" 33 + url: "https://pub.flutter-io.cn"
34 source: hosted 34 source: hosted
35 version: "2.7.0" 35 version: "2.7.0"
36 async: 36 async:
@@ -38,7 +38,7 @@ packages: @@ -38,7 +38,7 @@ packages:
38 description: 38 description:
39 name: async 39 name: async
40 sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37 40 sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37
41 - url: "https://pub.dev" 41 + url: "https://pub.flutter-io.cn"
42 source: hosted 42 source: hosted
43 version: "2.13.1" 43 version: "2.13.1"
44 boolean_selector: 44 boolean_selector:
@@ -46,7 +46,7 @@ packages: @@ -46,7 +46,7 @@ packages:
46 description: 46 description:
47 name: boolean_selector 47 name: boolean_selector
48 sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea" 48 sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
49 - url: "https://pub.dev" 49 + url: "https://pub.flutter-io.cn"
50 source: hosted 50 source: hosted
51 version: "2.1.2" 51 version: "2.1.2"
52 build: 52 build:
@@ -54,7 +54,7 @@ packages: @@ -54,7 +54,7 @@ packages:
54 description: 54 description:
55 name: build 55 name: build
56 sha256: "825fed4d63050252a0b6e74f2d75844c4a85b664814be6993bd3493fb5239779" 56 sha256: "825fed4d63050252a0b6e74f2d75844c4a85b664814be6993bd3493fb5239779"
57 - url: "https://pub.dev" 57 + url: "https://pub.flutter-io.cn"
58 source: hosted 58 source: hosted
59 version: "4.0.1" 59 version: "4.0.1"
60 build_config: 60 build_config:
@@ -62,7 +62,7 @@ packages: @@ -62,7 +62,7 @@ packages:
62 description: 62 description:
63 name: build_config 63 name: build_config
64 sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187" 64 sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187"
65 - url: "https://pub.dev" 65 + url: "https://pub.flutter-io.cn"
66 source: hosted 66 source: hosted
67 version: "1.2.0" 67 version: "1.2.0"
68 build_daemon: 68 build_daemon:
@@ -70,7 +70,7 @@ packages: @@ -70,7 +70,7 @@ packages:
70 description: 70 description:
71 name: build_daemon 71 name: build_daemon
72 sha256: fd754058c342243718d5171a95f352cfc9fcf0cba8cfa26df67cb13a5836db78 72 sha256: fd754058c342243718d5171a95f352cfc9fcf0cba8cfa26df67cb13a5836db78
73 - url: "https://pub.dev" 73 + url: "https://pub.flutter-io.cn"
74 source: hosted 74 source: hosted
75 version: "4.1.2" 75 version: "4.1.2"
76 build_runner: 76 build_runner:
@@ -78,7 +78,7 @@ packages: @@ -78,7 +78,7 @@ packages:
78 description: 78 description:
79 name: build_runner 79 name: build_runner
80 sha256: "4e54dbeefdc70691ba80b3bce3976af63b5425c8c07dface348dfee664a0edc1" 80 sha256: "4e54dbeefdc70691ba80b3bce3976af63b5425c8c07dface348dfee664a0edc1"
81 - url: "https://pub.dev" 81 + url: "https://pub.flutter-io.cn"
82 source: hosted 82 source: hosted
83 version: "2.9.0" 83 version: "2.9.0"
84 built_collection: 84 built_collection:
@@ -86,7 +86,7 @@ packages: @@ -86,7 +86,7 @@ packages:
86 description: 86 description:
87 name: built_collection 87 name: built_collection
88 sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100" 88 sha256: "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100"
89 - url: "https://pub.dev" 89 + url: "https://pub.flutter-io.cn"
90 source: hosted 90 source: hosted
91 version: "5.1.1" 91 version: "5.1.1"
92 built_value: 92 built_value:
@@ -94,7 +94,7 @@ packages: @@ -94,7 +94,7 @@ packages:
94 description: 94 description:
95 name: built_value 95 name: built_value
96 sha256: "31b24be6615ec7fcf70b3aa5a7469fe35826485e639a16dd7eb83ba30e4cc6a8" 96 sha256: "31b24be6615ec7fcf70b3aa5a7469fe35826485e639a16dd7eb83ba30e4cc6a8"
97 - url: "https://pub.dev" 97 + url: "https://pub.flutter-io.cn"
98 source: hosted 98 source: hosted
99 version: "8.12.7" 99 version: "8.12.7"
100 cached_network_image: 100 cached_network_image:
@@ -102,7 +102,7 @@ packages: @@ -102,7 +102,7 @@ packages:
102 description: 102 description:
103 name: cached_network_image 103 name: cached_network_image
104 sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916" 104 sha256: "7c1183e361e5c8b0a0f21a28401eecdbde252441106a9816400dd4c2b2424916"
105 - url: "https://pub.dev" 105 + url: "https://pub.flutter-io.cn"
106 source: hosted 106 source: hosted
107 version: "3.4.1" 107 version: "3.4.1"
108 cached_network_image_platform_interface: 108 cached_network_image_platform_interface:
@@ -110,7 +110,7 @@ packages: @@ -110,7 +110,7 @@ packages:
110 description: 110 description:
111 name: cached_network_image_platform_interface 111 name: cached_network_image_platform_interface
112 sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829" 112 sha256: "35814b016e37fbdc91f7ae18c8caf49ba5c88501813f73ce8a07027a395e2829"
113 - url: "https://pub.dev" 113 + url: "https://pub.flutter-io.cn"
114 source: hosted 114 source: hosted
115 version: "4.1.1" 115 version: "4.1.1"
116 cached_network_image_web: 116 cached_network_image_web:
@@ -118,7 +118,7 @@ packages: @@ -118,7 +118,7 @@ packages:
118 description: 118 description:
119 name: cached_network_image_web 119 name: cached_network_image_web
120 sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062" 120 sha256: "980842f4e8e2535b8dbd3d5ca0b1f0ba66bf61d14cc3a17a9b4788a3685ba062"
121 - url: "https://pub.dev" 121 + url: "https://pub.flutter-io.cn"
122 source: hosted 122 source: hosted
123 version: "1.3.1" 123 version: "1.3.1"
124 characters: 124 characters:
@@ -126,7 +126,7 @@ packages: @@ -126,7 +126,7 @@ packages:
126 description: 126 description:
127 name: characters 127 name: characters
128 sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 128 sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
129 - url: "https://pub.dev" 129 + url: "https://pub.flutter-io.cn"
130 source: hosted 130 source: hosted
131 version: "1.4.0" 131 version: "1.4.0"
132 checked_yaml: 132 checked_yaml:
@@ -134,7 +134,7 @@ packages: @@ -134,7 +134,7 @@ packages:
134 description: 134 description:
135 name: checked_yaml 135 name: checked_yaml
136 sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f" 136 sha256: "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f"
137 - url: "https://pub.dev" 137 + url: "https://pub.flutter-io.cn"
138 source: hosted 138 source: hosted
139 version: "2.0.4" 139 version: "2.0.4"
140 clock: 140 clock:
@@ -142,7 +142,7 @@ packages: @@ -142,7 +142,7 @@ packages:
142 description: 142 description:
143 name: clock 143 name: clock
144 sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b 144 sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
145 - url: "https://pub.dev" 145 + url: "https://pub.flutter-io.cn"
146 source: hosted 146 source: hosted
147 version: "1.1.2" 147 version: "1.1.2"
148 code_assets: 148 code_assets:
@@ -150,7 +150,7 @@ packages: @@ -150,7 +150,7 @@ packages:
150 description: 150 description:
151 name: code_assets 151 name: code_assets
152 sha256: cfd4f5f575a49c5f10ca856e9846073f1e6c3ee94912377eea5f6cefc5272941 152 sha256: cfd4f5f575a49c5f10ca856e9846073f1e6c3ee94912377eea5f6cefc5272941
153 - url: "https://pub.dev" 153 + url: "https://pub.flutter-io.cn"
154 source: hosted 154 source: hosted
155 version: "2.0.0" 155 version: "2.0.0"
156 code_builder: 156 code_builder:
@@ -158,7 +158,7 @@ packages: @@ -158,7 +158,7 @@ packages:
158 description: 158 description:
159 name: code_builder 159 name: code_builder
160 sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d" 160 sha256: "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d"
161 - url: "https://pub.dev" 161 + url: "https://pub.flutter-io.cn"
162 source: hosted 162 source: hosted
163 version: "4.11.1" 163 version: "4.11.1"
164 collection: 164 collection:
@@ -166,7 +166,7 @@ packages: @@ -166,7 +166,7 @@ packages:
166 description: 166 description:
167 name: collection 167 name: collection
168 sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76" 168 sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
169 - url: "https://pub.dev" 169 + url: "https://pub.flutter-io.cn"
170 source: hosted 170 source: hosted
171 version: "1.19.1" 171 version: "1.19.1"
172 convert: 172 convert:
@@ -174,7 +174,7 @@ packages: @@ -174,7 +174,7 @@ packages:
174 description: 174 description:
175 name: convert 175 name: convert
176 sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68 176 sha256: b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68
177 - url: "https://pub.dev" 177 + url: "https://pub.flutter-io.cn"
178 source: hosted 178 source: hosted
179 version: "3.1.2" 179 version: "3.1.2"
180 cross_file: 180 cross_file:
@@ -182,7 +182,7 @@ packages: @@ -182,7 +182,7 @@ packages:
182 description: 182 description:
183 name: cross_file 183 name: cross_file
184 sha256: "92c9c43c383bfa1c32079d3bc492d55d6d4318044b7b47edaff8971cbb555c51" 184 sha256: "92c9c43c383bfa1c32079d3bc492d55d6d4318044b7b47edaff8971cbb555c51"
185 - url: "https://pub.dev" 185 + url: "https://pub.flutter-io.cn"
186 source: hosted 186 source: hosted
187 version: "0.3.5+4" 187 version: "0.3.5+4"
188 crypto: 188 crypto:
@@ -190,7 +190,7 @@ packages: @@ -190,7 +190,7 @@ packages:
190 description: 190 description:
191 name: crypto 191 name: crypto
192 sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf 192 sha256: c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf
193 - url: "https://pub.dev" 193 + url: "https://pub.flutter-io.cn"
194 source: hosted 194 source: hosted
195 version: "3.0.7" 195 version: "3.0.7"
196 cupertino_icons: 196 cupertino_icons:
@@ -198,7 +198,7 @@ packages: @@ -198,7 +198,7 @@ packages:
198 description: 198 description:
199 name: cupertino_icons 199 name: cupertino_icons
200 sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd" 200 sha256: "41e005c33bd814be4d3096aff55b1908d419fde52ca656c8c47719ec745873cd"
201 - url: "https://pub.dev" 201 + url: "https://pub.flutter-io.cn"
202 source: hosted 202 source: hosted
203 version: "1.0.9" 203 version: "1.0.9"
204 dart_style: 204 dart_style:
@@ -206,7 +206,7 @@ packages: @@ -206,7 +206,7 @@ packages:
206 description: 206 description:
207 name: dart_style 207 name: dart_style
208 sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb" 208 sha256: "8a0e5fba27e8ee025d2ffb4ee820b4e6e2cf5e4246a6b1a477eb66866947e0bb"
209 - url: "https://pub.dev" 209 + url: "https://pub.flutter-io.cn"
210 source: hosted 210 source: hosted
211 version: "3.1.1" 211 version: "3.1.1"
212 dio: 212 dio:
@@ -214,7 +214,7 @@ packages: @@ -214,7 +214,7 @@ packages:
214 description: 214 description:
215 name: dio 215 name: dio
216 sha256: "0df44ebba85e503958eb75d07eedd3c86275a58c1d3eda2f2ce8f0a2c3abbb3c" 216 sha256: "0df44ebba85e503958eb75d07eedd3c86275a58c1d3eda2f2ce8f0a2c3abbb3c"
217 - url: "https://pub.dev" 217 + url: "https://pub.flutter-io.cn"
218 source: hosted 218 source: hosted
219 version: "5.11.0" 219 version: "5.11.0"
220 dio_web_adapter: 220 dio_web_adapter:
@@ -222,7 +222,7 @@ packages: @@ -222,7 +222,7 @@ packages:
222 description: 222 description:
223 name: dio_web_adapter 223 name: dio_web_adapter
224 sha256: "0786d0b7295a373de356fc0af4f6f1d0ab2844ed31b19dfc5e7556b70e24212c" 224 sha256: "0786d0b7295a373de356fc0af4f6f1d0ab2844ed31b19dfc5e7556b70e24212c"
225 - url: "https://pub.dev" 225 + url: "https://pub.flutter-io.cn"
226 source: hosted 226 source: hosted
227 version: "2.2.1" 227 version: "2.2.1"
228 equatable: 228 equatable:
@@ -230,7 +230,7 @@ packages: @@ -230,7 +230,7 @@ packages:
230 description: 230 description:
231 name: equatable 231 name: equatable
232 sha256: "3bce007a596ff8b3119c45d68aaef631272537c03d30e5d4534dd24bf4c5eaa2" 232 sha256: "3bce007a596ff8b3119c45d68aaef631272537c03d30e5d4534dd24bf4c5eaa2"
233 - url: "https://pub.dev" 233 + url: "https://pub.flutter-io.cn"
234 source: hosted 234 source: hosted
235 version: "2.1.0" 235 version: "2.1.0"
236 fake_async: 236 fake_async:
@@ -238,7 +238,7 @@ packages: @@ -238,7 +238,7 @@ packages:
238 description: 238 description:
239 name: fake_async 239 name: fake_async
240 sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44" 240 sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
241 - url: "https://pub.dev" 241 + url: "https://pub.flutter-io.cn"
242 source: hosted 242 source: hosted
243 version: "1.3.3" 243 version: "1.3.3"
244 ffi: 244 ffi:
@@ -246,7 +246,7 @@ packages: @@ -246,7 +246,7 @@ packages:
246 description: 246 description:
247 name: ffi 247 name: ffi
248 sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45" 248 sha256: "6d7fd89431262d8f3125e81b50d3847a091d846eafcd4fdb88dd06f36d705a45"
249 - url: "https://pub.dev" 249 + url: "https://pub.flutter-io.cn"
250 source: hosted 250 source: hosted
251 version: "2.2.0" 251 version: "2.2.0"
252 file: 252 file:
@@ -254,7 +254,7 @@ packages: @@ -254,7 +254,7 @@ packages:
254 description: 254 description:
255 name: file 255 name: file
256 sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4 256 sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
257 - url: "https://pub.dev" 257 + url: "https://pub.flutter-io.cn"
258 source: hosted 258 source: hosted
259 version: "7.0.1" 259 version: "7.0.1"
260 file_selector_linux: 260 file_selector_linux:
@@ -262,7 +262,7 @@ packages: @@ -262,7 +262,7 @@ packages:
262 description: 262 description:
263 name: file_selector_linux 263 name: file_selector_linux
264 sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0" 264 sha256: "2567f398e06ac72dcf2e98a0c95df2a9edd03c2c2e0cacd4780f20cdf56263a0"
265 - url: "https://pub.dev" 265 + url: "https://pub.flutter-io.cn"
266 source: hosted 266 source: hosted
267 version: "0.9.4" 267 version: "0.9.4"
268 file_selector_macos: 268 file_selector_macos:
@@ -270,7 +270,7 @@ packages: @@ -270,7 +270,7 @@ packages:
270 description: 270 description:
271 name: file_selector_macos 271 name: file_selector_macos
272 sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a" 272 sha256: "5e0bbe9c312416f1787a68259ea1505b52f258c587f12920422671807c4d618a"
273 - url: "https://pub.dev" 273 + url: "https://pub.flutter-io.cn"
274 source: hosted 274 source: hosted
275 version: "0.9.5" 275 version: "0.9.5"
276 file_selector_platform_interface: 276 file_selector_platform_interface:
@@ -278,7 +278,7 @@ packages: @@ -278,7 +278,7 @@ packages:
278 description: 278 description:
279 name: file_selector_platform_interface 279 name: file_selector_platform_interface
280 sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85" 280 sha256: "35e0bd61ebcdb91a3505813b055b09b79dfdc7d0aee9c09a7ba59ae4bb13dc85"
281 - url: "https://pub.dev" 281 + url: "https://pub.flutter-io.cn"
282 source: hosted 282 source: hosted
283 version: "2.7.0" 283 version: "2.7.0"
284 file_selector_windows: 284 file_selector_windows:
@@ -286,7 +286,7 @@ packages: @@ -286,7 +286,7 @@ packages:
286 description: 286 description:
287 name: file_selector_windows 287 name: file_selector_windows
288 sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd" 288 sha256: "62197474ae75893a62df75939c777763d39c2bc5f73ce5b88497208bc269abfd"
289 - url: "https://pub.dev" 289 + url: "https://pub.flutter-io.cn"
290 source: hosted 290 source: hosted
291 version: "0.9.3+5" 291 version: "0.9.3+5"
292 fixnum: 292 fixnum:
@@ -294,7 +294,7 @@ packages: @@ -294,7 +294,7 @@ packages:
294 description: 294 description:
295 name: fixnum 295 name: fixnum
296 sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be 296 sha256: b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be
297 - url: "https://pub.dev" 297 + url: "https://pub.flutter-io.cn"
298 source: hosted 298 source: hosted
299 version: "1.1.1" 299 version: "1.1.1"
300 fl_chart: 300 fl_chart:
@@ -302,7 +302,7 @@ packages: @@ -302,7 +302,7 @@ packages:
302 description: 302 description:
303 name: fl_chart 303 name: fl_chart
304 sha256: "5276944c6ffc975ae796569a826c38a62d2abcf264e26b88fa6f482e107f4237" 304 sha256: "5276944c6ffc975ae796569a826c38a62d2abcf264e26b88fa6f482e107f4237"
305 - url: "https://pub.dev" 305 + url: "https://pub.flutter-io.cn"
306 source: hosted 306 source: hosted
307 version: "0.70.2" 307 version: "0.70.2"
308 flutter: 308 flutter:
@@ -315,7 +315,7 @@ packages: @@ -315,7 +315,7 @@ packages:
315 description: 315 description:
316 name: flutter_cache_manager 316 name: flutter_cache_manager
317 sha256: "1de7849213b4c73c85aca7e0ac687a9a5d82ccdb594366b9dcc26cb6a2189cd2" 317 sha256: "1de7849213b4c73c85aca7e0ac687a9a5d82ccdb594366b9dcc26cb6a2189cd2"
318 - url: "https://pub.dev" 318 + url: "https://pub.flutter-io.cn"
319 source: hosted 319 source: hosted
320 version: "3.4.2" 320 version: "3.4.2"
321 flutter_lints: 321 flutter_lints:
@@ -323,7 +323,7 @@ packages: @@ -323,7 +323,7 @@ packages:
323 description: 323 description:
324 name: flutter_lints 324 name: flutter_lints
325 sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1" 325 sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
326 - url: "https://pub.dev" 326 + url: "https://pub.flutter-io.cn"
327 source: hosted 327 source: hosted
328 version: "5.0.0" 328 version: "5.0.0"
329 flutter_localizations: 329 flutter_localizations:
@@ -336,7 +336,7 @@ packages: @@ -336,7 +336,7 @@ packages:
336 description: 336 description:
337 name: flutter_plugin_android_lifecycle 337 name: flutter_plugin_android_lifecycle
338 sha256: "3854fe5e3bff0b113c658f260b90c95dea17c92db0f2addeac2e343dd9969785" 338 sha256: "3854fe5e3bff0b113c658f260b90c95dea17c92db0f2addeac2e343dd9969785"
339 - url: "https://pub.dev" 339 + url: "https://pub.flutter-io.cn"
340 source: hosted 340 source: hosted
341 version: "2.0.35" 341 version: "2.0.35"
342 flutter_test: 342 flutter_test:
@@ -349,7 +349,7 @@ packages: @@ -349,7 +349,7 @@ packages:
349 description: 349 description:
350 name: flutter_timezone 350 name: flutter_timezone
351 sha256: "869677426fde92dbe170fb7d2d4929f2a8343c2f5f62f08b0bb64f908630b073" 351 sha256: "869677426fde92dbe170fb7d2d4929f2a8343c2f5f62f08b0bb64f908630b073"
352 - url: "https://pub.dev" 352 + url: "https://pub.flutter-io.cn"
353 source: hosted 353 source: hosted
354 version: "5.1.0" 354 version: "5.1.0"
355 flutter_web_plugins: 355 flutter_web_plugins:
@@ -362,7 +362,7 @@ packages: @@ -362,7 +362,7 @@ packages:
362 description: 362 description:
363 name: fluttertoast 363 name: fluttertoast
364 sha256: "90778fe0497fe3a09166e8cf2e0867310ff434b794526589e77ec03cf08ba8e8" 364 sha256: "90778fe0497fe3a09166e8cf2e0867310ff434b794526589e77ec03cf08ba8e8"
365 - url: "https://pub.dev" 365 + url: "https://pub.flutter-io.cn"
366 source: hosted 366 source: hosted
367 version: "8.2.14" 367 version: "8.2.14"
368 get: 368 get:
@@ -370,7 +370,7 @@ packages: @@ -370,7 +370,7 @@ packages:
370 description: 370 description:
371 name: get 371 name: get
372 sha256: "5ed34a7925b85336e15d472cc4cfe7d9ebf4ab8e8b9f688585bf6b50f4c3d79a" 372 sha256: "5ed34a7925b85336e15d472cc4cfe7d9ebf4ab8e8b9f688585bf6b50f4c3d79a"
373 - url: "https://pub.dev" 373 + url: "https://pub.flutter-io.cn"
374 source: hosted 374 source: hosted
375 version: "4.7.3" 375 version: "4.7.3"
376 glob: 376 glob:
@@ -378,7 +378,7 @@ packages: @@ -378,7 +378,7 @@ packages:
378 description: 378 description:
379 name: glob 379 name: glob
380 sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de 380 sha256: c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de
381 - url: "https://pub.dev" 381 + url: "https://pub.flutter-io.cn"
382 source: hosted 382 source: hosted
383 version: "2.1.3" 383 version: "2.1.3"
384 graphs: 384 graphs:
@@ -386,7 +386,7 @@ packages: @@ -386,7 +386,7 @@ packages:
386 description: 386 description:
387 name: graphs 387 name: graphs
388 sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" 388 sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0"
389 - url: "https://pub.dev" 389 + url: "https://pub.flutter-io.cn"
390 source: hosted 390 source: hosted
391 version: "2.3.2" 391 version: "2.3.2"
392 hooks: 392 hooks:
@@ -394,7 +394,7 @@ packages: @@ -394,7 +394,7 @@ packages:
394 description: 394 description:
395 name: hooks 395 name: hooks
396 sha256: eaac480a35ec0814146c2c48d96aaa829e0e44a7662c88ae84c9edf4bc35651f 396 sha256: eaac480a35ec0814146c2c48d96aaa829e0e44a7662c88ae84c9edf4bc35651f
397 - url: "https://pub.dev" 397 + url: "https://pub.flutter-io.cn"
398 source: hosted 398 source: hosted
399 version: "2.2.0" 399 version: "2.2.0"
400 http: 400 http:
@@ -402,7 +402,7 @@ packages: @@ -402,7 +402,7 @@ packages:
402 description: 402 description:
403 name: http 403 name: http
404 sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" 404 sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
405 - url: "https://pub.dev" 405 + url: "https://pub.flutter-io.cn"
406 source: hosted 406 source: hosted
407 version: "1.6.0" 407 version: "1.6.0"
408 http_multi_server: 408 http_multi_server:
@@ -410,7 +410,7 @@ packages: @@ -410,7 +410,7 @@ packages:
410 description: 410 description:
411 name: http_multi_server 411 name: http_multi_server
412 sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 412 sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8
413 - url: "https://pub.dev" 413 + url: "https://pub.flutter-io.cn"
414 source: hosted 414 source: hosted
415 version: "3.2.2" 415 version: "3.2.2"
416 http_parser: 416 http_parser:
@@ -418,7 +418,7 @@ packages: @@ -418,7 +418,7 @@ packages:
418 description: 418 description:
419 name: http_parser 419 name: http_parser
420 sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" 420 sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
421 - url: "https://pub.dev" 421 + url: "https://pub.flutter-io.cn"
422 source: hosted 422 source: hosted
423 version: "4.1.2" 423 version: "4.1.2"
424 image_cropper: 424 image_cropper:
@@ -426,7 +426,7 @@ packages: @@ -426,7 +426,7 @@ packages:
426 description: 426 description:
427 name: image_cropper 427 name: image_cropper
428 sha256: "4e9c96c029eb5a23798da1b6af39787f964da6ffc78fd8447c140542a9f7c6fc" 428 sha256: "4e9c96c029eb5a23798da1b6af39787f964da6ffc78fd8447c140542a9f7c6fc"
429 - url: "https://pub.dev" 429 + url: "https://pub.flutter-io.cn"
430 source: hosted 430 source: hosted
431 version: "9.1.0" 431 version: "9.1.0"
432 image_cropper_for_web: 432 image_cropper_for_web:
@@ -434,7 +434,7 @@ packages: @@ -434,7 +434,7 @@ packages:
434 description: 434 description:
435 name: image_cropper_for_web 435 name: image_cropper_for_web
436 sha256: fd81ebe36f636576094377aab32673c4e5d1609b32dec16fad98d2b71f1250a9 436 sha256: fd81ebe36f636576094377aab32673c4e5d1609b32dec16fad98d2b71f1250a9
437 - url: "https://pub.dev" 437 + url: "https://pub.flutter-io.cn"
438 source: hosted 438 source: hosted
439 version: "6.1.0" 439 version: "6.1.0"
440 image_cropper_platform_interface: 440 image_cropper_platform_interface:
@@ -442,7 +442,7 @@ packages: @@ -442,7 +442,7 @@ packages:
442 description: 442 description:
443 name: image_cropper_platform_interface 443 name: image_cropper_platform_interface
444 sha256: "6ca6b81769abff9a4dcc3bbd3d75f5dfa9de6b870ae9613c8cd237333a4283af" 444 sha256: "6ca6b81769abff9a4dcc3bbd3d75f5dfa9de6b870ae9613c8cd237333a4283af"
445 - url: "https://pub.dev" 445 + url: "https://pub.flutter-io.cn"
446 source: hosted 446 source: hosted
447 version: "7.1.0" 447 version: "7.1.0"
448 image_picker: 448 image_picker:
@@ -450,7 +450,7 @@ packages: @@ -450,7 +450,7 @@ packages:
450 description: 450 description:
451 name: image_picker 451 name: image_picker
452 sha256: d8402284df184bc05f4a2210c6c23983b0720f4cd87cbd05c5390a78af602667 452 sha256: d8402284df184bc05f4a2210c6c23983b0720f4cd87cbd05c5390a78af602667
453 - url: "https://pub.dev" 453 + url: "https://pub.flutter-io.cn"
454 source: hosted 454 source: hosted
455 version: "1.2.3" 455 version: "1.2.3"
456 image_picker_android: 456 image_picker_android:
@@ -458,7 +458,7 @@ packages: @@ -458,7 +458,7 @@ packages:
458 description: 458 description:
459 name: image_picker_android 459 name: image_picker_android
460 sha256: d5b3e1774af29c9ab00103afb0d4614070f924d2e0057ac867ec98800114793f 460 sha256: d5b3e1774af29c9ab00103afb0d4614070f924d2e0057ac867ec98800114793f
461 - url: "https://pub.dev" 461 + url: "https://pub.flutter-io.cn"
462 source: hosted 462 source: hosted
463 version: "0.8.13+17" 463 version: "0.8.13+17"
464 image_picker_for_web: 464 image_picker_for_web:
@@ -466,7 +466,7 @@ packages: @@ -466,7 +466,7 @@ packages:
466 description: 466 description:
467 name: image_picker_for_web 467 name: image_picker_for_web
468 sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214" 468 sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214"
469 - url: "https://pub.dev" 469 + url: "https://pub.flutter-io.cn"
470 source: hosted 470 source: hosted
471 version: "3.1.1" 471 version: "3.1.1"
472 image_picker_ios: 472 image_picker_ios:
@@ -474,7 +474,7 @@ packages: @@ -474,7 +474,7 @@ packages:
474 description: 474 description:
475 name: image_picker_ios 475 name: image_picker_ios
476 sha256: b9c4a438a9ff4f60808c9cf0039b93a42bb6c2211ef6ebb647394b2b3fa84588 476 sha256: b9c4a438a9ff4f60808c9cf0039b93a42bb6c2211ef6ebb647394b2b3fa84588
477 - url: "https://pub.dev" 477 + url: "https://pub.flutter-io.cn"
478 source: hosted 478 source: hosted
479 version: "0.8.13+6" 479 version: "0.8.13+6"
480 image_picker_linux: 480 image_picker_linux:
@@ -482,7 +482,7 @@ packages: @@ -482,7 +482,7 @@ packages:
482 description: 482 description:
483 name: image_picker_linux 483 name: image_picker_linux
484 sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" 484 sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4"
485 - url: "https://pub.dev" 485 + url: "https://pub.flutter-io.cn"
486 source: hosted 486 source: hosted
487 version: "0.2.2" 487 version: "0.2.2"
488 image_picker_macos: 488 image_picker_macos:
@@ -490,7 +490,7 @@ packages: @@ -490,7 +490,7 @@ packages:
490 description: 490 description:
491 name: image_picker_macos 491 name: image_picker_macos
492 sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" 492 sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91"
493 - url: "https://pub.dev" 493 + url: "https://pub.flutter-io.cn"
494 source: hosted 494 source: hosted
495 version: "0.2.2+1" 495 version: "0.2.2+1"
496 image_picker_ohos: 496 image_picker_ohos:
@@ -507,7 +507,7 @@ packages: @@ -507,7 +507,7 @@ packages:
507 description: 507 description:
508 name: image_picker_platform_interface 508 name: image_picker_platform_interface
509 sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" 509 sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c"
510 - url: "https://pub.dev" 510 + url: "https://pub.flutter-io.cn"
511 source: hosted 511 source: hosted
512 version: "2.11.1" 512 version: "2.11.1"
513 image_picker_windows: 513 image_picker_windows:
@@ -515,7 +515,7 @@ packages: @@ -515,7 +515,7 @@ packages:
515 description: 515 description:
516 name: image_picker_windows 516 name: image_picker_windows
517 sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae 517 sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae
518 - url: "https://pub.dev" 518 + url: "https://pub.flutter-io.cn"
519 source: hosted 519 source: hosted
520 version: "0.2.2" 520 version: "0.2.2"
521 intl: 521 intl:
@@ -523,7 +523,7 @@ packages: @@ -523,7 +523,7 @@ packages:
523 description: 523 description:
524 name: intl 524 name: intl
525 sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" 525 sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5"
526 - url: "https://pub.dev" 526 + url: "https://pub.flutter-io.cn"
527 source: hosted 527 source: hosted
528 version: "0.20.2" 528 version: "0.20.2"
529 io: 529 io:
@@ -531,7 +531,7 @@ packages: @@ -531,7 +531,7 @@ packages:
531 description: 531 description:
532 name: io 532 name: io
533 sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b 533 sha256: dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b
534 - url: "https://pub.dev" 534 + url: "https://pub.flutter-io.cn"
535 source: hosted 535 source: hosted
536 version: "1.0.5" 536 version: "1.0.5"
537 jni: 537 jni:
@@ -539,7 +539,7 @@ packages: @@ -539,7 +539,7 @@ packages:
539 description: 539 description:
540 name: jni 540 name: jni
541 sha256: f038e58b4dc2c9037f50e233175086337e0b305e356d28211bf55f21c504cbd3 541 sha256: f038e58b4dc2c9037f50e233175086337e0b305e356d28211bf55f21c504cbd3
542 - url: "https://pub.dev" 542 + url: "https://pub.flutter-io.cn"
543 source: hosted 543 source: hosted
544 version: "1.0.3" 544 version: "1.0.3"
545 jni_flutter: 545 jni_flutter:
@@ -547,7 +547,7 @@ packages: @@ -547,7 +547,7 @@ packages:
547 description: 547 description:
548 name: jni_flutter 548 name: jni_flutter
549 sha256: "7b717011ea40d04fd47c2731d3d1d36eb99eba3435c2753d62489e8c3c9991d5" 549 sha256: "7b717011ea40d04fd47c2731d3d1d36eb99eba3435c2753d62489e8c3c9991d5"
550 - url: "https://pub.dev" 550 + url: "https://pub.flutter-io.cn"
551 source: hosted 551 source: hosted
552 version: "1.0.2" 552 version: "1.0.2"
553 jni_util: 553 jni_util:
@@ -555,7 +555,7 @@ packages: @@ -555,7 +555,7 @@ packages:
555 description: 555 description:
556 name: jni_util 556 name: jni_util
557 sha256: "1ba86da04a5f2bf18fde2edb235587e70c5b0fc5bd4ba955f46b00942c3fc35f" 557 sha256: "1ba86da04a5f2bf18fde2edb235587e70c5b0fc5bd4ba955f46b00942c3fc35f"
558 - url: "https://pub.dev" 558 + url: "https://pub.flutter-io.cn"
559 source: hosted 559 source: hosted
560 version: "1.0.0" 560 version: "1.0.0"
561 json_annotation: 561 json_annotation:
@@ -563,7 +563,7 @@ packages: @@ -563,7 +563,7 @@ packages:
563 description: 563 description:
564 name: json_annotation 564 name: json_annotation
565 sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80" 565 sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80"
566 - url: "https://pub.dev" 566 + url: "https://pub.flutter-io.cn"
567 source: hosted 567 source: hosted
568 version: "4.12.0" 568 version: "4.12.0"
569 leak_tracker: 569 leak_tracker:
@@ -571,7 +571,7 @@ packages: @@ -571,7 +571,7 @@ packages:
571 description: 571 description:
572 name: leak_tracker 572 name: leak_tracker
573 sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" 573 sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
574 - url: "https://pub.dev" 574 + url: "https://pub.flutter-io.cn"
575 source: hosted 575 source: hosted
576 version: "11.0.2" 576 version: "11.0.2"
577 leak_tracker_flutter_testing: 577 leak_tracker_flutter_testing:
@@ -579,7 +579,7 @@ packages: @@ -579,7 +579,7 @@ packages:
579 description: 579 description:
580 name: leak_tracker_flutter_testing 580 name: leak_tracker_flutter_testing
581 sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" 581 sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
582 - url: "https://pub.dev" 582 + url: "https://pub.flutter-io.cn"
583 source: hosted 583 source: hosted
584 version: "3.0.10" 584 version: "3.0.10"
585 leak_tracker_testing: 585 leak_tracker_testing:
@@ -587,7 +587,7 @@ packages: @@ -587,7 +587,7 @@ packages:
587 description: 587 description:
588 name: leak_tracker_testing 588 name: leak_tracker_testing
589 sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" 589 sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
590 - url: "https://pub.dev" 590 + url: "https://pub.flutter-io.cn"
591 source: hosted 591 source: hosted
592 version: "3.0.2" 592 version: "3.0.2"
593 lints: 593 lints:
@@ -595,7 +595,7 @@ packages: @@ -595,7 +595,7 @@ packages:
595 description: 595 description:
596 name: lints 596 name: lints
597 sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 597 sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
598 - url: "https://pub.dev" 598 + url: "https://pub.flutter-io.cn"
599 source: hosted 599 source: hosted
600 version: "5.1.1" 600 version: "5.1.1"
601 logger: 601 logger:
@@ -603,7 +603,7 @@ packages: @@ -603,7 +603,7 @@ packages:
603 description: 603 description:
604 name: logger 604 name: logger
605 sha256: "25aee487596a6257655a1e091ec2ae66bc30e7af663592cc3a27e6591e05035c" 605 sha256: "25aee487596a6257655a1e091ec2ae66bc30e7af663592cc3a27e6591e05035c"
606 - url: "https://pub.dev" 606 + url: "https://pub.flutter-io.cn"
607 source: hosted 607 source: hosted
608 version: "2.7.0" 608 version: "2.7.0"
609 logging: 609 logging:
@@ -611,7 +611,7 @@ packages: @@ -611,7 +611,7 @@ packages:
611 description: 611 description:
612 name: logging 612 name: logging
613 sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 613 sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61
614 - url: "https://pub.dev" 614 + url: "https://pub.flutter-io.cn"
615 source: hosted 615 source: hosted
616 version: "1.3.0" 616 version: "1.3.0"
617 lottie: 617 lottie:
@@ -619,7 +619,7 @@ packages: @@ -619,7 +619,7 @@ packages:
619 description: 619 description:
620 name: lottie 620 name: lottie
621 sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950 621 sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950
622 - url: "https://pub.dev" 622 + url: "https://pub.flutter-io.cn"
623 source: hosted 623 source: hosted
624 version: "3.3.1" 624 version: "3.3.1"
625 matcher: 625 matcher:
@@ -627,7 +627,7 @@ packages: @@ -627,7 +627,7 @@ packages:
627 description: 627 description:
628 name: matcher 628 name: matcher
629 sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 629 sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
630 - url: "https://pub.dev" 630 + url: "https://pub.flutter-io.cn"
631 source: hosted 631 source: hosted
632 version: "0.12.17" 632 version: "0.12.17"
633 material_color_utilities: 633 material_color_utilities:
@@ -635,7 +635,7 @@ packages: @@ -635,7 +635,7 @@ packages:
635 description: 635 description:
636 name: material_color_utilities 636 name: material_color_utilities
637 sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec 637 sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
638 - url: "https://pub.dev" 638 + url: "https://pub.flutter-io.cn"
639 source: hosted 639 source: hosted
640 version: "0.11.1" 640 version: "0.11.1"
641 meta: 641 meta:
@@ -643,7 +643,7 @@ packages: @@ -643,7 +643,7 @@ packages:
643 description: 643 description:
644 name: meta 644 name: meta
645 sha256: "307249ce4ff29d58a18e97f6345f539382eb9c9c29ecda628900f31de0443dd9" 645 sha256: "307249ce4ff29d58a18e97f6345f539382eb9c9c29ecda628900f31de0443dd9"
646 - url: "https://pub.dev" 646 + url: "https://pub.flutter-io.cn"
647 source: hosted 647 source: hosted
648 version: "1.19.0" 648 version: "1.19.0"
649 mime: 649 mime:
@@ -651,7 +651,7 @@ packages: @@ -651,7 +651,7 @@ packages:
651 description: 651 description:
652 name: mime 652 name: mime
653 sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6" 653 sha256: "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6"
654 - url: "https://pub.dev" 654 + url: "https://pub.flutter-io.cn"
655 source: hosted 655 source: hosted
656 version: "2.0.0" 656 version: "2.0.0"
657 objective_c: 657 objective_c:
@@ -659,7 +659,7 @@ packages: @@ -659,7 +659,7 @@ packages:
659 description: 659 description:
660 name: objective_c 660 name: objective_c
661 sha256: ad56fd53a78ff6b1472fa59ff2a4e8b8ccabafc586fc263a1dfad0b99b5553e3 661 sha256: ad56fd53a78ff6b1472fa59ff2a4e8b8ccabafc586fc263a1dfad0b99b5553e3
662 - url: "https://pub.dev" 662 + url: "https://pub.flutter-io.cn"
663 source: hosted 663 source: hosted
664 version: "9.6.0" 664 version: "9.6.0"
665 octo_image: 665 octo_image:
@@ -667,7 +667,7 @@ packages: @@ -667,7 +667,7 @@ packages:
667 description: 667 description:
668 name: octo_image 668 name: octo_image
669 sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" 669 sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd"
670 - url: "https://pub.dev" 670 + url: "https://pub.flutter-io.cn"
671 source: hosted 671 source: hosted
672 version: "2.1.0" 672 version: "2.1.0"
673 package_config: 673 package_config:
@@ -675,7 +675,7 @@ packages: @@ -675,7 +675,7 @@ packages:
675 description: 675 description:
676 name: package_config 676 name: package_config
677 sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc 677 sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc
678 - url: "https://pub.dev" 678 + url: "https://pub.flutter-io.cn"
679 source: hosted 679 source: hosted
680 version: "2.2.0" 680 version: "2.2.0"
681 path: 681 path:
@@ -683,7 +683,7 @@ packages: @@ -683,7 +683,7 @@ packages:
683 description: 683 description:
684 name: path 684 name: path
685 sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" 685 sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
686 - url: "https://pub.dev" 686 + url: "https://pub.flutter-io.cn"
687 source: hosted 687 source: hosted
688 version: "1.9.1" 688 version: "1.9.1"
689 path_provider: 689 path_provider:
@@ -691,7 +691,7 @@ packages: @@ -691,7 +691,7 @@ packages:
691 description: 691 description:
692 name: path_provider 692 name: path_provider
693 sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd" 693 sha256: "50c5dd5b6e1aaf6fb3a78b33f6aa3afca52bf903a8a5298f53101fdaee55bbcd"
694 - url: "https://pub.dev" 694 + url: "https://pub.flutter-io.cn"
695 source: hosted 695 source: hosted
696 version: "2.1.5" 696 version: "2.1.5"
697 path_provider_android: 697 path_provider_android:
@@ -699,7 +699,7 @@ packages: @@ -699,7 +699,7 @@ packages:
699 description: 699 description:
700 name: path_provider_android 700 name: path_provider_android
701 sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd" 701 sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd"
702 - url: "https://pub.dev" 702 + url: "https://pub.flutter-io.cn"
703 source: hosted 703 source: hosted
704 version: "2.3.1" 704 version: "2.3.1"
705 path_provider_foundation: 705 path_provider_foundation:
@@ -707,7 +707,7 @@ packages: @@ -707,7 +707,7 @@ packages:
707 description: 707 description:
708 name: path_provider_foundation 708 name: path_provider_foundation
709 sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699" 709 sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699"
710 - url: "https://pub.dev" 710 + url: "https://pub.flutter-io.cn"
711 source: hosted 711 source: hosted
712 version: "2.6.0" 712 version: "2.6.0"
713 path_provider_linux: 713 path_provider_linux:
@@ -715,7 +715,7 @@ packages: @@ -715,7 +715,7 @@ packages:
715 description: 715 description:
716 name: path_provider_linux 716 name: path_provider_linux
717 sha256: "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16" 717 sha256: "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16"
718 - url: "https://pub.dev" 718 + url: "https://pub.flutter-io.cn"
719 source: hosted 719 source: hosted
720 version: "2.2.2" 720 version: "2.2.2"
721 path_provider_platform_interface: 721 path_provider_platform_interface:
@@ -723,7 +723,7 @@ packages: @@ -723,7 +723,7 @@ packages:
723 description: 723 description:
724 name: path_provider_platform_interface 724 name: path_provider_platform_interface
725 sha256: "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda" 725 sha256: "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda"
726 - url: "https://pub.dev" 726 + url: "https://pub.flutter-io.cn"
727 source: hosted 727 source: hosted
728 version: "2.1.3" 728 version: "2.1.3"
729 path_provider_windows: 729 path_provider_windows:
@@ -731,7 +731,7 @@ packages: @@ -731,7 +731,7 @@ packages:
731 description: 731 description:
732 name: path_provider_windows 732 name: path_provider_windows
733 sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 733 sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7
734 - url: "https://pub.dev" 734 + url: "https://pub.flutter-io.cn"
735 source: hosted 735 source: hosted
736 version: "2.3.0" 736 version: "2.3.0"
737 permission_handler: 737 permission_handler:
@@ -739,7 +739,7 @@ packages: @@ -739,7 +739,7 @@ packages:
739 description: 739 description:
740 name: permission_handler 740 name: permission_handler
741 sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" 741 sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849"
742 - url: "https://pub.dev" 742 + url: "https://pub.flutter-io.cn"
743 source: hosted 743 source: hosted
744 version: "11.4.0" 744 version: "11.4.0"
745 permission_handler_android: 745 permission_handler_android:
@@ -747,7 +747,7 @@ packages: @@ -747,7 +747,7 @@ packages:
747 description: 747 description:
748 name: permission_handler_android 748 name: permission_handler_android
749 sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc 749 sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc
750 - url: "https://pub.dev" 750 + url: "https://pub.flutter-io.cn"
751 source: hosted 751 source: hosted
752 version: "12.1.0" 752 version: "12.1.0"
753 permission_handler_apple: 753 permission_handler_apple:
@@ -755,7 +755,7 @@ packages: @@ -755,7 +755,7 @@ packages:
755 description: 755 description:
756 name: permission_handler_apple 756 name: permission_handler_apple
757 sha256: f49cb15a064ea9d974fc7fbb302099353b7b170d07284e86e264561579e5bcf8 757 sha256: f49cb15a064ea9d974fc7fbb302099353b7b170d07284e86e264561579e5bcf8
758 - url: "https://pub.dev" 758 + url: "https://pub.flutter-io.cn"
759 source: hosted 759 source: hosted
760 version: "9.6.1" 760 version: "9.6.1"
761 permission_handler_html: 761 permission_handler_html:
@@ -763,7 +763,7 @@ packages: @@ -763,7 +763,7 @@ packages:
763 description: 763 description:
764 name: permission_handler_html 764 name: permission_handler_html
765 sha256: "6ea98b3f17f60d3b527f2647ed2ab4dc0f6bfe25b22cb1c363f5d8f62252f6ac" 765 sha256: "6ea98b3f17f60d3b527f2647ed2ab4dc0f6bfe25b22cb1c363f5d8f62252f6ac"
766 - url: "https://pub.dev" 766 + url: "https://pub.flutter-io.cn"
767 source: hosted 767 source: hosted
768 version: "0.1.4+1" 768 version: "0.1.4+1"
769 permission_handler_ohos: 769 permission_handler_ohos:
@@ -780,7 +780,7 @@ packages: @@ -780,7 +780,7 @@ packages:
780 description: 780 description:
781 name: permission_handler_platform_interface 781 name: permission_handler_platform_interface
782 sha256: a5c8a97ecf5616112a5b16d4b8e9ec0e5ae90ef63ac69c0d7b8ae240be760b23 782 sha256: a5c8a97ecf5616112a5b16d4b8e9ec0e5ae90ef63ac69c0d7b8ae240be760b23
783 - url: "https://pub.dev" 783 + url: "https://pub.flutter-io.cn"
784 source: hosted 784 source: hosted
785 version: "4.4.0" 785 version: "4.4.0"
786 permission_handler_windows: 786 permission_handler_windows:
@@ -788,7 +788,7 @@ packages: @@ -788,7 +788,7 @@ packages:
788 description: 788 description:
789 name: permission_handler_windows 789 name: permission_handler_windows
790 sha256: caeae01858a0a7d2df67a445ac98e1ad95e55a0e77c73044f4e9b1c8c2289cbd 790 sha256: caeae01858a0a7d2df67a445ac98e1ad95e55a0e77c73044f4e9b1c8c2289cbd
791 - url: "https://pub.dev" 791 + url: "https://pub.flutter-io.cn"
792 source: hosted 792 source: hosted
793 version: "0.2.2" 793 version: "0.2.2"
794 pigeon: 794 pigeon:
@@ -805,7 +805,7 @@ packages: @@ -805,7 +805,7 @@ packages:
805 description: 805 description:
806 name: platform 806 name: platform
807 sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984" 807 sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
808 - url: "https://pub.dev" 808 + url: "https://pub.flutter-io.cn"
809 source: hosted 809 source: hosted
810 version: "3.1.6" 810 version: "3.1.6"
811 plugin_platform_interface: 811 plugin_platform_interface:
@@ -813,7 +813,7 @@ packages: @@ -813,7 +813,7 @@ packages:
813 description: 813 description:
814 name: plugin_platform_interface 814 name: plugin_platform_interface
815 sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" 815 sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
816 - url: "https://pub.dev" 816 + url: "https://pub.flutter-io.cn"
817 source: hosted 817 source: hosted
818 version: "2.1.8" 818 version: "2.1.8"
819 pool: 819 pool:
@@ -821,7 +821,7 @@ packages: @@ -821,7 +821,7 @@ packages:
821 description: 821 description:
822 name: pool 822 name: pool
823 sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d" 823 sha256: "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d"
824 - url: "https://pub.dev" 824 + url: "https://pub.flutter-io.cn"
825 source: hosted 825 source: hosted
826 version: "1.5.2" 826 version: "1.5.2"
827 posix: 827 posix:
@@ -829,7 +829,7 @@ packages: @@ -829,7 +829,7 @@ packages:
829 description: 829 description:
830 name: posix 830 name: posix
831 sha256: bc1bad54ad2b735816e31f8d4600cfde6c7839975085ddfbca48b6c9f7c4044e 831 sha256: bc1bad54ad2b735816e31f8d4600cfde6c7839975085ddfbca48b6c9f7c4044e
832 - url: "https://pub.dev" 832 + url: "https://pub.flutter-io.cn"
833 source: hosted 833 source: hosted
834 version: "6.5.2" 834 version: "6.5.2"
835 pretty_dio_logger: 835 pretty_dio_logger:
@@ -837,7 +837,7 @@ packages: @@ -837,7 +837,7 @@ packages:
837 description: 837 description:
838 name: pretty_dio_logger 838 name: pretty_dio_logger
839 sha256: "36f2101299786d567869493e2f5731de61ce130faa14679473b26905a92b6407" 839 sha256: "36f2101299786d567869493e2f5731de61ce130faa14679473b26905a92b6407"
840 - url: "https://pub.dev" 840 + url: "https://pub.flutter-io.cn"
841 source: hosted 841 source: hosted
842 version: "1.4.0" 842 version: "1.4.0"
843 pub_semver: 843 pub_semver:
@@ -845,7 +845,7 @@ packages: @@ -845,7 +845,7 @@ packages:
845 description: 845 description:
846 name: pub_semver 846 name: pub_semver
847 sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585" 847 sha256: "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585"
848 - url: "https://pub.dev" 848 + url: "https://pub.flutter-io.cn"
849 source: hosted 849 source: hosted
850 version: "2.2.0" 850 version: "2.2.0"
851 pubspec_parse: 851 pubspec_parse:
@@ -853,7 +853,7 @@ packages: @@ -853,7 +853,7 @@ packages:
853 description: 853 description:
854 name: pubspec_parse 854 name: pubspec_parse
855 sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082" 855 sha256: "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082"
856 - url: "https://pub.dev" 856 + url: "https://pub.flutter-io.cn"
857 source: hosted 857 source: hosted
858 version: "1.5.0" 858 version: "1.5.0"
859 record_use: 859 record_use:
@@ -861,7 +861,7 @@ packages: @@ -861,7 +861,7 @@ packages:
861 description: 861 description:
862 name: record_use 862 name: record_use
863 sha256: "1cb8564af8d43b464294411db9217f5ec04891c6f22ee2c32d73ae05e88a6bd2" 863 sha256: "1cb8564af8d43b464294411db9217f5ec04891c6f22ee2c32d73ae05e88a6bd2"
864 - url: "https://pub.dev" 864 + url: "https://pub.flutter-io.cn"
865 source: hosted 865 source: hosted
866 version: "1.1.1" 866 version: "1.1.1"
867 rxdart: 867 rxdart:
@@ -869,7 +869,7 @@ packages: @@ -869,7 +869,7 @@ packages:
869 description: 869 description:
870 name: rxdart 870 name: rxdart
871 sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" 871 sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962"
872 - url: "https://pub.dev" 872 + url: "https://pub.flutter-io.cn"
873 source: hosted 873 source: hosted
874 version: "0.28.0" 874 version: "0.28.0"
875 share_plus: 875 share_plus:
@@ -904,7 +904,7 @@ packages: @@ -904,7 +904,7 @@ packages:
904 description: 904 description:
905 name: shared_preferences_android 905 name: shared_preferences_android
906 sha256: e8d4762b1e2e8578fc4d0fd548cebf24afd24f49719c08974df92834565e2c53 906 sha256: e8d4762b1e2e8578fc4d0fd548cebf24afd24f49719c08974df92834565e2c53
907 - url: "https://pub.dev" 907 + url: "https://pub.flutter-io.cn"
908 source: hosted 908 source: hosted
909 version: "2.4.23" 909 version: "2.4.23"
910 shared_preferences_foundation: 910 shared_preferences_foundation:
@@ -912,7 +912,7 @@ packages: @@ -912,7 +912,7 @@ packages:
912 description: 912 description:
913 name: shared_preferences_foundation 913 name: shared_preferences_foundation
914 sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f" 914 sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f"
915 - url: "https://pub.dev" 915 + url: "https://pub.flutter-io.cn"
916 source: hosted 916 source: hosted
917 version: "2.5.6" 917 version: "2.5.6"
918 shared_preferences_linux: 918 shared_preferences_linux:
@@ -920,7 +920,7 @@ packages: @@ -920,7 +920,7 @@ packages:
920 description: 920 description:
921 name: shared_preferences_linux 921 name: shared_preferences_linux
922 sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" 922 sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f"
923 - url: "https://pub.dev" 923 + url: "https://pub.flutter-io.cn"
924 source: hosted 924 source: hosted
925 version: "2.4.1" 925 version: "2.4.1"
926 shared_preferences_ohos: 926 shared_preferences_ohos:
@@ -937,7 +937,7 @@ packages: @@ -937,7 +937,7 @@ packages:
937 description: 937 description:
938 name: shared_preferences_platform_interface 938 name: shared_preferences_platform_interface
939 sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9" 939 sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9"
940 - url: "https://pub.dev" 940 + url: "https://pub.flutter-io.cn"
941 source: hosted 941 source: hosted
942 version: "2.4.2" 942 version: "2.4.2"
943 shared_preferences_web: 943 shared_preferences_web:
@@ -945,7 +945,7 @@ packages: @@ -945,7 +945,7 @@ packages:
945 description: 945 description:
946 name: shared_preferences_web 946 name: shared_preferences_web
947 sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 947 sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019
948 - url: "https://pub.dev" 948 + url: "https://pub.flutter-io.cn"
949 source: hosted 949 source: hosted
950 version: "2.4.3" 950 version: "2.4.3"
951 shared_preferences_windows: 951 shared_preferences_windows:
@@ -953,7 +953,7 @@ packages: @@ -953,7 +953,7 @@ packages:
953 description: 953 description:
954 name: shared_preferences_windows 954 name: shared_preferences_windows
955 sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" 955 sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1"
956 - url: "https://pub.dev" 956 + url: "https://pub.flutter-io.cn"
957 source: hosted 957 source: hosted
958 version: "2.4.1" 958 version: "2.4.1"
959 shelf: 959 shelf:
@@ -961,7 +961,7 @@ packages: @@ -961,7 +961,7 @@ packages:
961 description: 961 description:
962 name: shelf 962 name: shelf
963 sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 963 sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12
964 - url: "https://pub.dev" 964 + url: "https://pub.flutter-io.cn"
965 source: hosted 965 source: hosted
966 version: "1.4.2" 966 version: "1.4.2"
967 shelf_web_socket: 967 shelf_web_socket:
@@ -969,7 +969,7 @@ packages: @@ -969,7 +969,7 @@ packages:
969 description: 969 description:
970 name: shelf_web_socket 970 name: shelf_web_socket
971 sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" 971 sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925"
972 - url: "https://pub.dev" 972 + url: "https://pub.flutter-io.cn"
973 source: hosted 973 source: hosted
974 version: "3.0.0" 974 version: "3.0.0"
975 simple_gesture_detector: 975 simple_gesture_detector:
@@ -977,7 +977,7 @@ packages: @@ -977,7 +977,7 @@ packages:
977 description: 977 description:
978 name: simple_gesture_detector 978 name: simple_gesture_detector
979 sha256: ba2cd5af24ff20a0b8d609cec3f40e5b0744d2a71804a2616ae086b9c19d19a3 979 sha256: ba2cd5af24ff20a0b8d609cec3f40e5b0744d2a71804a2616ae086b9c19d19a3
980 - url: "https://pub.dev" 980 + url: "https://pub.flutter-io.cn"
981 source: hosted 981 source: hosted
982 version: "0.2.1" 982 version: "0.2.1"
983 sky_engine: 983 sky_engine:
@@ -990,7 +990,7 @@ packages: @@ -990,7 +990,7 @@ packages:
990 description: 990 description:
991 name: source_span 991 name: source_span
992 sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" 992 sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab"
993 - url: "https://pub.dev" 993 + url: "https://pub.flutter-io.cn"
994 source: hosted 994 source: hosted
995 version: "1.10.2" 995 version: "1.10.2"
996 sqflite: 996 sqflite:
@@ -1007,7 +1007,7 @@ packages: @@ -1007,7 +1007,7 @@ packages:
1007 description: 1007 description:
1008 name: sqflite_android 1008 name: sqflite_android
1009 sha256: "881e28efdcc9950fd8e9bb42713dcf1103e62a2e7168f23c9338d82db13dec40" 1009 sha256: "881e28efdcc9950fd8e9bb42713dcf1103e62a2e7168f23c9338d82db13dec40"
1010 - url: "https://pub.dev" 1010 + url: "https://pub.flutter-io.cn"
1011 source: hosted 1011 source: hosted
1012 version: "2.4.2+3" 1012 version: "2.4.2+3"
1013 sqflite_common: 1013 sqflite_common:
@@ -1015,7 +1015,7 @@ packages: @@ -1015,7 +1015,7 @@ packages:
1015 description: 1015 description:
1016 name: sqflite_common 1016 name: sqflite_common
1017 sha256: "1581ffbf7a0e333b380d6a30737d78516b826cb35beb7fb0bf8a3ea0c678b465" 1017 sha256: "1581ffbf7a0e333b380d6a30737d78516b826cb35beb7fb0bf8a3ea0c678b465"
1018 - url: "https://pub.dev" 1018 + url: "https://pub.flutter-io.cn"
1019 source: hosted 1019 source: hosted
1020 version: "2.5.8" 1020 version: "2.5.8"
1021 sqflite_darwin: 1021 sqflite_darwin:
@@ -1023,7 +1023,7 @@ packages: @@ -1023,7 +1023,7 @@ packages:
1023 description: 1023 description:
1024 name: sqflite_darwin 1024 name: sqflite_darwin
1025 sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" 1025 sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3"
1026 - url: "https://pub.dev" 1026 + url: "https://pub.flutter-io.cn"
1027 source: hosted 1027 source: hosted
1028 version: "2.4.2" 1028 version: "2.4.2"
1029 sqflite_ohos: 1029 sqflite_ohos:
@@ -1040,7 +1040,7 @@ packages: @@ -1040,7 +1040,7 @@ packages:
1040 description: 1040 description:
1041 name: sqflite_platform_interface 1041 name: sqflite_platform_interface
1042 sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" 1042 sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920"
1043 - url: "https://pub.dev" 1043 + url: "https://pub.flutter-io.cn"
1044 source: hosted 1044 source: hosted
1045 version: "2.4.0" 1045 version: "2.4.0"
1046 stack_trace: 1046 stack_trace:
@@ -1048,7 +1048,7 @@ packages: @@ -1048,7 +1048,7 @@ packages:
1048 description: 1048 description:
1049 name: stack_trace 1049 name: stack_trace
1050 sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" 1050 sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
1051 - url: "https://pub.dev" 1051 + url: "https://pub.flutter-io.cn"
1052 source: hosted 1052 source: hosted
1053 version: "1.12.1" 1053 version: "1.12.1"
1054 stream_channel: 1054 stream_channel:
@@ -1056,7 +1056,7 @@ packages: @@ -1056,7 +1056,7 @@ packages:
1056 description: 1056 description:
1057 name: stream_channel 1057 name: stream_channel
1058 sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" 1058 sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
1059 - url: "https://pub.dev" 1059 + url: "https://pub.flutter-io.cn"
1060 source: hosted 1060 source: hosted
1061 version: "2.1.4" 1061 version: "2.1.4"
1062 stream_transform: 1062 stream_transform:
@@ -1064,7 +1064,7 @@ packages: @@ -1064,7 +1064,7 @@ packages:
1064 description: 1064 description:
1065 name: stream_transform 1065 name: stream_transform
1066 sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871 1066 sha256: ad47125e588cfd37a9a7f86c7d6356dde8dfe89d071d293f80ca9e9273a33871
1067 - url: "https://pub.dev" 1067 + url: "https://pub.flutter-io.cn"
1068 source: hosted 1068 source: hosted
1069 version: "2.1.1" 1069 version: "2.1.1"
1070 string_scanner: 1070 string_scanner:
@@ -1072,7 +1072,7 @@ packages: @@ -1072,7 +1072,7 @@ packages:
1072 description: 1072 description:
1073 name: string_scanner 1073 name: string_scanner
1074 sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" 1074 sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
1075 - url: "https://pub.dev" 1075 + url: "https://pub.flutter-io.cn"
1076 source: hosted 1076 source: hosted
1077 version: "1.4.1" 1077 version: "1.4.1"
1078 synchronized: 1078 synchronized:
@@ -1080,7 +1080,7 @@ packages: @@ -1080,7 +1080,7 @@ packages:
1080 description: 1080 description:
1081 name: synchronized 1081 name: synchronized
1082 sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 1082 sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0
1083 - url: "https://pub.dev" 1083 + url: "https://pub.flutter-io.cn"
1084 source: hosted 1084 source: hosted
1085 version: "3.4.0" 1085 version: "3.4.0"
1086 table_calendar: 1086 table_calendar:
@@ -1088,7 +1088,7 @@ packages: @@ -1088,7 +1088,7 @@ packages:
1088 description: 1088 description:
1089 name: table_calendar 1089 name: table_calendar
1090 sha256: f276347cad425ef837a41e8d9ad43f3ee7d59227aa4c36d7430607a5a18fa3b3 1090 sha256: f276347cad425ef837a41e8d9ad43f3ee7d59227aa4c36d7430607a5a18fa3b3
1091 - url: "https://pub.dev" 1091 + url: "https://pub.flutter-io.cn"
1092 source: hosted 1092 source: hosted
1093 version: "3.2.1" 1093 version: "3.2.1"
1094 term_glyph: 1094 term_glyph:
@@ -1096,7 +1096,7 @@ packages: @@ -1096,7 +1096,7 @@ packages:
1096 description: 1096 description:
1097 name: term_glyph 1097 name: term_glyph
1098 sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" 1098 sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
1099 - url: "https://pub.dev" 1099 + url: "https://pub.flutter-io.cn"
1100 source: hosted 1100 source: hosted
1101 version: "1.2.2" 1101 version: "1.2.2"
1102 test_api: 1102 test_api:
@@ -1104,7 +1104,7 @@ packages: @@ -1104,7 +1104,7 @@ packages:
1104 description: 1104 description:
1105 name: test_api 1105 name: test_api
1106 sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 1106 sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55
1107 - url: "https://pub.dev" 1107 + url: "https://pub.flutter-io.cn"
1108 source: hosted 1108 source: hosted
1109 version: "0.7.7" 1109 version: "0.7.7"
1110 thinking_analytics: 1110 thinking_analytics:
@@ -1112,7 +1112,7 @@ packages: @@ -1112,7 +1112,7 @@ packages:
1112 description: 1112 description:
1113 name: thinking_analytics 1113 name: thinking_analytics
1114 sha256: b01cac0b5482e71c1d75c44c77d27f427662cc65a77b7bc3c8b49617d7a01e02 1114 sha256: b01cac0b5482e71c1d75c44c77d27f427662cc65a77b7bc3c8b49617d7a01e02
1115 - url: "https://pub.dev" 1115 + url: "https://pub.flutter-io.cn"
1116 source: hosted 1116 source: hosted
1117 version: "3.3.3" 1117 version: "3.3.3"
1118 typed_data: 1118 typed_data:
@@ -1120,7 +1120,7 @@ packages: @@ -1120,7 +1120,7 @@ packages:
1120 description: 1120 description:
1121 name: typed_data 1121 name: typed_data
1122 sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 1122 sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
1123 - url: "https://pub.dev" 1123 + url: "https://pub.flutter-io.cn"
1124 source: hosted 1124 source: hosted
1125 version: "1.4.0" 1125 version: "1.4.0"
1126 url_launcher_linux: 1126 url_launcher_linux:
@@ -1128,7 +1128,7 @@ packages: @@ -1128,7 +1128,7 @@ packages:
1128 description: 1128 description:
1129 name: url_launcher_linux 1129 name: url_launcher_linux
1130 sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a 1130 sha256: d5e14138b3bc193a0f63c10a53c94b91d399df0512b1f29b94a043db7482384a
1131 - url: "https://pub.dev" 1131 + url: "https://pub.flutter-io.cn"
1132 source: hosted 1132 source: hosted
1133 version: "3.2.2" 1133 version: "3.2.2"
1134 url_launcher_platform_interface: 1134 url_launcher_platform_interface:
@@ -1136,7 +1136,7 @@ packages: @@ -1136,7 +1136,7 @@ packages:
1136 description: 1136 description:
1137 name: url_launcher_platform_interface 1137 name: url_launcher_platform_interface
1138 sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" 1138 sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029"
1139 - url: "https://pub.dev" 1139 + url: "https://pub.flutter-io.cn"
1140 source: hosted 1140 source: hosted
1141 version: "2.3.2" 1141 version: "2.3.2"
1142 url_launcher_web: 1142 url_launcher_web:
@@ -1144,7 +1144,7 @@ packages: @@ -1144,7 +1144,7 @@ packages:
1144 description: 1144 description:
1145 name: url_launcher_web 1145 name: url_launcher_web
1146 sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34" 1146 sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34"
1147 - url: "https://pub.dev" 1147 + url: "https://pub.flutter-io.cn"
1148 source: hosted 1148 source: hosted
1149 version: "2.4.3" 1149 version: "2.4.3"
1150 url_launcher_windows: 1150 url_launcher_windows:
@@ -1152,7 +1152,7 @@ packages: @@ -1152,7 +1152,7 @@ packages:
1152 description: 1152 description:
1153 name: url_launcher_windows 1153 name: url_launcher_windows
1154 sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f" 1154 sha256: "712c70ab1b99744ff066053cbe3e80c73332b38d46e5e945c98689b2e66fc15f"
1155 - url: "https://pub.dev" 1155 + url: "https://pub.flutter-io.cn"
1156 source: hosted 1156 source: hosted
1157 version: "3.1.5" 1157 version: "3.1.5"
1158 uuid: 1158 uuid:
@@ -1160,7 +1160,7 @@ packages: @@ -1160,7 +1160,7 @@ packages:
1160 description: 1160 description:
1161 name: uuid 1161 name: uuid
1162 sha256: "9b129329f58692f6e6578329498a8fe9fbe98f090beb764ffbb8ee2eadd01dcd" 1162 sha256: "9b129329f58692f6e6578329498a8fe9fbe98f090beb764ffbb8ee2eadd01dcd"
1163 - url: "https://pub.dev" 1163 + url: "https://pub.flutter-io.cn"
1164 source: hosted 1164 source: hosted
1165 version: "4.6.0" 1165 version: "4.6.0"
1166 vector_math: 1166 vector_math:
@@ -1168,7 +1168,7 @@ packages: @@ -1168,7 +1168,7 @@ packages:
1168 description: 1168 description:
1169 name: vector_math 1169 name: vector_math
1170 sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b 1170 sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
1171 - url: "https://pub.dev" 1171 + url: "https://pub.flutter-io.cn"
1172 source: hosted 1172 source: hosted
1173 version: "2.2.0" 1173 version: "2.2.0"
1174 video_thumbnail: 1174 video_thumbnail:
@@ -1176,7 +1176,7 @@ packages: @@ -1176,7 +1176,7 @@ packages:
1176 description: 1176 description:
1177 name: video_thumbnail 1177 name: video_thumbnail
1178 sha256: "181a0c205b353918954a881f53a3441476b9e301641688a581e0c13f00dc588b" 1178 sha256: "181a0c205b353918954a881f53a3441476b9e301641688a581e0c13f00dc588b"
1179 - url: "https://pub.dev" 1179 + url: "https://pub.flutter-io.cn"
1180 source: hosted 1180 source: hosted
1181 version: "0.5.6" 1181 version: "0.5.6"
1182 vm_service: 1182 vm_service:
@@ -1184,7 +1184,7 @@ packages: @@ -1184,7 +1184,7 @@ packages:
1184 description: 1184 description:
1185 name: vm_service 1185 name: vm_service
1186 sha256: "5f37239c4851efcef929cea7824e76df7f2f0970aef85d66bbc430afa40e72f0" 1186 sha256: "5f37239c4851efcef929cea7824e76df7f2f0970aef85d66bbc430afa40e72f0"
1187 - url: "https://pub.dev" 1187 + url: "https://pub.flutter-io.cn"
1188 source: hosted 1188 source: hosted
1189 version: "15.3.0" 1189 version: "15.3.0"
1190 watcher: 1190 watcher:
@@ -1192,7 +1192,7 @@ packages: @@ -1192,7 +1192,7 @@ packages:
1192 description: 1192 description:
1193 name: watcher 1193 name: watcher
1194 sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" 1194 sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635"
1195 - url: "https://pub.dev" 1195 + url: "https://pub.flutter-io.cn"
1196 source: hosted 1196 source: hosted
1197 version: "1.2.1" 1197 version: "1.2.1"
1198 web: 1198 web:
@@ -1200,7 +1200,7 @@ packages: @@ -1200,7 +1200,7 @@ packages:
1200 description: 1200 description:
1201 name: web 1201 name: web
1202 sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" 1202 sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
1203 - url: "https://pub.dev" 1203 + url: "https://pub.flutter-io.cn"
1204 source: hosted 1204 source: hosted
1205 version: "1.1.1" 1205 version: "1.1.1"
1206 web_socket: 1206 web_socket:
@@ -1208,7 +1208,7 @@ packages: @@ -1208,7 +1208,7 @@ packages:
1208 description: 1208 description:
1209 name: web_socket 1209 name: web_socket
1210 sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" 1210 sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c"
1211 - url: "https://pub.dev" 1211 + url: "https://pub.flutter-io.cn"
1212 source: hosted 1212 source: hosted
1213 version: "1.0.1" 1213 version: "1.0.1"
1214 web_socket_channel: 1214 web_socket_channel:
@@ -1216,7 +1216,7 @@ packages: @@ -1216,7 +1216,7 @@ packages:
1216 description: 1216 description:
1217 name: web_socket_channel 1217 name: web_socket_channel
1218 sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 1218 sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8
1219 - url: "https://pub.dev" 1219 + url: "https://pub.flutter-io.cn"
1220 source: hosted 1220 source: hosted
1221 version: "3.0.3" 1221 version: "3.0.3"
1222 webview_flutter: 1222 webview_flutter:
@@ -1269,7 +1269,7 @@ packages: @@ -1269,7 +1269,7 @@ packages:
1269 description: 1269 description:
1270 name: win32 1270 name: win32
1271 sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e 1271 sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e
1272 - url: "https://pub.dev" 1272 + url: "https://pub.flutter-io.cn"
1273 source: hosted 1273 source: hosted
1274 version: "5.15.0" 1274 version: "5.15.0"
1275 xdg_directories: 1275 xdg_directories:
@@ -1277,7 +1277,7 @@ packages: @@ -1277,7 +1277,7 @@ packages:
1277 description: 1277 description:
1278 name: xdg_directories 1278 name: xdg_directories
1279 sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" 1279 sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15"
1280 - url: "https://pub.dev" 1280 + url: "https://pub.flutter-io.cn"
1281 source: hosted 1281 source: hosted
1282 version: "1.1.0" 1282 version: "1.1.0"
1283 yaml: 1283 yaml:
@@ -1285,7 +1285,7 @@ packages: @@ -1285,7 +1285,7 @@ packages:
1285 description: 1285 description:
1286 name: yaml 1286 name: yaml
1287 sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce 1287 sha256: b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce
1288 - url: "https://pub.dev" 1288 + url: "https://pub.flutter-io.cn"
1289 source: hosted 1289 source: hosted
1290 version: "3.1.3" 1290 version: "3.1.3"
1291 sdks: 1291 sdks: