Commit 816f8e9f7a8725689534b3e3a8cf969af1326373
1 parent
2ec326af
feat(ui):互动接入
feat(ui):移除无用图片 feat(ui):互动记录 feat(ui):互动 feat(ui):完善互动文本显示
Showing
21 changed files
with
574 additions
and
472 deletions
| @@ -13,6 +13,9 @@ analyzer: | @@ -13,6 +13,9 @@ analyzer: | ||
| 13 | exclude: | 13 | exclude: |
| 14 | - lib/**/*.g.dart | 14 | - lib/**/*.g.dart |
| 15 | - lib/app/routes/app_routes.dart | 15 | - lib/app/routes/app_routes.dart |
| 16 | + - build/** | ||
| 17 | + - android/** | ||
| 18 | + - ios/** | ||
| 16 | 19 | ||
| 17 | linter: | 20 | linter: |
| 18 | # The lint rules applied to this project can be customized in the | 21 | # The lint rules applied to this project can be customized in the |
4.68 KB
assets/images/interact/icon_miss.png
deleted
100644 → 0
3.22 KB
3.4 KB
assets/images/interact/page_bg.png
deleted
100644 → 0
276 KB
1.56 KB
assets/images/interact/page_foot.png
deleted
100644 → 0
1.12 KB
1.57 KB
1.48 KB
1.86 KB
1.77 KB
1.59 KB
1.51 KB
1.76 KB
| @@ -14,6 +14,12 @@ class SelectFriendLogic { | @@ -14,6 +14,12 @@ class SelectFriendLogic { | ||
| 14 | final isLoading = false.obs; | 14 | final isLoading = false.obs; |
| 15 | final selectedIndex = (-1).obs; | 15 | final selectedIndex = (-1).obs; |
| 16 | 16 | ||
| 17 | + FriendHealthData? get selectedFriend { | ||
| 18 | + final index = selectedIndex.value; | ||
| 19 | + if (index < 0 || index >= friends.length) return null; | ||
| 20 | + return friends[index]; | ||
| 21 | + } | ||
| 22 | + | ||
| 17 | Future<void> initialize() async { | 23 | Future<void> initialize() async { |
| 18 | if (isLoading.value) return; | 24 | if (isLoading.value) return; |
| 19 | isLoading.value = true; | 25 | isLoading.value = true; |
| 1 | +import 'package:doublefeel_flutter/app/modules/friends/models/friend_health_data.dart'; | ||
| 1 | import 'package:doublefeel_flutter/core/theme/app_colors.dart'; | 2 | import 'package:doublefeel_flutter/core/theme/app_colors.dart'; |
| 2 | import 'package:doublefeel_flutter/core/util/size_extensions.dart'; | 3 | import 'package:doublefeel_flutter/core/util/size_extensions.dart'; |
| 3 | import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; | 4 | import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; |
| @@ -8,7 +9,9 @@ import '../controllers/select_friend_logic.dart'; | @@ -8,7 +9,9 @@ import '../controllers/select_friend_logic.dart'; | ||
| 8 | import '../widgets/friend_health_card.dart'; | 9 | import '../widgets/friend_health_card.dart'; |
| 9 | 10 | ||
| 10 | class SelectFriendView extends StatefulWidget { | 11 | class SelectFriendView extends StatefulWidget { |
| 11 | - const SelectFriendView({super.key}); | 12 | + const SelectFriendView({super.key, this.buttonText, this.onConfirm}); |
| 13 | + final String? buttonText; | ||
| 14 | + final VoidCallback? onConfirm; | ||
| 12 | 15 | ||
| 13 | @override | 16 | @override |
| 14 | State<SelectFriendView> createState() => _SelectFriendViewState(); | 17 | State<SelectFriendView> createState() => _SelectFriendViewState(); |
| @@ -42,7 +45,10 @@ class _SelectFriendViewState extends State<SelectFriendView> { | @@ -42,7 +45,10 @@ class _SelectFriendViewState extends State<SelectFriendView> { | ||
| 42 | children: [ | 45 | children: [ |
| 43 | Column( | 46 | Column( |
| 44 | children: [ | 47 | children: [ |
| 45 | - _SelectFriendHeader(onClose: () => Get.back<void>()), | 48 | + _SelectFriendHeader( |
| 49 | + buttonText: widget.buttonText, | ||
| 50 | + onClose: () => Get.back<void>(), | ||
| 51 | + ), | ||
| 46 | Expanded( | 52 | Expanded( |
| 47 | child: Obx(() { | 53 | child: Obx(() { |
| 48 | if (_logic.isLoading.value && _logic.friends.isEmpty) { | 54 | if (_logic.isLoading.value && _logic.friends.isEmpty) { |
| @@ -86,7 +92,7 @@ class _SelectFriendViewState extends State<SelectFriendView> { | @@ -86,7 +92,7 @@ class _SelectFriendViewState extends State<SelectFriendView> { | ||
| 86 | left: 49.dp, | 92 | left: 49.dp, |
| 87 | right: 49.dp, | 93 | right: 49.dp, |
| 88 | bottom: 36.dp + MediaQuery.viewPaddingOf(context).bottom, | 94 | bottom: 36.dp + MediaQuery.viewPaddingOf(context).bottom, |
| 89 | - child: _SyncButton(onTap: _syncSelectedFriend), | 95 | + child: _SyncButton(onTap: () => _syncSelectedFriend()), |
| 90 | ), | 96 | ), |
| 91 | ], | 97 | ], |
| 92 | ), | 98 | ), |
| @@ -94,14 +100,21 @@ class _SelectFriendViewState extends State<SelectFriendView> { | @@ -94,14 +100,21 @@ class _SelectFriendViewState extends State<SelectFriendView> { | ||
| 94 | } | 100 | } |
| 95 | 101 | ||
| 96 | Future<void> _syncSelectedFriend() async { | 102 | Future<void> _syncSelectedFriend() async { |
| 103 | + if (widget.onConfirm != null) { | ||
| 104 | + widget.onConfirm!(); | ||
| 105 | + final friend = _logic.selectedFriend; | ||
| 106 | + Get.back(result: friend); | ||
| 107 | + return; | ||
| 108 | + } | ||
| 97 | final selectedFriend = await _logic.syncSelectedFriendToWatchFace(); | 109 | final selectedFriend = await _logic.syncSelectedFriendToWatchFace(); |
| 98 | Get.back(result: selectedFriend); | 110 | Get.back(result: selectedFriend); |
| 99 | } | 111 | } |
| 100 | } | 112 | } |
| 101 | 113 | ||
| 102 | class _SelectFriendHeader extends StatelessWidget { | 114 | class _SelectFriendHeader extends StatelessWidget { |
| 103 | - const _SelectFriendHeader({required this.onClose}); | 115 | + const _SelectFriendHeader({required this.onClose, this.buttonText}); |
| 104 | 116 | ||
| 117 | + final String? buttonText; | ||
| 105 | final VoidCallback onClose; | 118 | final VoidCallback onClose; |
| 106 | 119 | ||
| 107 | @override | 120 | @override |
| @@ -119,11 +132,7 @@ class _SelectFriendHeader extends StatelessWidget { | @@ -119,11 +132,7 @@ class _SelectFriendHeader extends StatelessWidget { | ||
| 119 | width: 40.dp, | 132 | width: 40.dp, |
| 120 | height: 40.dp, | 133 | height: 40.dp, |
| 121 | child: const Center( | 134 | child: const Center( |
| 122 | - child: Icon( | ||
| 123 | - Icons.close, | ||
| 124 | - color: AppColors.primary, | ||
| 125 | - size: 20, | ||
| 126 | - ), | 135 | + child: Icon(Icons.close, color: AppColors.primary, size: 20), |
| 127 | ), | 136 | ), |
| 128 | ), | 137 | ), |
| 129 | ), | 138 | ), |
| @@ -131,7 +140,7 @@ class _SelectFriendHeader extends StatelessWidget { | @@ -131,7 +140,7 @@ class _SelectFriendHeader extends StatelessWidget { | ||
| 131 | Expanded( | 140 | Expanded( |
| 132 | child: Center( | 141 | child: Center( |
| 133 | child: Text( | 142 | child: Text( |
| 134 | - context.l10n.friendsSelect, | 143 | + buttonText ?? context.l10n.friendsSelect, |
| 135 | style: const TextStyle( | 144 | style: const TextStyle( |
| 136 | color: AppColors.textPrimary, | 145 | color: AppColors.textPrimary, |
| 137 | fontSize: 16, | 146 | fontSize: 16, |
| @@ -10,11 +10,32 @@ import 'package:doublefeel_flutter/core/result/app_result.dart'; | @@ -10,11 +10,32 @@ 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/interaction/interaction_models.dart'; | 11 | import 'package:doublefeel_flutter/data/models/interaction/interaction_models.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:flutter/foundation.dart'; | 13 | +import 'package:doublefeel_flutter/l10n/l10n_extensions.dart'; |
| 14 | import 'package:get/get.dart'; | 14 | import 'package:get/get.dart'; |
| 15 | 15 | ||
| 16 | enum InteractAction { stick, miss, punch } | 16 | enum InteractAction { stick, miss, punch } |
| 17 | 17 | ||
| 18 | +extension InteractionDataActionInteractAction on InteractionDataAction { | ||
| 19 | + /// Converts the action identifier returned in interaction data to the UI | ||
| 20 | + /// action used by the interaction page. Unknown server values are ignored. | ||
| 21 | + InteractAction? get interactAction => switch (action?.trim().toLowerCase()) { | ||
| 22 | + 'poke' || 'stick' => InteractAction.stick, | ||
| 23 | + 'miss' => InteractAction.miss, | ||
| 24 | + 'punch' => InteractAction.punch, | ||
| 25 | + _ => null, | ||
| 26 | + }; | ||
| 27 | +} | ||
| 28 | + | ||
| 29 | +extension InteractionRecordInteractAction on InteractionRecord { | ||
| 30 | + /// Record payloads identify the interaction by the numeric [actionType]. | ||
| 31 | + InteractAction? get interactAction => switch (actionType) { | ||
| 32 | + 0 => InteractAction.stick, | ||
| 33 | + 1 => InteractAction.miss, | ||
| 34 | + 2 => InteractAction.punch, | ||
| 35 | + _ => null, | ||
| 36 | + }; | ||
| 37 | +} | ||
| 38 | + | ||
| 18 | extension InteractActionUi on InteractAction { | 39 | extension InteractActionUi on InteractAction { |
| 19 | static const animationDuration = Duration(seconds: 5); | 40 | static const animationDuration = Duration(seconds: 5); |
| 20 | 41 | ||
| @@ -33,21 +54,11 @@ extension InteractActionUi on InteractAction { | @@ -33,21 +54,11 @@ extension InteractActionUi on InteractAction { | ||
| 33 | bool get needsVip => this != InteractAction.stick; | 54 | bool get needsVip => this != InteractAction.stick; |
| 34 | 55 | ||
| 35 | String get iconAsset => switch (this) { | 56 | String get iconAsset => switch (this) { |
| 36 | - InteractAction.stick => 'assets/images/interact/icon_stick.png', | ||
| 37 | - InteractAction.miss => 'assets/images/interact/icon_miss.png', | ||
| 38 | - InteractAction.punch => 'assets/images/interact/icon_punch.png', | ||
| 39 | - }; | ||
| 40 | - | ||
| 41 | - String get titleAsset => switch (this) { | ||
| 42 | - InteractAction.stick => 'assets/images/interact/title_stick.png', | ||
| 43 | - InteractAction.miss => 'assets/images/interact/title_miss.png', | ||
| 44 | - InteractAction.punch => 'assets/images/interact/title_punch.png', | ||
| 45 | - }; | ||
| 46 | - | ||
| 47 | - String get lockedTitleAsset => switch (this) { | ||
| 48 | - InteractAction.stick => 'assets/images/interact/title_stick_locked.png', | ||
| 49 | - InteractAction.miss => 'assets/images/interact/title_miss_locked.png', | ||
| 50 | - InteractAction.punch => 'assets/images/interact/title_punch_locked.png', | 57 | + InteractAction.stick => |
| 58 | + 'assets/images/interact/ic_friend_interact_poke.png', | ||
| 59 | + InteractAction.miss => 'assets/images/interact/ic_friend_interact_miss.png', | ||
| 60 | + InteractAction.punch => | ||
| 61 | + 'assets/images/interact/ic_friend_interact_punch.png', | ||
| 51 | }; | 62 | }; |
| 52 | 63 | ||
| 53 | String get lottieAsset => switch (this) { | 64 | String get lottieAsset => switch (this) { |
| @@ -89,7 +100,6 @@ class InteractController extends GetxController { | @@ -89,7 +100,6 @@ class InteractController extends GetxController { | ||
| 89 | UserInfoResponse? get partner => selectedFriend.value == null | 100 | UserInfoResponse? get partner => selectedFriend.value == null |
| 90 | ? _userPreferencesStorage.preferences.value.partnerUserInfo | 101 | ? _userPreferencesStorage.preferences.value.partnerUserInfo |
| 91 | : null; | 102 | : null; |
| 92 | - bool get isPaired => targetFriendUserId.value != null || partner?.id != null; | ||
| 93 | bool get isInteractionLocked => | 103 | bool get isInteractionLocked => |
| 94 | sendingAction.value != null || activeAction.value != null; | 104 | sendingAction.value != null || activeAction.value != null; |
| 95 | bool get isVip => | 105 | bool get isVip => |
| @@ -210,17 +220,9 @@ class InteractController extends GetxController { | @@ -210,17 +220,9 @@ class InteractController extends GetxController { | ||
| 210 | isLoading.value = false; | 220 | isLoading.value = false; |
| 211 | switch (result) { | 221 | switch (result) { |
| 212 | case AppSuccess(:final data): | 222 | case AppSuccess(:final data): |
| 213 | - final responseRecords = data.records ?? const <InteractionRecord>[]; | ||
| 214 | - records.assignAll( | ||
| 215 | - kDebugMode && responseRecords.isEmpty | ||
| 216 | - ? _mockRecords() | ||
| 217 | - : responseRecords, | ||
| 218 | - ); | 223 | + records.assignAll(data.records ?? const <InteractionRecord>[]); |
| 219 | case AppFailure(): | 224 | case AppFailure(): |
| 220 | - if (kDebugMode) { | ||
| 221 | - records.assignAll(_mockRecords()); | ||
| 222 | - } | ||
| 223 | - // Keep the last successful list visible in release when a refresh fails. | 225 | + // Keep the last successful list visible when a refresh fails. |
| 224 | } | 226 | } |
| 225 | } | 227 | } |
| 226 | 228 | ||
| @@ -228,11 +230,6 @@ class InteractController extends GetxController { | @@ -228,11 +230,6 @@ class InteractController extends GetxController { | ||
| 228 | InteractAction action, { | 230 | InteractAction action, { |
| 229 | InteractionDataAction? actionVariables, | 231 | InteractionDataAction? actionVariables, |
| 230 | }) async { | 232 | }) async { |
| 231 | - if (!isPaired) { | ||
| 232 | - _showToast('请先绑定另一半'); | ||
| 233 | - Get.toNamed(AppRoutes.bindPartner); | ||
| 234 | - return; | ||
| 235 | - } | ||
| 236 | if (action.needsVip && !isVip) { | 233 | if (action.needsVip && !isVip) { |
| 237 | _showToast('${action.title}为会员互动,请先开通会员'); | 234 | _showToast('${action.title}为会员互动,请先开通会员'); |
| 238 | Get.toNamed(Routes.PURCHASE); | 235 | Get.toNamed(Routes.PURCHASE); |
| @@ -241,7 +238,6 @@ class InteractController extends GetxController { | @@ -241,7 +238,6 @@ class InteractController extends GetxController { | ||
| 241 | if (isInteractionLocked) return; | 238 | if (isInteractionLocked) return; |
| 242 | final friendUserId = targetFriendUserId.value; | 239 | final friendUserId = targetFriendUserId.value; |
| 243 | if (friendUserId == null) { | 240 | if (friendUserId == null) { |
| 244 | - _showToast('未找到互动好友'); | ||
| 245 | return; | 241 | return; |
| 246 | } | 242 | } |
| 247 | 243 | ||
| @@ -269,35 +265,41 @@ class InteractController extends GetxController { | @@ -269,35 +265,41 @@ class InteractController extends GetxController { | ||
| 269 | } | 265 | } |
| 270 | } | 266 | } |
| 271 | 267 | ||
| 272 | - String barrageText(InteractionRecord record) { | ||
| 273 | - final isSelf = record.userId == me?.id; | ||
| 274 | - return switch (record.actionType) { | ||
| 275 | - 0 => isSelf ? '我戳Ta一下~' : 'Ta戳我一下~', | ||
| 276 | - 1 => isSelf ? '我想了Ta一次~' : 'Ta想了我一次~', | ||
| 277 | - 2 => isSelf ? '我打了Ta一拳~' : 'Ta打了我一拳~', | ||
| 278 | - _ => isSelf ? '我发起了一次互动~' : 'Ta发起了一次互动~', | ||
| 279 | - }; | ||
| 280 | - } | 268 | + String barrageText(InteractionRecord record) => record.danmuText ?? ''; |
| 281 | 269 | ||
| 282 | InteractionRecordLine recordLine(InteractionRecord record) { | 270 | InteractionRecordLine recordLine(InteractionRecord record) { |
| 283 | - final isSelf = record.userId == me?.id; | ||
| 284 | - final actor = isSelf ? '我' : friendLabel; | ||
| 285 | - final target = isSelf ? friendLabel : '你'; | ||
| 286 | - final (verb, suffix) = switch (record.actionType) { | ||
| 287 | - 0 => ('戳了戳', '~'), | ||
| 288 | - 1 => ('想了', '一次~'), | ||
| 289 | - 2 => ('打了', '一拳~'), | ||
| 290 | - _ => ('发起了', '一次互动~'), | ||
| 291 | - }; | 271 | + final sentByMe = _isSentByMe(record); |
| 292 | return InteractionRecordLine( | 272 | return InteractionRecordLine( |
| 293 | - actor: actor, | ||
| 294 | - verb: verb, | ||
| 295 | - target: target, | ||
| 296 | - suffix: suffix, | ||
| 297 | - highlightTarget: isSelf, | 273 | + template: l10n.interactRecordTextTemplate( |
| 274 | + sentByMe: sentByMe, | ||
| 275 | + action: record.interactAction?.name, | ||
| 276 | + interactionType: record.interactionType, | ||
| 277 | + ), | ||
| 278 | + actor: sentByMe ? l10n.interactRecordSelf : friendInteractionName, | ||
| 279 | + target: record.interactionType == 100 | ||
| 280 | + ? friendInteractionName | ||
| 281 | + : sentByMe | ||
| 282 | + ? friendInteractionName | ||
| 283 | + : l10n.interactRecordYou, | ||
| 284 | + actionTarget: l10n.interactRecordTargetPronoun(sentByMe), | ||
| 298 | ); | 285 | ); |
| 299 | } | 286 | } |
| 300 | 287 | ||
| 288 | + bool _isSentByMe(InteractionRecord record) { | ||
| 289 | + final selfUserId = me?.id; | ||
| 290 | + if (selfUserId == null) return false; | ||
| 291 | + if (record.userId == selfUserId) return true; | ||
| 292 | + if (record.friendUserId == selfUserId) return false; | ||
| 293 | + return false; | ||
| 294 | + } | ||
| 295 | + | ||
| 296 | + String get friendInteractionName { | ||
| 297 | + final remark = friendRemark?.trim(); | ||
| 298 | + return remark == null || remark.isEmpty | ||
| 299 | + ? friendName | ||
| 300 | + : '$remark($friendName)'; | ||
| 301 | + } | ||
| 302 | + | ||
| 301 | String recordTime(InteractionRecord record) { | 303 | String recordTime(InteractionRecord record) { |
| 302 | final timestamp = record.createTime; | 304 | final timestamp = record.createTime; |
| 303 | if (timestamp == null || timestamp <= 0) return ''; | 305 | if (timestamp == null || timestamp <= 0) return ''; |
| @@ -311,57 +313,27 @@ class InteractController extends GetxController { | @@ -311,57 +313,27 @@ class InteractController extends GetxController { | ||
| 311 | void _showToast(String message) { | 313 | void _showToast(String message) { |
| 312 | Get.snackbar('互动', message, snackPosition: SnackPosition.BOTTOM); | 314 | Get.snackbar('互动', message, snackPosition: SnackPosition.BOTTOM); |
| 313 | } | 315 | } |
| 314 | - | ||
| 315 | - List<InteractionRecord> _mockRecords() { | ||
| 316 | - final now = DateTime.now(); | ||
| 317 | - final meId = me?.id ?? 1; | ||
| 318 | - final friendId = targetFriendUserId.value ?? 2; | ||
| 319 | - const texts = <String>[ | ||
| 320 | - '我戳了戳Ta一下~', | ||
| 321 | - 'Ta打了你一拳~', | ||
| 322 | - '我想Ta了,今天也要好好照顾自己呀~', | ||
| 323 | - 'Ta戳了戳你,提醒你起来活动一下。', | ||
| 324 | - '我送给Ta一份今天的好心情~', | ||
| 325 | - 'Ta想你了,记得给Ta一个回应。', | ||
| 326 | - '我打了一拳,今天也要元气满满!', | ||
| 327 | - 'Ta戳了戳你,别忘了喝水。', | ||
| 328 | - '我想念Ta,晚点一起聊聊天吧。', | ||
| 329 | - 'Ta送来一份鼓励:今天辛苦了!', | ||
| 330 | - '我戳了戳Ta,继续加油~', | ||
| 331 | - 'Ta打了一拳,是轻轻的一拳。', | ||
| 332 | - '我想Ta了。', | ||
| 333 | - 'Ta戳了戳你。', | ||
| 334 | - '我送给Ta一个拥抱。', | ||
| 335 | - ]; | ||
| 336 | - return List<InteractionRecord>.generate( | ||
| 337 | - texts.length, | ||
| 338 | - (index) => InteractionRecord( | ||
| 339 | - id: index + 1, | ||
| 340 | - userId: index.isEven ? meId : friendId, | ||
| 341 | - actionType: index % 3, | ||
| 342 | - text: texts[index], | ||
| 343 | - createTime: | ||
| 344 | - now | ||
| 345 | - .subtract(Duration(minutes: index * 17 + 3)) | ||
| 346 | - .millisecondsSinceEpoch ~/ | ||
| 347 | - Duration.millisecondsPerSecond, | ||
| 348 | - ), | ||
| 349 | - ); | ||
| 350 | - } | ||
| 351 | } | 316 | } |
| 352 | 317 | ||
| 353 | class InteractionRecordLine { | 318 | class InteractionRecordLine { |
| 319 | + static const actorToken = '##A##'; | ||
| 320 | + static const targetToken = '##B##'; | ||
| 321 | + static const actionTargetToken = '##C##'; | ||
| 322 | + | ||
| 354 | const InteractionRecordLine({ | 323 | const InteractionRecordLine({ |
| 324 | + required this.template, | ||
| 355 | required this.actor, | 325 | required this.actor, |
| 356 | - required this.verb, | ||
| 357 | required this.target, | 326 | required this.target, |
| 358 | - required this.suffix, | ||
| 359 | - required this.highlightTarget, | 327 | + required this.actionTarget, |
| 360 | }); | 328 | }); |
| 361 | 329 | ||
| 330 | + final String template; | ||
| 362 | final String actor; | 331 | final String actor; |
| 363 | - final String verb; | ||
| 364 | final String target; | 332 | final String target; |
| 365 | - final String suffix; | ||
| 366 | - final bool highlightTarget; | 333 | + final String actionTarget; |
| 334 | + | ||
| 335 | + String get text => template | ||
| 336 | + .replaceAll(actorToken, actor) | ||
| 337 | + .replaceAll(targetToken, target) | ||
| 338 | + .replaceAll(actionTargetToken, actionTarget); | ||
| 367 | } | 339 | } |
| @@ -156,68 +156,58 @@ class InteractView extends GetView<InteractController> { | @@ -156,68 +156,58 @@ class InteractView extends GetView<InteractController> { | ||
| 156 | required bool elevated, | 156 | required bool elevated, |
| 157 | }) { | 157 | }) { |
| 158 | final isLocked = controller.isInteractionLocked; | 158 | final isLocked = controller.isInteractionLocked; |
| 159 | - final enabled = | ||
| 160 | - !isLocked && | ||
| 161 | - controller.isPaired && | ||
| 162 | - (!action.needsVip || controller.isVip); | 159 | + final enabled = !isLocked && (!action.needsVip || controller.isVip); |
| 163 | final sending = controller.sendingAction.value == action; | 160 | final sending = controller.sendingAction.value == action; |
| 161 | + | ||
| 164 | return GestureDetector( | 162 | return GestureDetector( |
| 165 | - onLongPress: isLocked ? null : () => _showActionSheet(context), | 163 | + onTap: isLocked ? null : () => controller.sendAction(action), |
| 166 | child: SizedBox( | 164 | child: SizedBox( |
| 167 | width: width, | 165 | width: width, |
| 168 | height: 112, | 166 | height: 112, |
| 169 | - child: Stack( | ||
| 170 | - clipBehavior: Clip.none, | ||
| 171 | - alignment: Alignment.topCenter, | ||
| 172 | - children: [ | ||
| 173 | - Positioned( | ||
| 174 | - top: elevated ? 34 : 49, | ||
| 175 | - child: Opacity( | ||
| 176 | - opacity: enabled ? 1 : .4, | 167 | + child: Opacity( |
| 168 | + opacity: enabled ? 1 : .4, | ||
| 169 | + child: Stack( | ||
| 170 | + clipBehavior: Clip.none, | ||
| 171 | + alignment: Alignment.topCenter, | ||
| 172 | + children: [ | ||
| 173 | + Positioned( | ||
| 174 | + top: elevated ? 34 : 49, | ||
| 177 | child: Material( | 175 | child: Material( |
| 178 | color: _purple, | 176 | color: _purple, |
| 179 | borderRadius: BorderRadius.circular(elevated ? 24 : 16), | 177 | borderRadius: BorderRadius.circular(elevated ? 24 : 16), |
| 180 | - child: InkWell( | ||
| 181 | - onTap: sending ? null : () => controller.sendAction(action), | ||
| 182 | - borderRadius: BorderRadius.circular(elevated ? 24 : 16), | 178 | + child: Container( |
| 179 | + decoration: BoxDecoration( | ||
| 180 | + borderRadius: BorderRadius.circular(elevated ? 24 : 16), | ||
| 181 | + ), | ||
| 183 | child: SizedBox( | 182 | child: SizedBox( |
| 184 | width: width, | 183 | width: width, |
| 185 | height: elevated ? 78 : 56, | 184 | height: elevated ? 78 : 56, |
| 186 | child: Center( | 185 | child: Center( |
| 187 | child: sending | 186 | child: sending |
| 188 | - ? const SizedBox( | ||
| 189 | - width: 22, | ||
| 190 | - height: 22, | ||
| 191 | - child: CircularProgressIndicator( | ||
| 192 | - color: Colors.white, | ||
| 193 | - strokeWidth: 2, | ||
| 194 | - ), | ||
| 195 | - ) | 187 | + ? null |
| 196 | : Text( | 188 | : Text( |
| 197 | action.title, | 189 | action.title, |
| 198 | style: TextStyle( | 190 | style: TextStyle( |
| 199 | color: Colors.white, | 191 | color: Colors.white, |
| 200 | - fontSize: elevated ? 20 : 14, | 192 | + fontSize: elevated ? 20 : 16, |
| 201 | fontWeight: FontWeight.w600, | 193 | fontWeight: FontWeight.w600, |
| 202 | ), | 194 | ), |
| 203 | - ), | 195 | + ).paddingOnly(top: elevated ? 24 : 16), |
| 204 | ), | 196 | ), |
| 205 | ), | 197 | ), |
| 206 | ), | 198 | ), |
| 207 | ), | 199 | ), |
| 208 | ), | 200 | ), |
| 209 | - ), | ||
| 210 | - Positioned( | ||
| 211 | - top: elevated ? 0 : 19, | ||
| 212 | - child: _colorPlaceholder( | ||
| 213 | - elevated ? 68 : 52, | ||
| 214 | - color: enabled | ||
| 215 | - ? const Color(0xffc5b0ff) | ||
| 216 | - : const Color(0xffd5cfe3), | ||
| 217 | - radius: elevated ? 22 : 18, | 201 | + Positioned( |
| 202 | + top: elevated ? 0 : 19, | ||
| 203 | + child: SizedBox( | ||
| 204 | + width: elevated ? 68 : 52, | ||
| 205 | + height: elevated ? 68 : 52, | ||
| 206 | + child: Image.asset(action.iconAsset), | ||
| 207 | + ), | ||
| 218 | ), | 208 | ), |
| 219 | - ), | ||
| 220 | - ], | 209 | + ], |
| 210 | + ), | ||
| 221 | ), | 211 | ), |
| 222 | ), | 212 | ), |
| 223 | ); | 213 | ); |
| @@ -303,17 +293,7 @@ class InteractView extends GetView<InteractController> { | @@ -303,17 +293,7 @@ class InteractView extends GetView<InteractController> { | ||
| 303 | Text.rich( | 293 | Text.rich( |
| 304 | TextSpan( | 294 | TextSpan( |
| 305 | style: bodyStyle, | 295 | style: bodyStyle, |
| 306 | - children: [ | ||
| 307 | - TextSpan(text: line.actor, style: highlightStyle), | ||
| 308 | - TextSpan(text: ' ${line.verb} '), | ||
| 309 | - TextSpan( | ||
| 310 | - text: line.target, | ||
| 311 | - style: line.highlightTarget | ||
| 312 | - ? highlightStyle | ||
| 313 | - : bodyStyle, | ||
| 314 | - ), | ||
| 315 | - TextSpan(text: line.suffix), | ||
| 316 | - ], | 296 | + children: _recordTextSpans(line, highlightStyle), |
| 317 | ), | 297 | ), |
| 318 | ), | 298 | ), |
| 319 | const SizedBox(height: 3), | 299 | const SizedBox(height: 3), |
| @@ -333,28 +313,45 @@ class InteractView extends GetView<InteractController> { | @@ -333,28 +313,45 @@ class InteractView extends GetView<InteractController> { | ||
| 333 | ); | 313 | ); |
| 334 | } | 314 | } |
| 335 | 315 | ||
| 336 | - void _onRecordTap(InteractionRecord record) { | ||
| 337 | - // TODO: open the corresponding interaction-detail page. | 316 | + List<InlineSpan> _recordTextSpans( |
| 317 | + InteractionRecordLine line, | ||
| 318 | + TextStyle highlightStyle, | ||
| 319 | + ) { | ||
| 320 | + final tokenPattern = RegExp(r'##[ABC]##'); | ||
| 321 | + final spans = <InlineSpan>[]; | ||
| 322 | + var cursor = 0; | ||
| 323 | + for (final match in tokenPattern.allMatches(line.template)) { | ||
| 324 | + if (match.start > cursor) { | ||
| 325 | + spans.add(TextSpan(text: line.template.substring(cursor, match.start))); | ||
| 326 | + } | ||
| 327 | + final token = match.group(0)!; | ||
| 328 | + final (text, isHighlighted) = switch (token) { | ||
| 329 | + InteractionRecordLine.actorToken => (line.actor, true), | ||
| 330 | + InteractionRecordLine.targetToken => (line.target, true), | ||
| 331 | + InteractionRecordLine.actionTargetToken => (line.actionTarget, false), | ||
| 332 | + _ => ('', false), | ||
| 333 | + }; | ||
| 334 | + spans.add( | ||
| 335 | + TextSpan(text: text, style: isHighlighted ? highlightStyle : null), | ||
| 336 | + ); | ||
| 337 | + cursor = match.end; | ||
| 338 | + } | ||
| 339 | + if (cursor < line.template.length) { | ||
| 340 | + spans.add(TextSpan(text: line.template.substring(cursor))); | ||
| 341 | + } | ||
| 342 | + return spans; | ||
| 338 | } | 343 | } |
| 339 | 344 | ||
| 340 | - Widget _colorPlaceholder( | ||
| 341 | - double size, { | ||
| 342 | - required Color color, | ||
| 343 | - required double radius, | ||
| 344 | - }) { | ||
| 345 | - return Container( | ||
| 346 | - width: size, | ||
| 347 | - height: size, | ||
| 348 | - decoration: BoxDecoration( | ||
| 349 | - color: color, | ||
| 350 | - borderRadius: BorderRadius.circular(radius), | ||
| 351 | - ), | ||
| 352 | - ); | 345 | + void _onRecordTap(InteractionRecord record) { |
| 346 | + // TODO: open the corresponding interaction-detail page. | ||
| 353 | } | 347 | } |
| 354 | 348 | ||
| 355 | Future<void> _changeFriend() async { | 349 | Future<void> _changeFriend() async { |
| 356 | final selectedFriend = await Get.bottomSheet<FriendHealthData>( | 350 | final selectedFriend = await Get.bottomSheet<FriendHealthData>( |
| 357 | - SizedBox(height: Get.height * 0.9, child: const SelectFriendView()), | 351 | + SizedBox( |
| 352 | + height: Get.height * 0.9, | ||
| 353 | + child: SelectFriendView(buttonText: '确定', onConfirm: () => const {}), | ||
| 354 | + ), | ||
| 358 | ignoreSafeArea: false, | 355 | ignoreSafeArea: false, |
| 359 | isScrollControlled: true, | 356 | isScrollControlled: true, |
| 360 | backgroundColor: Colors.transparent, | 357 | backgroundColor: Colors.transparent, |
| @@ -366,14 +363,6 @@ class InteractView extends GetView<InteractController> { | @@ -366,14 +363,6 @@ class InteractView extends GetView<InteractController> { | ||
| 366 | } | 363 | } |
| 367 | await controller.selectFriend(selectedFriend); | 364 | await controller.selectFriend(selectedFriend); |
| 368 | } | 365 | } |
| 369 | - | ||
| 370 | - void _showActionSheet(BuildContext context) { | ||
| 371 | - Get.bottomSheet( | ||
| 372 | - InteractActionBottomSheet(controller: controller), | ||
| 373 | - isScrollControlled: true, | ||
| 374 | - backgroundColor: Colors.transparent, | ||
| 375 | - ); | ||
| 376 | - } | ||
| 377 | } | 366 | } |
| 378 | 367 | ||
| 379 | /// Coordinates the three visual containers for one interaction. The self | 368 | /// Coordinates the three visual containers for one interaction. The self |
| @@ -683,11 +672,13 @@ class _FloatingInteractionBubblesState | @@ -683,11 +672,13 @@ class _FloatingInteractionBubblesState | ||
| 683 | 672 | ||
| 684 | @override | 673 | @override |
| 685 | Widget build(BuildContext context) { | 674 | Widget build(BuildContext context) { |
| 675 | + final selfUserId = widget.selfUserId; | ||
| 676 | + if (selfUserId == null) return const SizedBox.shrink(); | ||
| 686 | final selfRecords = widget.records | 677 | final selfRecords = widget.records |
| 687 | - .where((record) => record.userId == widget.selfUserId) | 678 | + .where((record) => record.userId == selfUserId) |
| 688 | .toList(growable: false); | 679 | .toList(growable: false); |
| 689 | final friendRecords = widget.records | 680 | final friendRecords = widget.records |
| 690 | - .where((record) => record.userId != widget.selfUserId) | 681 | + .where((record) => record.friendUserId == selfUserId) |
| 691 | .toList(growable: false); | 682 | .toList(growable: false); |
| 692 | return LayoutBuilder( | 683 | return LayoutBuilder( |
| 693 | builder: (context, constraints) => AnimatedBuilder( | 684 | builder: (context, constraints) => AnimatedBuilder( |
| @@ -766,7 +757,10 @@ class _FloatingInteractionBubblesState | @@ -766,7 +757,10 @@ class _FloatingInteractionBubblesState | ||
| 766 | } | 757 | } |
| 767 | 758 | ||
| 768 | double _bubbleWidth(InteractionRecord record) { | 759 | double _bubbleWidth(InteractionRecord record) { |
| 769 | - const horizontalPadding = 6.0 + 28 + 5 + 10; | 760 | + // Keep this in sync with [_FloatingInteractionBubble]'s horizontal |
| 761 | + // padding, icon, and spacing. The old value omitted 10px of right | ||
| 762 | + // padding, so server-provided danmu text could overflow its bubble. | ||
| 763 | + const horizontalContent = 6.0 + 28 + 5 + 20; | ||
| 770 | final textPainter = TextPainter( | 764 | final textPainter = TextPainter( |
| 771 | text: TextSpan( | 765 | text: TextSpan( |
| 772 | text: widget.recordText(record), | 766 | text: widget.recordText(record), |
| @@ -775,7 +769,7 @@ class _FloatingInteractionBubblesState | @@ -775,7 +769,7 @@ class _FloatingInteractionBubblesState | ||
| 775 | maxLines: 1, | 769 | maxLines: 1, |
| 776 | textDirection: TextDirection.ltr, | 770 | textDirection: TextDirection.ltr, |
| 777 | )..layout(); | 771 | )..layout(); |
| 778 | - return horizontalPadding + textPainter.width; | 772 | + return horizontalContent + textPainter.width + 2; |
| 779 | } | 773 | } |
| 780 | } | 774 | } |
| 781 | 775 | ||
| @@ -792,6 +786,7 @@ class _FloatingInteractionBubble extends StatelessWidget { | @@ -792,6 +786,7 @@ class _FloatingInteractionBubble extends StatelessWidget { | ||
| 792 | 786 | ||
| 793 | @override | 787 | @override |
| 794 | Widget build(BuildContext context) { | 788 | Widget build(BuildContext context) { |
| 789 | + final action = record.interactAction; | ||
| 795 | return Container( | 790 | return Container( |
| 796 | width: width, | 791 | width: width, |
| 797 | padding: const EdgeInsets.fromLTRB(6, 4, 20, 4), | 792 | padding: const EdgeInsets.fromLTRB(6, 4, 20, 4), |
| @@ -805,155 +800,19 @@ class _FloatingInteractionBubble extends StatelessWidget { | @@ -805,155 +800,19 @@ class _FloatingInteractionBubble extends StatelessWidget { | ||
| 805 | SizedBox( | 800 | SizedBox( |
| 806 | width: 28, | 801 | width: 28, |
| 807 | height: 28, | 802 | height: 28, |
| 808 | - child: Image.asset('named_assets/interact/icon_bubble_avatar.png'), | 803 | + child: action == null |
| 804 | + ? const SizedBox.shrink() | ||
| 805 | + : Image.asset(action.iconAsset), | ||
| 809 | ), | 806 | ), |
| 810 | const SizedBox(width: 5), | 807 | const SizedBox(width: 5), |
| 811 | - Flexible( | ||
| 812 | - child: Text( | ||
| 813 | - recordText(record), | ||
| 814 | - maxLines: 1, | ||
| 815 | - overflow: TextOverflow.visible, | ||
| 816 | - style: const TextStyle(color: Colors.white, fontSize: 12), | ||
| 817 | - ), | 808 | + Text( |
| 809 | + recordText(record), | ||
| 810 | + maxLines: 1, | ||
| 811 | + overflow: TextOverflow.visible, | ||
| 812 | + style: const TextStyle(color: Colors.white, fontSize: 12), | ||
| 818 | ), | 813 | ), |
| 819 | ], | 814 | ], |
| 820 | ), | 815 | ), |
| 821 | ); | 816 | ); |
| 822 | } | 817 | } |
| 823 | } | 818 | } |
| 824 | - | ||
| 825 | -class InteractActionBottomSheet extends StatelessWidget { | ||
| 826 | - const InteractActionBottomSheet({required this.controller, super.key}); | ||
| 827 | - | ||
| 828 | - final InteractController controller; | ||
| 829 | - | ||
| 830 | - @override | ||
| 831 | - Widget build(BuildContext context) { | ||
| 832 | - return SafeArea( | ||
| 833 | - top: false, | ||
| 834 | - child: Container( | ||
| 835 | - height: 331, | ||
| 836 | - decoration: const BoxDecoration( | ||
| 837 | - image: DecorationImage( | ||
| 838 | - image: AssetImage('assets/images/interact/bottom_sheet_bg.png'), | ||
| 839 | - fit: BoxFit.fill, | ||
| 840 | - ), | ||
| 841 | - ), | ||
| 842 | - child: Stack( | ||
| 843 | - children: [ | ||
| 844 | - Align( | ||
| 845 | - alignment: const Alignment(.2, -.98), | ||
| 846 | - child: Image.asset( | ||
| 847 | - 'assets/images/interact/bottom_sheet_label.png', | ||
| 848 | - width: 126, | ||
| 849 | - ), | ||
| 850 | - ), | ||
| 851 | - Column( | ||
| 852 | - children: [ | ||
| 853 | - const SizedBox(height: 18), | ||
| 854 | - _sheetAvatar(), | ||
| 855 | - const SizedBox(height: 13), | ||
| 856 | - const Text( | ||
| 857 | - '给搭子送去一份互动', | ||
| 858 | - style: TextStyle(color: Color(0xff908b91), fontSize: 14), | ||
| 859 | - ), | ||
| 860 | - const SizedBox(height: 3), | ||
| 861 | - const Text( | ||
| 862 | - '想念要说出来', | ||
| 863 | - style: TextStyle( | ||
| 864 | - color: Color(0xff896cdc), | ||
| 865 | - fontSize: 24, | ||
| 866 | - fontWeight: FontWeight.w700, | ||
| 867 | - ), | ||
| 868 | - ), | ||
| 869 | - const SizedBox(height: 24), | ||
| 870 | - Obx( | ||
| 871 | - () => Row( | ||
| 872 | - mainAxisAlignment: MainAxisAlignment.center, | ||
| 873 | - crossAxisAlignment: CrossAxisAlignment.end, | ||
| 874 | - children: InteractAction.values | ||
| 875 | - .map( | ||
| 876 | - (action) => Padding( | ||
| 877 | - padding: const EdgeInsets.symmetric(horizontal: 6), | ||
| 878 | - child: _sheetButton(action), | ||
| 879 | - ), | ||
| 880 | - ) | ||
| 881 | - .toList(growable: false), | ||
| 882 | - ), | ||
| 883 | - ), | ||
| 884 | - ], | ||
| 885 | - ), | ||
| 886 | - ], | ||
| 887 | - ), | ||
| 888 | - ), | ||
| 889 | - ); | ||
| 890 | - } | ||
| 891 | - | ||
| 892 | - Widget _sheetAvatar() { | ||
| 893 | - final avatar = controller.partner?.avatar; | ||
| 894 | - return Container( | ||
| 895 | - width: 56, | ||
| 896 | - height: 56, | ||
| 897 | - clipBehavior: Clip.antiAlias, | ||
| 898 | - decoration: BoxDecoration( | ||
| 899 | - shape: BoxShape.circle, | ||
| 900 | - border: Border.all(color: const Color(0xff896cdc), width: 2), | ||
| 901 | - ), | ||
| 902 | - child: avatar == null || avatar.isEmpty | ||
| 903 | - ? const Icon(Icons.person, color: Color(0xff908b91)) | ||
| 904 | - : Image.network(avatar, fit: BoxFit.cover), | ||
| 905 | - ); | ||
| 906 | - } | ||
| 907 | - | ||
| 908 | - Widget _sheetButton(InteractAction action) { | ||
| 909 | - final enabled = | ||
| 910 | - !controller.isInteractionLocked && | ||
| 911 | - controller.isPaired && | ||
| 912 | - (!action.needsVip || controller.isVip); | ||
| 913 | - final sending = controller.sendingAction.value == action; | ||
| 914 | - return SizedBox( | ||
| 915 | - width: action == InteractAction.stick ? 112 : 88, | ||
| 916 | - height: action == InteractAction.stick ? 74 : 56, | ||
| 917 | - child: ElevatedButton( | ||
| 918 | - onPressed: !enabled || sending | ||
| 919 | - ? null | ||
| 920 | - : () async { | ||
| 921 | - await controller.sendAction( | ||
| 922 | - action, | ||
| 923 | - actionVariables: const InteractionDataAction(objectTarget: 2), | ||
| 924 | - ); | ||
| 925 | - if (controller.sendingAction.value == null) Get.back(); | ||
| 926 | - }, | ||
| 927 | - style: ElevatedButton.styleFrom( | ||
| 928 | - padding: EdgeInsets.zero, | ||
| 929 | - backgroundColor: const Color( | ||
| 930 | - 0xff896cdc, | ||
| 931 | - ).withValues(alpha: enabled ? 1 : .4), | ||
| 932 | - shape: RoundedRectangleBorder( | ||
| 933 | - borderRadius: BorderRadius.circular(28), | ||
| 934 | - ), | ||
| 935 | - ), | ||
| 936 | - child: sending | ||
| 937 | - ? const CircularProgressIndicator( | ||
| 938 | - color: Colors.white, | ||
| 939 | - strokeWidth: 2, | ||
| 940 | - ) | ||
| 941 | - : Column( | ||
| 942 | - mainAxisAlignment: MainAxisAlignment.center, | ||
| 943 | - children: [ | ||
| 944 | - Image.asset( | ||
| 945 | - enabled | ||
| 946 | - ? action.iconAsset | ||
| 947 | - : 'assets/images/interact/icon_locked.png', | ||
| 948 | - height: 38, | ||
| 949 | - ), | ||
| 950 | - Image.asset( | ||
| 951 | - enabled ? action.titleAsset : action.lockedTitleAsset, | ||
| 952 | - height: 18, | ||
| 953 | - ), | ||
| 954 | - ], | ||
| 955 | - ), | ||
| 956 | - ), | ||
| 957 | - ); | ||
| 958 | - } | ||
| 959 | -} |
| @@ -114,27 +114,34 @@ class InteractionRecord { | @@ -114,27 +114,34 @@ class InteractionRecord { | ||
| 114 | this.id, | 114 | this.id, |
| 115 | this.createTime, | 115 | this.createTime, |
| 116 | this.userId, | 116 | this.userId, |
| 117 | + this.friendUserId, | ||
| 117 | this.pairId, | 118 | this.pairId, |
| 118 | this.interactionType, | 119 | this.interactionType, |
| 119 | this.actionType, | 120 | this.actionType, |
| 120 | this.action, | 121 | this.action, |
| 121 | this.text, | 122 | this.text, |
| 123 | + this.danmuText, | ||
| 122 | }); | 124 | }); |
| 123 | 125 | ||
| 124 | final int? id; | 126 | final int? id; |
| 125 | final int? createTime; | 127 | final int? createTime; |
| 128 | + | ||
| 129 | + /// The interaction recipient. [userId] is the initiator. | ||
| 126 | final int? userId; | 130 | final int? userId; |
| 131 | + final int? friendUserId; | ||
| 127 | final int? pairId; | 132 | final int? pairId; |
| 128 | final int? interactionType; | 133 | final int? interactionType; |
| 129 | final int? actionType; | 134 | final int? actionType; |
| 130 | final InteractionDataAction? action; | 135 | final InteractionDataAction? action; |
| 131 | final String? text; | 136 | final String? text; |
| 137 | + final String? danmuText; | ||
| 132 | 138 | ||
| 133 | factory InteractionRecord.fromJson(Map<String, dynamic> json) { | 139 | factory InteractionRecord.fromJson(Map<String, dynamic> json) { |
| 134 | return InteractionRecord( | 140 | return InteractionRecord( |
| 135 | id: json['id'] as int?, | 141 | id: json['id'] as int?, |
| 136 | createTime: json['create_time'] as int?, | 142 | createTime: json['create_time'] as int?, |
| 137 | userId: json['user_id'] as int?, | 143 | userId: json['user_id'] as int?, |
| 144 | + friendUserId: json['friend_user_id'] as int?, | ||
| 138 | pairId: json['pair_id'] as int?, | 145 | pairId: json['pair_id'] as int?, |
| 139 | interactionType: json['interaction_type'] as int?, | 146 | interactionType: json['interaction_type'] as int?, |
| 140 | actionType: json['action_type'] as int?, | 147 | actionType: json['action_type'] as int?, |
| @@ -144,6 +151,7 @@ class InteractionRecord { | @@ -144,6 +151,7 @@ class InteractionRecord { | ||
| 144 | json['action_variables'] as Map<String, dynamic>, | 151 | json['action_variables'] as Map<String, dynamic>, |
| 145 | ), | 152 | ), |
| 146 | text: json['text'] as String?, | 153 | text: json['text'] as String?, |
| 154 | + danmuText: json['danmu_text'] as String?, | ||
| 147 | ); | 155 | ); |
| 148 | } | 156 | } |
| 149 | 157 | ||
| @@ -152,11 +160,13 @@ class InteractionRecord { | @@ -152,11 +160,13 @@ class InteractionRecord { | ||
| 152 | if (id != null) val['id'] = id; | 160 | if (id != null) val['id'] = id; |
| 153 | if (createTime != null) val['create_time'] = createTime; | 161 | if (createTime != null) val['create_time'] = createTime; |
| 154 | if (userId != null) val['user_id'] = userId; | 162 | if (userId != null) val['user_id'] = userId; |
| 163 | + if (friendUserId != null) val['friend_user_id'] = friendUserId; | ||
| 155 | if (pairId != null) val['pair_id'] = pairId; | 164 | if (pairId != null) val['pair_id'] = pairId; |
| 156 | if (interactionType != null) val['interaction_type'] = interactionType; | 165 | if (interactionType != null) val['interaction_type'] = interactionType; |
| 157 | if (actionType != null) val['action_type'] = actionType; | 166 | if (actionType != null) val['action_type'] = actionType; |
| 158 | if (action != null) val['action_variables'] = action!.toJson(); | 167 | if (action != null) val['action_variables'] = action!.toJson(); |
| 159 | if (text != null) val['text'] = text; | 168 | if (text != null) val['text'] = text; |
| 169 | + if (danmuText != null) val['danmu_text'] = danmuText; | ||
| 160 | return val; | 170 | return val; |
| 161 | } | 171 | } |
| 162 | } | 172 | } |
| @@ -118,6 +118,249 @@ extension InteractionAppLocalizations on AppLocalizations { | @@ -118,6 +118,249 @@ extension InteractionAppLocalizations on AppLocalizations { | ||
| 118 | }; | 118 | }; |
| 119 | } | 119 | } |
| 120 | 120 | ||
| 121 | + String get interactRecordSelf => switch (localeName) { | ||
| 122 | + 'zh' || 'zh_Hans' || 'zh_Hant' => '我', | ||
| 123 | + 'ja' => '私', | ||
| 124 | + 'ko' => '나', | ||
| 125 | + 'de' => 'Ich', | ||
| 126 | + 'es' => 'Yo', | ||
| 127 | + 'fil' => 'Ako', | ||
| 128 | + 'fr' => 'Je', | ||
| 129 | + 'hi' => 'मैं', | ||
| 130 | + 'it' => 'Io', | ||
| 131 | + 'nl' => 'Ik', | ||
| 132 | + 'pt' || 'pt_BR' || 'pt_PT' => 'Eu', | ||
| 133 | + 'ru' => 'Я', | ||
| 134 | + 'tr' => 'Ben', | ||
| 135 | + _ => 'I', | ||
| 136 | + }; | ||
| 137 | + | ||
| 138 | + String get interactRecordYou => switch (localeName) { | ||
| 139 | + 'zh' || 'zh_Hans' || 'zh_Hant' => '你', | ||
| 140 | + 'ja' => 'あなた', | ||
| 141 | + 'ko' => '너', | ||
| 142 | + 'de' => 'dich', | ||
| 143 | + 'es' => 'ti', | ||
| 144 | + 'fil' => 'ikaw', | ||
| 145 | + 'fr' => 'toi', | ||
| 146 | + 'hi' => 'तुम्हें', | ||
| 147 | + 'it' => 'te', | ||
| 148 | + 'nl' => 'jou', | ||
| 149 | + 'pt' || 'pt_BR' || 'pt_PT' => 'você', | ||
| 150 | + 'ru' => 'тебя', | ||
| 151 | + 'tr' => 'seni', | ||
| 152 | + _ => 'you', | ||
| 153 | + }; | ||
| 154 | + | ||
| 155 | + String interactRecordTargetPronoun(bool sentByMe) { | ||
| 156 | + if (!sentByMe) return interactRecordYou; | ||
| 157 | + return switch (localeName) { | ||
| 158 | + 'zh' || 'zh_Hans' || 'zh_Hant' => 'Ta', | ||
| 159 | + 'ja' => '相手', | ||
| 160 | + 'ko' => '상대', | ||
| 161 | + 'de' => 'sie', | ||
| 162 | + 'es' => 'esa persona', | ||
| 163 | + 'fil' => 'siya', | ||
| 164 | + 'fr' => 'cette personne', | ||
| 165 | + 'hi' => 'उन्हें', | ||
| 166 | + 'it' => 'loro', | ||
| 167 | + 'nl' => 'hen', | ||
| 168 | + 'pt' || 'pt_BR' || 'pt_PT' => 'essa pessoa', | ||
| 169 | + 'ru' => 'его/её', | ||
| 170 | + 'tr' => 'onu', | ||
| 171 | + _ => 'them', | ||
| 172 | + }; | ||
| 173 | + } | ||
| 174 | + | ||
| 175 | + /// Localized record text. ##A## is actor, ##B## is the highlighted target, | ||
| 176 | + /// and ##C## is the plain-language action target. | ||
| 177 | + String interactRecordTextTemplate({ | ||
| 178 | + required bool sentByMe, | ||
| 179 | + required String? action, | ||
| 180 | + required int? interactionType, | ||
| 181 | + }) { | ||
| 182 | + if (interactionType == 100) { | ||
| 183 | + return _recordTemplate( | ||
| 184 | + action: action, | ||
| 185 | + scene: null, | ||
| 186 | + sentByMe: sentByMe, | ||
| 187 | + useHighlightedTarget: true, | ||
| 188 | + ); | ||
| 189 | + } | ||
| 190 | + final sceneTitle = _recordSceneTitle(interactionType); | ||
| 191 | + final scene = sceneTitle == null ? null : interactSceneTitle(sceneTitle); | ||
| 192 | + return _recordTemplate(action: action, scene: scene, sentByMe: sentByMe); | ||
| 193 | + } | ||
| 194 | + | ||
| 195 | + InteractionSceneTitle? _recordSceneTitle(int? type) => switch (type) { | ||
| 196 | + 100 || null => null, | ||
| 197 | + 101 => InteractionSceneTitle.todayAverageHrv, | ||
| 198 | + 102 => InteractionSceneTitle.todayRestingHeartRate, | ||
| 199 | + 103 => InteractionSceneTitle.todaySleepStatus, | ||
| 200 | + 104 => InteractionSceneTitle.todayFitnessStatus, | ||
| 201 | + 105 => InteractionSceneTitle.weekStressTrend, | ||
| 202 | + 106 => InteractionSceneTitle.monthStressTrend, | ||
| 203 | + 107 => InteractionSceneTitle.yearStressTrend, | ||
| 204 | + 108 => InteractionSceneTitle.todayActivityBurn, | ||
| 205 | + 109 => InteractionSceneTitle.weekActivityBurn, | ||
| 206 | + 110 => InteractionSceneTitle.monthActivityBurn, | ||
| 207 | + 111 => InteractionSceneTitle.todaySleepStatus, | ||
| 208 | + 112 => InteractionSceneTitle.weekSleepTime, | ||
| 209 | + 113 => InteractionSceneTitle.monthSleepTime, | ||
| 210 | + 114 => InteractionSceneTitle.pkSteps, | ||
| 211 | + 115 => InteractionSceneTitle.pkCalories, | ||
| 212 | + 116 => InteractionSceneTitle.pkStandTime, | ||
| 213 | + 117 => InteractionSceneTitle.pkMonthlyResult, | ||
| 214 | + _ => null, | ||
| 215 | + }; | ||
| 216 | + | ||
| 217 | + String _recordTemplate({ | ||
| 218 | + required String? action, | ||
| 219 | + required String? scene, | ||
| 220 | + required bool sentByMe, | ||
| 221 | + bool useHighlightedTarget = false, | ||
| 222 | + }) { | ||
| 223 | + final verb = _recordActionVerb(action); | ||
| 224 | + final actionSuffix = _recordActionSuffix(action); | ||
| 225 | + final actionTargetToken = useHighlightedTarget ? '##B##' : '##C##'; | ||
| 226 | + final defaultText = switch (localeName) { | ||
| 227 | + 'zh' || | ||
| 228 | + 'zh_Hans' || | ||
| 229 | + 'zh_Hant' => '##A##$verb$actionTargetToken$actionSuffix~', | ||
| 230 | + 'ja' => '##A##が$actionTargetTokenを$verb~', | ||
| 231 | + 'ko' => '##A## $actionTargetToken을(를) $verb~', | ||
| 232 | + 'de' => '##A## hat $actionTargetToken $verb~', | ||
| 233 | + 'es' => '##A## $verb a $actionTargetToken~', | ||
| 234 | + 'fil' => '##A## ay $verb si $actionTargetToken~', | ||
| 235 | + 'fr' => '##A## a $verb $actionTargetToken~', | ||
| 236 | + 'hi' => '##A## ने $actionTargetToken को $verb~', | ||
| 237 | + 'it' => '##A## ha $verb $actionTargetToken~', | ||
| 238 | + 'nl' => '##A## heeft $actionTargetToken $verb~', | ||
| 239 | + 'pt' || 'pt_BR' || 'pt_PT' => '##A## $verb $actionTargetToken~', | ||
| 240 | + 'ru' => '##A## $verb $actionTargetToken~', | ||
| 241 | + 'tr' => '##A## $actionTargetToken $verb~', | ||
| 242 | + _ => '##A## $verb $actionTargetToken~', | ||
| 243 | + }; | ||
| 244 | + if (scene == null) return defaultText; | ||
| 245 | + return switch (localeName) { | ||
| 246 | + 'zh' || | ||
| 247 | + 'zh_Hans' || | ||
| 248 | + 'zh_Hant' => '##A## 看了##B##的【$scene】,并$verb##C##$actionSuffix~', | ||
| 249 | + 'ja' => '##A##が##B##の【$scene】を見て、##C##を$verb~', | ||
| 250 | + 'ko' => '##A## ##B##의【$scene】을 보고 ##C##을(를) $verb~', | ||
| 251 | + 'de' => '##A## hat ##B##s [$scene] angesehen und ##C## $verb~', | ||
| 252 | + 'es' => '##A## vio [$scene] de ##B## y $verb a ##C##~', | ||
| 253 | + 'fil' => '##A## ay tiningnan ang [$scene] ni ##B## at $verb si ##C##~', | ||
| 254 | + 'fr' => '##A## a vu le [$scene] de ##B## et a $verb ##C##~', | ||
| 255 | + 'hi' => '##A## ने ##B## का [$scene] देखा और ##C## को $verb~', | ||
| 256 | + 'it' => '##A## ha visto [$scene] di ##B## e ha $verb ##C##~', | ||
| 257 | + 'nl' => '##A## bekeek [$scene] van ##B## en heeft ##C## $verb~', | ||
| 258 | + 'pt' || | ||
| 259 | + 'pt_BR' || | ||
| 260 | + 'pt_PT' => '##A## viu [$scene] de ##B## e $verb ##C##~', | ||
| 261 | + 'ru' => '##A## посмотрел(а) [$scene] ##B## и $verb ##C##~', | ||
| 262 | + 'tr' => | ||
| 263 | + '##A##, ##B## adlı kişinin [$scene] verisini gördü ve ##C## $verb~', | ||
| 264 | + _ => '##A## viewed ##B##\'s [$scene] and $verb ##C##~', | ||
| 265 | + }; | ||
| 266 | + } | ||
| 267 | + | ||
| 268 | + String _recordActionVerb(String? action) => switch (localeName) { | ||
| 269 | + 'zh' || 'zh_Hans' || 'zh_Hant' => switch (action) { | ||
| 270 | + 'stick' => '戳了戳', | ||
| 271 | + 'miss' => '想了', | ||
| 272 | + 'punch' => '打了', | ||
| 273 | + _ => '互动了', | ||
| 274 | + }, | ||
| 275 | + 'ja' => switch (action) { | ||
| 276 | + 'stick' => 'つついた', | ||
| 277 | + 'miss' => '会いたくなった', | ||
| 278 | + 'punch' => 'パンチした', | ||
| 279 | + _ => '交流した', | ||
| 280 | + }, | ||
| 281 | + 'ko' => switch (action) { | ||
| 282 | + 'stick' => '콕 찔렀다', | ||
| 283 | + 'miss' => '그리워했다', | ||
| 284 | + 'punch' => '주먹으로 쳤다', | ||
| 285 | + _ => '상호작용했다', | ||
| 286 | + }, | ||
| 287 | + 'de' => switch (action) { | ||
| 288 | + 'stick' => 'angestupst', | ||
| 289 | + 'miss' => 'vermisst', | ||
| 290 | + 'punch' => 'geboxt', | ||
| 291 | + _ => 'kontaktiert', | ||
| 292 | + }, | ||
| 293 | + 'es' => switch (action) { | ||
| 294 | + 'stick' => 'dio un toque', | ||
| 295 | + 'miss' => 'extrañó', | ||
| 296 | + 'punch' => 'golpeó', | ||
| 297 | + _ => 'interactuó con', | ||
| 298 | + }, | ||
| 299 | + 'fil' => switch (action) { | ||
| 300 | + 'stick' => 'tinapik', | ||
| 301 | + 'miss' => 'na-miss', | ||
| 302 | + 'punch' => 'sinuntok', | ||
| 303 | + _ => 'nakipag-ugnayan kay', | ||
| 304 | + }, | ||
| 305 | + 'fr' => switch (action) { | ||
| 306 | + 'stick' => 'taquiné', | ||
| 307 | + 'miss' => 'manqué à', | ||
| 308 | + 'punch' => 'donné un coup de poing à', | ||
| 309 | + _ => 'interagi avec', | ||
| 310 | + }, | ||
| 311 | + 'hi' => switch (action) { | ||
| 312 | + 'stick' => 'हल्का धक्का दिया', | ||
| 313 | + 'miss' => 'याद किया', | ||
| 314 | + 'punch' => 'मुक्का मारा', | ||
| 315 | + _ => 'इंटरैक्ट किया', | ||
| 316 | + }, | ||
| 317 | + 'it' => switch (action) { | ||
| 318 | + 'stick' => 'stuzzicato', | ||
| 319 | + 'miss' => 'sentito la mancanza di', | ||
| 320 | + 'punch' => 'dato un pugno a', | ||
| 321 | + _ => 'interagito con', | ||
| 322 | + }, | ||
| 323 | + 'nl' => switch (action) { | ||
| 324 | + 'stick' => 'geprikt', | ||
| 325 | + 'miss' => 'gemist', | ||
| 326 | + 'punch' => 'gestoten', | ||
| 327 | + _ => 'contact gehad met', | ||
| 328 | + }, | ||
| 329 | + 'pt' || 'pt_BR' || 'pt_PT' => switch (action) { | ||
| 330 | + 'stick' => 'cutucou', | ||
| 331 | + 'miss' => 'sentiu saudade de', | ||
| 332 | + 'punch' => 'deu um soco em', | ||
| 333 | + _ => 'interagiu com', | ||
| 334 | + }, | ||
| 335 | + 'ru' => switch (action) { | ||
| 336 | + 'stick' => 'ткнул(а)', | ||
| 337 | + 'miss' => 'скучал(а) по', | ||
| 338 | + 'punch' => 'ударил(а)', | ||
| 339 | + _ => 'взаимодействовал(а) с', | ||
| 340 | + }, | ||
| 341 | + 'tr' => switch (action) { | ||
| 342 | + 'stick' => 'dürttü', | ||
| 343 | + 'miss' => 'özledi', | ||
| 344 | + 'punch' => 'yumrukladı', | ||
| 345 | + _ => 'etkileşime geçti', | ||
| 346 | + }, | ||
| 347 | + _ => switch (action) { | ||
| 348 | + 'stick' => 'poked', | ||
| 349 | + 'miss' => 'missed', | ||
| 350 | + 'punch' => 'punched', | ||
| 351 | + _ => 'interacted with', | ||
| 352 | + }, | ||
| 353 | + }; | ||
| 354 | + | ||
| 355 | + String _recordActionSuffix(String? action) => switch (localeName) { | ||
| 356 | + 'zh' || 'zh_Hans' || 'zh_Hant' => switch (action) { | ||
| 357 | + 'punch' => '一拳', | ||
| 358 | + 'miss' => '一次', | ||
| 359 | + _ => '', | ||
| 360 | + }, | ||
| 361 | + _ => '', | ||
| 362 | + }; | ||
| 363 | + | ||
| 121 | String get interactActionSheetInvitation => _interactionStrings.$1; | 364 | String get interactActionSheetInvitation => _interactionStrings.$1; |
| 122 | String get interactTodaySteps => _interactionStrings.$2; | 365 | String get interactTodaySteps => _interactionStrings.$2; |
| 123 | String get interactStepsUnit => _interactionStrings.$3; | 366 | String get interactStepsUnit => _interactionStrings.$3; |
| @@ -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.flutter-io.cn" | 9 | + url: "https://pub.dev" |
| 10 | source: hosted | 10 | source: hosted |
| 11 | version: "85.0.0" | 11 | version: "85.0.0" |
| 12 | analyzer: | 12 | analyzer: |
| @@ -14,23 +14,23 @@ packages: | @@ -14,23 +14,23 @@ packages: | ||
| 14 | description: | 14 | description: |
| 15 | name: analyzer | 15 | name: analyzer |
| 16 | sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" | 16 | sha256: "974859dc0ff5f37bc4313244b3218c791810d03ab3470a579580279ba971a48d" |
| 17 | - url: "https://pub.flutter-io.cn" | 17 | + url: "https://pub.dev" |
| 18 | source: hosted | 18 | source: hosted |
| 19 | version: "7.7.1" | 19 | version: "7.7.1" |
| 20 | archive: | 20 | archive: |
| 21 | dependency: transitive | 21 | dependency: transitive |
| 22 | description: | 22 | description: |
| 23 | name: archive | 23 | name: archive |
| 24 | - sha256: ace891da0862b0e4cabbb064ee3fd87b2728b898949fdb366d83fe98342c9f19 | ||
| 25 | - url: "https://pub.flutter-io.cn" | 24 | + sha256: "6c5bcd986e06b94e3c40244af471750840a3d2341d1f9763a1100a14add517b4" |
| 25 | + url: "https://pub.dev" | ||
| 26 | source: hosted | 26 | source: hosted |
| 27 | - version: "4.2.0" | 27 | + version: "4.3.0" |
| 28 | args: | 28 | args: |
| 29 | dependency: transitive | 29 | dependency: transitive |
| 30 | description: | 30 | description: |
| 31 | name: args | 31 | name: args |
| 32 | sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 | 32 | sha256: d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04 |
| 33 | - url: "https://pub.flutter-io.cn" | 33 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 41 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 49 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 57 | + url: "https://pub.dev" |
| 58 | source: hosted | 58 | source: hosted |
| 59 | version: "4.0.1" | 59 | version: "4.0.1" |
| 60 | build_config: | 60 | build_config: |
| @@ -62,23 +62,23 @@ packages: | @@ -62,23 +62,23 @@ packages: | ||
| 62 | description: | 62 | description: |
| 63 | name: build_config | 63 | name: build_config |
| 64 | sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187" | 64 | sha256: "4f64382b97504dc2fcdf487d5aae33418e08b4703fc21249e4db6d804a4d0187" |
| 65 | - url: "https://pub.flutter-io.cn" | 65 | + url: "https://pub.dev" |
| 66 | source: hosted | 66 | source: hosted |
| 67 | version: "1.2.0" | 67 | version: "1.2.0" |
| 68 | build_daemon: | 68 | build_daemon: |
| 69 | dependency: transitive | 69 | dependency: transitive |
| 70 | description: | 70 | description: |
| 71 | name: build_daemon | 71 | name: build_daemon |
| 72 | - sha256: e1d40ef3f7934986d5da2271b1ba07794921ce263e44d622fb6c406d76589e33 | ||
| 73 | - url: "https://pub.flutter-io.cn" | 72 | + sha256: fd754058c342243718d5171a95f352cfc9fcf0cba8cfa26df67cb13a5836db78 |
| 73 | + url: "https://pub.dev" | ||
| 74 | source: hosted | 74 | source: hosted |
| 75 | - version: "4.1.6" | 75 | + version: "4.1.2" |
| 76 | build_runner: | 76 | build_runner: |
| 77 | dependency: "direct dev" | 77 | dependency: "direct dev" |
| 78 | description: | 78 | description: |
| 79 | name: build_runner | 79 | name: build_runner |
| 80 | sha256: "4e54dbeefdc70691ba80b3bce3976af63b5425c8c07dface348dfee664a0edc1" | 80 | sha256: "4e54dbeefdc70691ba80b3bce3976af63b5425c8c07dface348dfee664a0edc1" |
| 81 | - url: "https://pub.flutter-io.cn" | 81 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 89 | + url: "https://pub.dev" |
| 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: f87ea98192116f7093cb214551ce1929caae0681fdba282b3d8b4462adee7bb7 | 96 | sha256: f87ea98192116f7093cb214551ce1929caae0681fdba282b3d8b4462adee7bb7 |
| 97 | - url: "https://pub.flutter-io.cn" | 97 | + url: "https://pub.dev" |
| 98 | source: hosted | 98 | source: hosted |
| 99 | version: "8.13.0" | 99 | version: "8.13.0" |
| 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.flutter-io.cn" | 105 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 113 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 121 | + url: "https://pub.dev" |
| 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: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b | 128 | sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b |
| 129 | - url: "https://pub.flutter-io.cn" | 129 | + url: "https://pub.dev" |
| 130 | source: hosted | 130 | source: hosted |
| 131 | version: "1.4.1" | 131 | version: "1.4.1" |
| 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.flutter-io.cn" | 137 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 145 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 153 | + url: "https://pub.dev" |
| 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: aa5932e94c6c39c2f9ec4e5e06dfdd11a9430a61f6c41b6ba75b28ce0c481baf | 160 | sha256: aa5932e94c6c39c2f9ec4e5e06dfdd11a9430a61f6c41b6ba75b28ce0c481baf |
| 161 | - url: "https://pub.flutter-io.cn" | 161 | + url: "https://pub.dev" |
| 162 | source: hosted | 162 | source: hosted |
| 163 | version: "4.12.0" | 163 | version: "4.12.0" |
| 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.flutter-io.cn" | 169 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 177 | + url: "https://pub.dev" |
| 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: f141ea4f277af142a0356955707f6556f37b03947d39d55585981a06ca437bd6 | 184 | sha256: f141ea4f277af142a0356955707f6556f37b03947d39d55585981a06ca437bd6 |
| 185 | - url: "https://pub.flutter-io.cn" | 185 | + url: "https://pub.dev" |
| 186 | source: hosted | 186 | source: hosted |
| 187 | version: "0.3.5+5" | 187 | version: "0.3.5+5" |
| 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.flutter-io.cn" | 193 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 201 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 209 | + url: "https://pub.dev" |
| 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: "852ec3b48cc431ac04fff978413c541502b67ffc3e26921e74e3d994694192c1" | 216 | sha256: "852ec3b48cc431ac04fff978413c541502b67ffc3e26921e74e3d994694192c1" |
| 217 | - url: "https://pub.flutter-io.cn" | 217 | + url: "https://pub.dev" |
| 218 | source: hosted | 218 | source: hosted |
| 219 | version: "5.11.1" | 219 | version: "5.11.1" |
| 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: "3a1b2cd7be71086f38504956e3ebcd2837288d231ff454bafa78021244102bfc" | 224 | sha256: "3a1b2cd7be71086f38504956e3ebcd2837288d231ff454bafa78021244102bfc" |
| 225 | - url: "https://pub.flutter-io.cn" | 225 | + url: "https://pub.dev" |
| 226 | source: hosted | 226 | source: hosted |
| 227 | version: "2.2.2" | 227 | version: "2.2.2" |
| 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.flutter-io.cn" | 233 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 241 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 249 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 257 | + url: "https://pub.dev" |
| 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: da76400e7872ce7637ffdce12749ec24169c25f6195c28372208e65a24bcd2ab | 264 | sha256: da76400e7872ce7637ffdce12749ec24169c25f6195c28372208e65a24bcd2ab |
| 265 | - url: "https://pub.flutter-io.cn" | 265 | + url: "https://pub.dev" |
| 266 | source: hosted | 266 | source: hosted |
| 267 | version: "0.9.4+1" | 267 | version: "0.9.4+1" |
| 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: d57c62362766b5e7ae739448650b66c6aab7a68ba7ecc65e04018652645ae0f4 | 272 | sha256: d57c62362766b5e7ae739448650b66c6aab7a68ba7ecc65e04018652645ae0f4 |
| 273 | - url: "https://pub.flutter-io.cn" | 273 | + url: "https://pub.dev" |
| 274 | source: hosted | 274 | source: hosted |
| 275 | version: "0.9.5+1" | 275 | version: "0.9.5+1" |
| 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.flutter-io.cn" | 281 | + url: "https://pub.dev" |
| 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: fbefc5fb92c6d3cbe8d284a2cd971b593bb07d2cd6da8557b81a862250b4acec | 288 | sha256: fbefc5fb92c6d3cbe8d284a2cd971b593bb07d2cd6da8557b81a862250b4acec |
| 289 | - url: "https://pub.flutter-io.cn" | 289 | + url: "https://pub.dev" |
| 290 | source: hosted | 290 | source: hosted |
| 291 | version: "0.9.3+6" | 291 | version: "0.9.3+6" |
| 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.flutter-io.cn" | 297 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 305 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 318 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 326 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 339 | + url: "https://pub.dev" |
| 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.flutter-io.cn" | 352 | + url: "https://pub.dev" |
| 353 | source: hosted | 353 | source: hosted |
| 354 | version: "5.1.0" | 354 | version: "5.1.0" |
| 355 | flutter_web_plugins: | 355 | flutter_web_plugins: |
| @@ -371,7 +371,7 @@ packages: | @@ -371,7 +371,7 @@ packages: | ||
| 371 | description: | 371 | description: |
| 372 | name: get | 372 | name: get |
| 373 | sha256: "5ed34a7925b85336e15d472cc4cfe7d9ebf4ab8e8b9f688585bf6b50f4c3d79a" | 373 | sha256: "5ed34a7925b85336e15d472cc4cfe7d9ebf4ab8e8b9f688585bf6b50f4c3d79a" |
| 374 | - url: "https://pub.flutter-io.cn" | 374 | + url: "https://pub.dev" |
| 375 | source: hosted | 375 | source: hosted |
| 376 | version: "4.7.3" | 376 | version: "4.7.3" |
| 377 | glob: | 377 | glob: |
| @@ -379,7 +379,7 @@ packages: | @@ -379,7 +379,7 @@ packages: | ||
| 379 | description: | 379 | description: |
| 380 | name: glob | 380 | name: glob |
| 381 | sha256: "218aeb56050c714f62a3182775320dfa04602b55074873e24e31bbd39bda96fb" | 381 | sha256: "218aeb56050c714f62a3182775320dfa04602b55074873e24e31bbd39bda96fb" |
| 382 | - url: "https://pub.flutter-io.cn" | 382 | + url: "https://pub.dev" |
| 383 | source: hosted | 383 | source: hosted |
| 384 | version: "2.2.0" | 384 | version: "2.2.0" |
| 385 | graphs: | 385 | graphs: |
| @@ -387,7 +387,7 @@ packages: | @@ -387,7 +387,7 @@ packages: | ||
| 387 | description: | 387 | description: |
| 388 | name: graphs | 388 | name: graphs |
| 389 | sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" | 389 | sha256: "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0" |
| 390 | - url: "https://pub.flutter-io.cn" | 390 | + url: "https://pub.dev" |
| 391 | source: hosted | 391 | source: hosted |
| 392 | version: "2.3.2" | 392 | version: "2.3.2" |
| 393 | hooks: | 393 | hooks: |
| @@ -395,7 +395,7 @@ packages: | @@ -395,7 +395,7 @@ packages: | ||
| 395 | description: | 395 | description: |
| 396 | name: hooks | 396 | name: hooks |
| 397 | sha256: eaac480a35ec0814146c2c48d96aaa829e0e44a7662c88ae84c9edf4bc35651f | 397 | sha256: eaac480a35ec0814146c2c48d96aaa829e0e44a7662c88ae84c9edf4bc35651f |
| 398 | - url: "https://pub.flutter-io.cn" | 398 | + url: "https://pub.dev" |
| 399 | source: hosted | 399 | source: hosted |
| 400 | version: "2.2.0" | 400 | version: "2.2.0" |
| 401 | http: | 401 | http: |
| @@ -403,7 +403,7 @@ packages: | @@ -403,7 +403,7 @@ packages: | ||
| 403 | description: | 403 | description: |
| 404 | name: http | 404 | name: http |
| 405 | sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" | 405 | sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412" |
| 406 | - url: "https://pub.flutter-io.cn" | 406 | + url: "https://pub.dev" |
| 407 | source: hosted | 407 | source: hosted |
| 408 | version: "1.6.0" | 408 | version: "1.6.0" |
| 409 | http_multi_server: | 409 | http_multi_server: |
| @@ -411,7 +411,7 @@ packages: | @@ -411,7 +411,7 @@ packages: | ||
| 411 | description: | 411 | description: |
| 412 | name: http_multi_server | 412 | name: http_multi_server |
| 413 | sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 | 413 | sha256: aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8 |
| 414 | - url: "https://pub.flutter-io.cn" | 414 | + url: "https://pub.dev" |
| 415 | source: hosted | 415 | source: hosted |
| 416 | version: "3.2.2" | 416 | version: "3.2.2" |
| 417 | http_parser: | 417 | http_parser: |
| @@ -419,7 +419,7 @@ packages: | @@ -419,7 +419,7 @@ packages: | ||
| 419 | description: | 419 | description: |
| 420 | name: http_parser | 420 | name: http_parser |
| 421 | sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" | 421 | sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571" |
| 422 | - url: "https://pub.flutter-io.cn" | 422 | + url: "https://pub.dev" |
| 423 | source: hosted | 423 | source: hosted |
| 424 | version: "4.1.2" | 424 | version: "4.1.2" |
| 425 | image_cropper: | 425 | image_cropper: |
| @@ -463,7 +463,7 @@ packages: | @@ -463,7 +463,7 @@ packages: | ||
| 463 | description: | 463 | description: |
| 464 | name: image_picker_android | 464 | name: image_picker_android |
| 465 | sha256: d5b3e1774af29c9ab00103afb0d4614070f924d2e0057ac867ec98800114793f | 465 | sha256: d5b3e1774af29c9ab00103afb0d4614070f924d2e0057ac867ec98800114793f |
| 466 | - url: "https://pub.flutter-io.cn" | 466 | + url: "https://pub.dev" |
| 467 | source: hosted | 467 | source: hosted |
| 468 | version: "0.8.13+17" | 468 | version: "0.8.13+17" |
| 469 | image_picker_for_web: | 469 | image_picker_for_web: |
| @@ -471,7 +471,7 @@ packages: | @@ -471,7 +471,7 @@ packages: | ||
| 471 | description: | 471 | description: |
| 472 | name: image_picker_for_web | 472 | name: image_picker_for_web |
| 473 | sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214" | 473 | sha256: "66257a3191ab360d23a55c8241c91a6e329d31e94efa7be9cf7a212e65850214" |
| 474 | - url: "https://pub.flutter-io.cn" | 474 | + url: "https://pub.dev" |
| 475 | source: hosted | 475 | source: hosted |
| 476 | version: "3.1.1" | 476 | version: "3.1.1" |
| 477 | image_picker_ios: | 477 | image_picker_ios: |
| @@ -479,7 +479,7 @@ packages: | @@ -479,7 +479,7 @@ packages: | ||
| 479 | description: | 479 | description: |
| 480 | name: image_picker_ios | 480 | name: image_picker_ios |
| 481 | sha256: ee3885b6fcd71958fbc79770dd194c63371439d536d69c47b279171a486482ae | 481 | sha256: ee3885b6fcd71958fbc79770dd194c63371439d536d69c47b279171a486482ae |
| 482 | - url: "https://pub.flutter-io.cn" | 482 | + url: "https://pub.dev" |
| 483 | source: hosted | 483 | source: hosted |
| 484 | version: "0.8.13+7" | 484 | version: "0.8.13+7" |
| 485 | image_picker_linux: | 485 | image_picker_linux: |
| @@ -487,7 +487,7 @@ packages: | @@ -487,7 +487,7 @@ packages: | ||
| 487 | description: | 487 | description: |
| 488 | name: image_picker_linux | 488 | name: image_picker_linux |
| 489 | sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" | 489 | sha256: "1f81c5f2046b9ab724f85523e4af65be1d47b038160a8c8deed909762c308ed4" |
| 490 | - url: "https://pub.flutter-io.cn" | 490 | + url: "https://pub.dev" |
| 491 | source: hosted | 491 | source: hosted |
| 492 | version: "0.2.2" | 492 | version: "0.2.2" |
| 493 | image_picker_macos: | 493 | image_picker_macos: |
| @@ -495,7 +495,7 @@ packages: | @@ -495,7 +495,7 @@ packages: | ||
| 495 | description: | 495 | description: |
| 496 | name: image_picker_macos | 496 | name: image_picker_macos |
| 497 | sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" | 497 | sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91" |
| 498 | - url: "https://pub.flutter-io.cn" | 498 | + url: "https://pub.dev" |
| 499 | source: hosted | 499 | source: hosted |
| 500 | version: "0.2.2+1" | 500 | version: "0.2.2+1" |
| 501 | image_picker_ohos: | 501 | image_picker_ohos: |
| @@ -512,7 +512,7 @@ packages: | @@ -512,7 +512,7 @@ packages: | ||
| 512 | description: | 512 | description: |
| 513 | name: image_picker_platform_interface | 513 | name: image_picker_platform_interface |
| 514 | sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" | 514 | sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" |
| 515 | - url: "https://pub.flutter-io.cn" | 515 | + url: "https://pub.dev" |
| 516 | source: hosted | 516 | source: hosted |
| 517 | version: "2.11.1" | 517 | version: "2.11.1" |
| 518 | image_picker_windows: | 518 | image_picker_windows: |
| @@ -520,7 +520,7 @@ packages: | @@ -520,7 +520,7 @@ packages: | ||
| 520 | description: | 520 | description: |
| 521 | name: image_picker_windows | 521 | name: image_picker_windows |
| 522 | sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae | 522 | sha256: d248c86554a72b5495a31c56f060cf73a41c7ff541689327b1a7dbccc33adfae |
| 523 | - url: "https://pub.flutter-io.cn" | 523 | + url: "https://pub.dev" |
| 524 | source: hosted | 524 | source: hosted |
| 525 | version: "0.2.2" | 525 | version: "0.2.2" |
| 526 | intl: | 526 | intl: |
| @@ -528,7 +528,7 @@ packages: | @@ -528,7 +528,7 @@ packages: | ||
| 528 | description: | 528 | description: |
| 529 | name: intl | 529 | name: intl |
| 530 | sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" | 530 | sha256: "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5" |
| 531 | - url: "https://pub.flutter-io.cn" | 531 | + url: "https://pub.dev" |
| 532 | source: hosted | 532 | source: hosted |
| 533 | version: "0.20.2" | 533 | version: "0.20.2" |
| 534 | io: | 534 | io: |
| @@ -536,7 +536,7 @@ packages: | @@ -536,7 +536,7 @@ packages: | ||
| 536 | description: | 536 | description: |
| 537 | name: io | 537 | name: io |
| 538 | sha256: "2635216ca6a737e60de577ffa1a48a0bec76ca8a62917cfc1bb88c14c570646f" | 538 | sha256: "2635216ca6a737e60de577ffa1a48a0bec76ca8a62917cfc1bb88c14c570646f" |
| 539 | - url: "https://pub.flutter-io.cn" | 539 | + url: "https://pub.dev" |
| 540 | source: hosted | 540 | source: hosted |
| 541 | version: "1.1.0" | 541 | version: "1.1.0" |
| 542 | jni: | 542 | jni: |
| @@ -544,7 +544,7 @@ packages: | @@ -544,7 +544,7 @@ packages: | ||
| 544 | description: | 544 | description: |
| 545 | name: jni | 545 | name: jni |
| 546 | sha256: f038e58b4dc2c9037f50e233175086337e0b305e356d28211bf55f21c504cbd3 | 546 | sha256: f038e58b4dc2c9037f50e233175086337e0b305e356d28211bf55f21c504cbd3 |
| 547 | - url: "https://pub.flutter-io.cn" | 547 | + url: "https://pub.dev" |
| 548 | source: hosted | 548 | source: hosted |
| 549 | version: "1.0.3" | 549 | version: "1.0.3" |
| 550 | jni_flutter: | 550 | jni_flutter: |
| @@ -552,7 +552,7 @@ packages: | @@ -552,7 +552,7 @@ packages: | ||
| 552 | description: | 552 | description: |
| 553 | name: jni_flutter | 553 | name: jni_flutter |
| 554 | sha256: b2310cdd4c18c65c081ab141a41efa94aa26c65431803703ece51996f174f351 | 554 | sha256: b2310cdd4c18c65c081ab141a41efa94aa26c65431803703ece51996f174f351 |
| 555 | - url: "https://pub.flutter-io.cn" | 555 | + url: "https://pub.dev" |
| 556 | source: hosted | 556 | source: hosted |
| 557 | version: "1.0.3" | 557 | version: "1.0.3" |
| 558 | jni_util: | 558 | jni_util: |
| @@ -560,7 +560,7 @@ packages: | @@ -560,7 +560,7 @@ packages: | ||
| 560 | description: | 560 | description: |
| 561 | name: jni_util | 561 | name: jni_util |
| 562 | sha256: "1ba86da04a5f2bf18fde2edb235587e70c5b0fc5bd4ba955f46b00942c3fc35f" | 562 | sha256: "1ba86da04a5f2bf18fde2edb235587e70c5b0fc5bd4ba955f46b00942c3fc35f" |
| 563 | - url: "https://pub.flutter-io.cn" | 563 | + url: "https://pub.dev" |
| 564 | source: hosted | 564 | source: hosted |
| 565 | version: "1.0.0" | 565 | version: "1.0.0" |
| 566 | json_annotation: | 566 | json_annotation: |
| @@ -568,7 +568,7 @@ packages: | @@ -568,7 +568,7 @@ packages: | ||
| 568 | description: | 568 | description: |
| 569 | name: json_annotation | 569 | name: json_annotation |
| 570 | sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80" | 570 | sha256: "2a743920d81b7910627f68ee2c9ac1fc0bfee32b9fc3403587d7c6791ca12f80" |
| 571 | - url: "https://pub.flutter-io.cn" | 571 | + url: "https://pub.dev" |
| 572 | source: hosted | 572 | source: hosted |
| 573 | version: "4.12.0" | 573 | version: "4.12.0" |
| 574 | leak_tracker: | 574 | leak_tracker: |
| @@ -576,7 +576,7 @@ packages: | @@ -576,7 +576,7 @@ packages: | ||
| 576 | description: | 576 | description: |
| 577 | name: leak_tracker | 577 | name: leak_tracker |
| 578 | sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" | 578 | sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de" |
| 579 | - url: "https://pub.flutter-io.cn" | 579 | + url: "https://pub.dev" |
| 580 | source: hosted | 580 | source: hosted |
| 581 | version: "11.0.2" | 581 | version: "11.0.2" |
| 582 | leak_tracker_flutter_testing: | 582 | leak_tracker_flutter_testing: |
| @@ -584,7 +584,7 @@ packages: | @@ -584,7 +584,7 @@ packages: | ||
| 584 | description: | 584 | description: |
| 585 | name: leak_tracker_flutter_testing | 585 | name: leak_tracker_flutter_testing |
| 586 | sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" | 586 | sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1" |
| 587 | - url: "https://pub.flutter-io.cn" | 587 | + url: "https://pub.dev" |
| 588 | source: hosted | 588 | source: hosted |
| 589 | version: "3.0.10" | 589 | version: "3.0.10" |
| 590 | leak_tracker_testing: | 590 | leak_tracker_testing: |
| @@ -592,7 +592,7 @@ packages: | @@ -592,7 +592,7 @@ packages: | ||
| 592 | description: | 592 | description: |
| 593 | name: leak_tracker_testing | 593 | name: leak_tracker_testing |
| 594 | sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" | 594 | sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1" |
| 595 | - url: "https://pub.flutter-io.cn" | 595 | + url: "https://pub.dev" |
| 596 | source: hosted | 596 | source: hosted |
| 597 | version: "3.0.2" | 597 | version: "3.0.2" |
| 598 | lints: | 598 | lints: |
| @@ -600,7 +600,7 @@ packages: | @@ -600,7 +600,7 @@ packages: | ||
| 600 | description: | 600 | description: |
| 601 | name: lints | 601 | name: lints |
| 602 | sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 | 602 | sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7 |
| 603 | - url: "https://pub.flutter-io.cn" | 603 | + url: "https://pub.dev" |
| 604 | source: hosted | 604 | source: hosted |
| 605 | version: "5.1.1" | 605 | version: "5.1.1" |
| 606 | logger: | 606 | logger: |
| @@ -608,7 +608,7 @@ packages: | @@ -608,7 +608,7 @@ packages: | ||
| 608 | description: | 608 | description: |
| 609 | name: logger | 609 | name: logger |
| 610 | sha256: "2a0dc097e7b01d942475bdd552356db2d0f768b05540bd4b2b53f1840f2239a7" | 610 | sha256: "2a0dc097e7b01d942475bdd552356db2d0f768b05540bd4b2b53f1840f2239a7" |
| 611 | - url: "https://pub.flutter-io.cn" | 611 | + url: "https://pub.dev" |
| 612 | source: hosted | 612 | source: hosted |
| 613 | version: "2.8.0" | 613 | version: "2.8.0" |
| 614 | logging: | 614 | logging: |
| @@ -616,7 +616,7 @@ packages: | @@ -616,7 +616,7 @@ packages: | ||
| 616 | description: | 616 | description: |
| 617 | name: logging | 617 | name: logging |
| 618 | sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 | 618 | sha256: c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61 |
| 619 | - url: "https://pub.flutter-io.cn" | 619 | + url: "https://pub.dev" |
| 620 | source: hosted | 620 | source: hosted |
| 621 | version: "1.3.0" | 621 | version: "1.3.0" |
| 622 | lottie: | 622 | lottie: |
| @@ -624,7 +624,7 @@ packages: | @@ -624,7 +624,7 @@ packages: | ||
| 624 | description: | 624 | description: |
| 625 | name: lottie | 625 | name: lottie |
| 626 | sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950 | 626 | sha256: c5fa04a80a620066c15cf19cc44773e19e9b38e989ff23ea32e5903ef1015950 |
| 627 | - url: "https://pub.flutter-io.cn" | 627 | + url: "https://pub.dev" |
| 628 | source: hosted | 628 | source: hosted |
| 629 | version: "3.3.1" | 629 | version: "3.3.1" |
| 630 | matcher: | 630 | matcher: |
| @@ -632,7 +632,7 @@ packages: | @@ -632,7 +632,7 @@ packages: | ||
| 632 | description: | 632 | description: |
| 633 | name: matcher | 633 | name: matcher |
| 634 | sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 | 634 | sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 |
| 635 | - url: "https://pub.flutter-io.cn" | 635 | + url: "https://pub.dev" |
| 636 | source: hosted | 636 | source: hosted |
| 637 | version: "0.12.19" | 637 | version: "0.12.19" |
| 638 | material_color_utilities: | 638 | material_color_utilities: |
| @@ -640,7 +640,7 @@ packages: | @@ -640,7 +640,7 @@ packages: | ||
| 640 | description: | 640 | description: |
| 641 | name: material_color_utilities | 641 | name: material_color_utilities |
| 642 | sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" | 642 | sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" |
| 643 | - url: "https://pub.flutter-io.cn" | 643 | + url: "https://pub.dev" |
| 644 | source: hosted | 644 | source: hosted |
| 645 | version: "0.13.0" | 645 | version: "0.13.0" |
| 646 | meta: | 646 | meta: |
| @@ -648,7 +648,7 @@ packages: | @@ -648,7 +648,7 @@ packages: | ||
| 648 | description: | 648 | description: |
| 649 | name: meta | 649 | name: meta |
| 650 | sha256: "307249ce4ff29d58a18e97f6345f539382eb9c9c29ecda628900f31de0443dd9" | 650 | sha256: "307249ce4ff29d58a18e97f6345f539382eb9c9c29ecda628900f31de0443dd9" |
| 651 | - url: "https://pub.flutter-io.cn" | 651 | + url: "https://pub.dev" |
| 652 | source: hosted | 652 | source: hosted |
| 653 | version: "1.19.0" | 653 | version: "1.19.0" |
| 654 | mime: | 654 | mime: |
| @@ -656,7 +656,7 @@ packages: | @@ -656,7 +656,7 @@ packages: | ||
| 656 | description: | 656 | description: |
| 657 | name: mime | 657 | name: mime |
| 658 | sha256: bd47de35f07e27267e69c8c8b22edf9473bfee170a60d60fcc93730c5144b7f6 | 658 | sha256: bd47de35f07e27267e69c8c8b22edf9473bfee170a60d60fcc93730c5144b7f6 |
| 659 | - url: "https://pub.flutter-io.cn" | 659 | + url: "https://pub.dev" |
| 660 | source: hosted | 660 | source: hosted |
| 661 | version: "2.1.0" | 661 | version: "2.1.0" |
| 662 | objective_c: | 662 | objective_c: |
| @@ -664,7 +664,7 @@ packages: | @@ -664,7 +664,7 @@ packages: | ||
| 664 | description: | 664 | description: |
| 665 | name: objective_c | 665 | name: objective_c |
| 666 | sha256: ad56fd53a78ff6b1472fa59ff2a4e8b8ccabafc586fc263a1dfad0b99b5553e3 | 666 | sha256: ad56fd53a78ff6b1472fa59ff2a4e8b8ccabafc586fc263a1dfad0b99b5553e3 |
| 667 | - url: "https://pub.flutter-io.cn" | 667 | + url: "https://pub.dev" |
| 668 | source: hosted | 668 | source: hosted |
| 669 | version: "9.6.0" | 669 | version: "9.6.0" |
| 670 | octo_image: | 670 | octo_image: |
| @@ -672,7 +672,7 @@ packages: | @@ -672,7 +672,7 @@ packages: | ||
| 672 | description: | 672 | description: |
| 673 | name: octo_image | 673 | name: octo_image |
| 674 | sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" | 674 | sha256: "34faa6639a78c7e3cbe79be6f9f96535867e879748ade7d17c9b1ae7536293bd" |
| 675 | - url: "https://pub.flutter-io.cn" | 675 | + url: "https://pub.dev" |
| 676 | source: hosted | 676 | source: hosted |
| 677 | version: "2.1.0" | 677 | version: "2.1.0" |
| 678 | package_config: | 678 | package_config: |
| @@ -680,7 +680,7 @@ packages: | @@ -680,7 +680,7 @@ packages: | ||
| 680 | description: | 680 | description: |
| 681 | name: package_config | 681 | name: package_config |
| 682 | sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc | 682 | sha256: f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc |
| 683 | - url: "https://pub.flutter-io.cn" | 683 | + url: "https://pub.dev" |
| 684 | source: hosted | 684 | source: hosted |
| 685 | version: "2.2.0" | 685 | version: "2.2.0" |
| 686 | path: | 686 | path: |
| @@ -688,7 +688,7 @@ packages: | @@ -688,7 +688,7 @@ packages: | ||
| 688 | description: | 688 | description: |
| 689 | name: path | 689 | name: path |
| 690 | sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" | 690 | sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5" |
| 691 | - url: "https://pub.flutter-io.cn" | 691 | + url: "https://pub.dev" |
| 692 | source: hosted | 692 | source: hosted |
| 693 | version: "1.9.1" | 693 | version: "1.9.1" |
| 694 | path_provider: | 694 | path_provider: |
| @@ -705,7 +705,7 @@ packages: | @@ -705,7 +705,7 @@ packages: | ||
| 705 | description: | 705 | description: |
| 706 | name: path_provider_android | 706 | name: path_provider_android |
| 707 | sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd" | 707 | sha256: "69cbd515a62b94d32a7944f086b2f82b4ac40a1d45bebfc00813a430ab2dabcd" |
| 708 | - url: "https://pub.flutter-io.cn" | 708 | + url: "https://pub.dev" |
| 709 | source: hosted | 709 | source: hosted |
| 710 | version: "2.3.1" | 710 | version: "2.3.1" |
| 711 | path_provider_foundation: | 711 | path_provider_foundation: |
| @@ -713,7 +713,7 @@ packages: | @@ -713,7 +713,7 @@ packages: | ||
| 713 | description: | 713 | description: |
| 714 | name: path_provider_foundation | 714 | name: path_provider_foundation |
| 715 | sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699" | 715 | sha256: "2a376b7d6392d80cd3705782d2caa734ca4727776db0b6ec36ef3f1855197699" |
| 716 | - url: "https://pub.flutter-io.cn" | 716 | + url: "https://pub.dev" |
| 717 | source: hosted | 717 | source: hosted |
| 718 | version: "2.6.0" | 718 | version: "2.6.0" |
| 719 | path_provider_linux: | 719 | path_provider_linux: |
| @@ -721,7 +721,7 @@ packages: | @@ -721,7 +721,7 @@ packages: | ||
| 721 | description: | 721 | description: |
| 722 | name: path_provider_linux | 722 | name: path_provider_linux |
| 723 | sha256: "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16" | 723 | sha256: "58c2005f147315b11e9b4a7bc889cd5203e250cba8e3f012dae259b4972b5c16" |
| 724 | - url: "https://pub.flutter-io.cn" | 724 | + url: "https://pub.dev" |
| 725 | source: hosted | 725 | source: hosted |
| 726 | version: "2.2.2" | 726 | version: "2.2.2" |
| 727 | path_provider_ohos: | 727 | path_provider_ohos: |
| @@ -738,7 +738,7 @@ packages: | @@ -738,7 +738,7 @@ packages: | ||
| 738 | description: | 738 | description: |
| 739 | name: path_provider_platform_interface | 739 | name: path_provider_platform_interface |
| 740 | sha256: "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda" | 740 | sha256: "484838772624c3a4b94f1e44a3e19897fee738f2d5c4ce448443b0417f7c9dda" |
| 741 | - url: "https://pub.flutter-io.cn" | 741 | + url: "https://pub.dev" |
| 742 | source: hosted | 742 | source: hosted |
| 743 | version: "2.1.3" | 743 | version: "2.1.3" |
| 744 | path_provider_windows: | 744 | path_provider_windows: |
| @@ -746,7 +746,7 @@ packages: | @@ -746,7 +746,7 @@ packages: | ||
| 746 | description: | 746 | description: |
| 747 | name: path_provider_windows | 747 | name: path_provider_windows |
| 748 | sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 | 748 | sha256: bd6f00dbd873bfb70d0761682da2b3a2c2fccc2b9e84c495821639601d81afe7 |
| 749 | - url: "https://pub.flutter-io.cn" | 749 | + url: "https://pub.dev" |
| 750 | source: hosted | 750 | source: hosted |
| 751 | version: "2.3.0" | 751 | version: "2.3.0" |
| 752 | permission_handler: | 752 | permission_handler: |
| @@ -754,7 +754,7 @@ packages: | @@ -754,7 +754,7 @@ packages: | ||
| 754 | description: | 754 | description: |
| 755 | name: permission_handler | 755 | name: permission_handler |
| 756 | sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" | 756 | sha256: "59adad729136f01ea9e35a48f5d1395e25cba6cea552249ddbe9cf950f5d7849" |
| 757 | - url: "https://pub.flutter-io.cn" | 757 | + url: "https://pub.dev" |
| 758 | source: hosted | 758 | source: hosted |
| 759 | version: "11.4.0" | 759 | version: "11.4.0" |
| 760 | permission_handler_android: | 760 | permission_handler_android: |
| @@ -762,7 +762,7 @@ packages: | @@ -762,7 +762,7 @@ packages: | ||
| 762 | description: | 762 | description: |
| 763 | name: permission_handler_android | 763 | name: permission_handler_android |
| 764 | sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc | 764 | sha256: d3971dcdd76182a0c198c096b5db2f0884b0d4196723d21a866fc4cdea057ebc |
| 765 | - url: "https://pub.flutter-io.cn" | 765 | + url: "https://pub.dev" |
| 766 | source: hosted | 766 | source: hosted |
| 767 | version: "12.1.0" | 767 | version: "12.1.0" |
| 768 | permission_handler_apple: | 768 | permission_handler_apple: |
| @@ -770,7 +770,7 @@ packages: | @@ -770,7 +770,7 @@ packages: | ||
| 770 | description: | 770 | description: |
| 771 | name: permission_handler_apple | 771 | name: permission_handler_apple |
| 772 | sha256: f49cb15a064ea9d974fc7fbb302099353b7b170d07284e86e264561579e5bcf8 | 772 | sha256: f49cb15a064ea9d974fc7fbb302099353b7b170d07284e86e264561579e5bcf8 |
| 773 | - url: "https://pub.flutter-io.cn" | 773 | + url: "https://pub.dev" |
| 774 | source: hosted | 774 | source: hosted |
| 775 | version: "9.6.1" | 775 | version: "9.6.1" |
| 776 | permission_handler_html: | 776 | permission_handler_html: |
| @@ -778,7 +778,7 @@ packages: | @@ -778,7 +778,7 @@ packages: | ||
| 778 | description: | 778 | description: |
| 779 | name: permission_handler_html | 779 | name: permission_handler_html |
| 780 | sha256: "6ea98b3f17f60d3b527f2647ed2ab4dc0f6bfe25b22cb1c363f5d8f62252f6ac" | 780 | sha256: "6ea98b3f17f60d3b527f2647ed2ab4dc0f6bfe25b22cb1c363f5d8f62252f6ac" |
| 781 | - url: "https://pub.flutter-io.cn" | 781 | + url: "https://pub.dev" |
| 782 | source: hosted | 782 | source: hosted |
| 783 | version: "0.1.4+1" | 783 | version: "0.1.4+1" |
| 784 | permission_handler_ohos: | 784 | permission_handler_ohos: |
| @@ -795,7 +795,7 @@ packages: | @@ -795,7 +795,7 @@ packages: | ||
| 795 | description: | 795 | description: |
| 796 | name: permission_handler_platform_interface | 796 | name: permission_handler_platform_interface |
| 797 | sha256: ed86a61c190258fdd65de395ea0632822e3415c1faec38eae0c31b479c28a531 | 797 | sha256: ed86a61c190258fdd65de395ea0632822e3415c1faec38eae0c31b479c28a531 |
| 798 | - url: "https://pub.flutter-io.cn" | 798 | + url: "https://pub.dev" |
| 799 | source: hosted | 799 | source: hosted |
| 800 | version: "4.4.1" | 800 | version: "4.4.1" |
| 801 | permission_handler_windows: | 801 | permission_handler_windows: |
| @@ -803,7 +803,7 @@ packages: | @@ -803,7 +803,7 @@ packages: | ||
| 803 | description: | 803 | description: |
| 804 | name: permission_handler_windows | 804 | name: permission_handler_windows |
| 805 | sha256: caeae01858a0a7d2df67a445ac98e1ad95e55a0e77c73044f4e9b1c8c2289cbd | 805 | sha256: caeae01858a0a7d2df67a445ac98e1ad95e55a0e77c73044f4e9b1c8c2289cbd |
| 806 | - url: "https://pub.flutter-io.cn" | 806 | + url: "https://pub.dev" |
| 807 | source: hosted | 807 | source: hosted |
| 808 | version: "0.2.2" | 808 | version: "0.2.2" |
| 809 | pigeon: | 809 | pigeon: |
| @@ -820,7 +820,7 @@ packages: | @@ -820,7 +820,7 @@ packages: | ||
| 820 | description: | 820 | description: |
| 821 | name: platform | 821 | name: platform |
| 822 | sha256: a36d119c13416516a7b5913fbe8af8531e11633d784c550b2125f76c758524ec | 822 | sha256: a36d119c13416516a7b5913fbe8af8531e11633d784c550b2125f76c758524ec |
| 823 | - url: "https://pub.flutter-io.cn" | 823 | + url: "https://pub.dev" |
| 824 | source: hosted | 824 | source: hosted |
| 825 | version: "3.2.0" | 825 | version: "3.2.0" |
| 826 | plugin_platform_interface: | 826 | plugin_platform_interface: |
| @@ -828,7 +828,7 @@ packages: | @@ -828,7 +828,7 @@ packages: | ||
| 828 | description: | 828 | description: |
| 829 | name: plugin_platform_interface | 829 | name: plugin_platform_interface |
| 830 | sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" | 830 | sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02" |
| 831 | - url: "https://pub.flutter-io.cn" | 831 | + url: "https://pub.dev" |
| 832 | source: hosted | 832 | source: hosted |
| 833 | version: "2.1.8" | 833 | version: "2.1.8" |
| 834 | pool: | 834 | pool: |
| @@ -836,7 +836,7 @@ packages: | @@ -836,7 +836,7 @@ packages: | ||
| 836 | description: | 836 | description: |
| 837 | name: pool | 837 | name: pool |
| 838 | sha256: "4177f68c237ea2128d1bee66ac17b2ce05ba3dbaafcbdd54c5d40a39d0b6b11c" | 838 | sha256: "4177f68c237ea2128d1bee66ac17b2ce05ba3dbaafcbdd54c5d40a39d0b6b11c" |
| 839 | - url: "https://pub.flutter-io.cn" | 839 | + url: "https://pub.dev" |
| 840 | source: hosted | 840 | source: hosted |
| 841 | version: "1.5.3" | 841 | version: "1.5.3" |
| 842 | posix: | 842 | posix: |
| @@ -844,7 +844,7 @@ packages: | @@ -844,7 +844,7 @@ packages: | ||
| 844 | description: | 844 | description: |
| 845 | name: posix | 845 | name: posix |
| 846 | sha256: bc1bad54ad2b735816e31f8d4600cfde6c7839975085ddfbca48b6c9f7c4044e | 846 | sha256: bc1bad54ad2b735816e31f8d4600cfde6c7839975085ddfbca48b6c9f7c4044e |
| 847 | - url: "https://pub.flutter-io.cn" | 847 | + url: "https://pub.dev" |
| 848 | source: hosted | 848 | source: hosted |
| 849 | version: "6.5.2" | 849 | version: "6.5.2" |
| 850 | pretty_dio_logger: | 850 | pretty_dio_logger: |
| @@ -852,7 +852,7 @@ packages: | @@ -852,7 +852,7 @@ packages: | ||
| 852 | description: | 852 | description: |
| 853 | name: pretty_dio_logger | 853 | name: pretty_dio_logger |
| 854 | sha256: "36f2101299786d567869493e2f5731de61ce130faa14679473b26905a92b6407" | 854 | sha256: "36f2101299786d567869493e2f5731de61ce130faa14679473b26905a92b6407" |
| 855 | - url: "https://pub.flutter-io.cn" | 855 | + url: "https://pub.dev" |
| 856 | source: hosted | 856 | source: hosted |
| 857 | version: "1.4.0" | 857 | version: "1.4.0" |
| 858 | pub_semver: | 858 | pub_semver: |
| @@ -860,7 +860,7 @@ packages: | @@ -860,7 +860,7 @@ packages: | ||
| 860 | description: | 860 | description: |
| 861 | name: pub_semver | 861 | name: pub_semver |
| 862 | sha256: "261236774e8b1d69cfc6b9eabbc96c40f25e7a2d6b171f3385d4f65d5734fb24" | 862 | sha256: "261236774e8b1d69cfc6b9eabbc96c40f25e7a2d6b171f3385d4f65d5734fb24" |
| 863 | - url: "https://pub.flutter-io.cn" | 863 | + url: "https://pub.dev" |
| 864 | source: hosted | 864 | source: hosted |
| 865 | version: "2.2.1" | 865 | version: "2.2.1" |
| 866 | pubspec_parse: | 866 | pubspec_parse: |
| @@ -868,7 +868,7 @@ packages: | @@ -868,7 +868,7 @@ packages: | ||
| 868 | description: | 868 | description: |
| 869 | name: pubspec_parse | 869 | name: pubspec_parse |
| 870 | sha256: c38b81cbf34450b67e0265d73433569d12e34782e30ed769c9cc99c9d5f2e796 | 870 | sha256: c38b81cbf34450b67e0265d73433569d12e34782e30ed769c9cc99c9d5f2e796 |
| 871 | - url: "https://pub.flutter-io.cn" | 871 | + url: "https://pub.dev" |
| 872 | source: hosted | 872 | source: hosted |
| 873 | version: "1.6.0" | 873 | version: "1.6.0" |
| 874 | record_use: | 874 | record_use: |
| @@ -876,7 +876,7 @@ packages: | @@ -876,7 +876,7 @@ packages: | ||
| 876 | description: | 876 | description: |
| 877 | name: record_use | 877 | name: record_use |
| 878 | sha256: "1cb8564af8d43b464294411db9217f5ec04891c6f22ee2c32d73ae05e88a6bd2" | 878 | sha256: "1cb8564af8d43b464294411db9217f5ec04891c6f22ee2c32d73ae05e88a6bd2" |
| 879 | - url: "https://pub.flutter-io.cn" | 879 | + url: "https://pub.dev" |
| 880 | source: hosted | 880 | source: hosted |
| 881 | version: "1.1.1" | 881 | version: "1.1.1" |
| 882 | rxdart: | 882 | rxdart: |
| @@ -884,7 +884,7 @@ packages: | @@ -884,7 +884,7 @@ packages: | ||
| 884 | description: | 884 | description: |
| 885 | name: rxdart | 885 | name: rxdart |
| 886 | sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" | 886 | sha256: "5c3004a4a8dbb94bd4bf5412a4def4acdaa12e12f269737a5751369e12d1a962" |
| 887 | - url: "https://pub.flutter-io.cn" | 887 | + url: "https://pub.dev" |
| 888 | source: hosted | 888 | source: hosted |
| 889 | version: "0.28.0" | 889 | version: "0.28.0" |
| 890 | share_plus: | 890 | share_plus: |
| @@ -919,7 +919,7 @@ packages: | @@ -919,7 +919,7 @@ packages: | ||
| 919 | description: | 919 | description: |
| 920 | name: shared_preferences_android | 920 | name: shared_preferences_android |
| 921 | sha256: e8d4762b1e2e8578fc4d0fd548cebf24afd24f49719c08974df92834565e2c53 | 921 | sha256: e8d4762b1e2e8578fc4d0fd548cebf24afd24f49719c08974df92834565e2c53 |
| 922 | - url: "https://pub.flutter-io.cn" | 922 | + url: "https://pub.dev" |
| 923 | source: hosted | 923 | source: hosted |
| 924 | version: "2.4.23" | 924 | version: "2.4.23" |
| 925 | shared_preferences_foundation: | 925 | shared_preferences_foundation: |
| @@ -927,7 +927,7 @@ packages: | @@ -927,7 +927,7 @@ packages: | ||
| 927 | description: | 927 | description: |
| 928 | name: shared_preferences_foundation | 928 | name: shared_preferences_foundation |
| 929 | sha256: "2ec3934efa51e46117f23031cc141b8fc878e8525b94ec1ea4f7f586cf1b47ea" | 929 | sha256: "2ec3934efa51e46117f23031cc141b8fc878e8525b94ec1ea4f7f586cf1b47ea" |
| 930 | - url: "https://pub.flutter-io.cn" | 930 | + url: "https://pub.dev" |
| 931 | source: hosted | 931 | source: hosted |
| 932 | version: "2.5.7" | 932 | version: "2.5.7" |
| 933 | shared_preferences_linux: | 933 | shared_preferences_linux: |
| @@ -935,7 +935,7 @@ packages: | @@ -935,7 +935,7 @@ packages: | ||
| 935 | description: | 935 | description: |
| 936 | name: shared_preferences_linux | 936 | name: shared_preferences_linux |
| 937 | sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" | 937 | sha256: "580abfd40f415611503cae30adf626e6656dfb2f0cee8f465ece7b6defb40f2f" |
| 938 | - url: "https://pub.flutter-io.cn" | 938 | + url: "https://pub.dev" |
| 939 | source: hosted | 939 | source: hosted |
| 940 | version: "2.4.1" | 940 | version: "2.4.1" |
| 941 | shared_preferences_ohos: | 941 | shared_preferences_ohos: |
| @@ -952,7 +952,7 @@ packages: | @@ -952,7 +952,7 @@ packages: | ||
| 952 | description: | 952 | description: |
| 953 | name: shared_preferences_platform_interface | 953 | name: shared_preferences_platform_interface |
| 954 | sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9" | 954 | sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9" |
| 955 | - url: "https://pub.flutter-io.cn" | 955 | + url: "https://pub.dev" |
| 956 | source: hosted | 956 | source: hosted |
| 957 | version: "2.4.2" | 957 | version: "2.4.2" |
| 958 | shared_preferences_web: | 958 | shared_preferences_web: |
| @@ -960,7 +960,7 @@ packages: | @@ -960,7 +960,7 @@ packages: | ||
| 960 | description: | 960 | description: |
| 961 | name: shared_preferences_web | 961 | name: shared_preferences_web |
| 962 | sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 | 962 | sha256: c49bd060261c9a3f0ff445892695d6212ff603ef3115edbb448509d407600019 |
| 963 | - url: "https://pub.flutter-io.cn" | 963 | + url: "https://pub.dev" |
| 964 | source: hosted | 964 | source: hosted |
| 965 | version: "2.4.3" | 965 | version: "2.4.3" |
| 966 | shared_preferences_windows: | 966 | shared_preferences_windows: |
| @@ -968,7 +968,7 @@ packages: | @@ -968,7 +968,7 @@ packages: | ||
| 968 | description: | 968 | description: |
| 969 | name: shared_preferences_windows | 969 | name: shared_preferences_windows |
| 970 | sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" | 970 | sha256: "94ef0f72b2d71bc3e700e025db3710911bd51a71cefb65cc609dd0d9a982e3c1" |
| 971 | - url: "https://pub.flutter-io.cn" | 971 | + url: "https://pub.dev" |
| 972 | source: hosted | 972 | source: hosted |
| 973 | version: "2.4.1" | 973 | version: "2.4.1" |
| 974 | shelf: | 974 | shelf: |
| @@ -976,7 +976,7 @@ packages: | @@ -976,7 +976,7 @@ packages: | ||
| 976 | description: | 976 | description: |
| 977 | name: shelf | 977 | name: shelf |
| 978 | sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 | 978 | sha256: e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12 |
| 979 | - url: "https://pub.flutter-io.cn" | 979 | + url: "https://pub.dev" |
| 980 | source: hosted | 980 | source: hosted |
| 981 | version: "1.4.2" | 981 | version: "1.4.2" |
| 982 | shelf_web_socket: | 982 | shelf_web_socket: |
| @@ -984,7 +984,7 @@ packages: | @@ -984,7 +984,7 @@ packages: | ||
| 984 | description: | 984 | description: |
| 985 | name: shelf_web_socket | 985 | name: shelf_web_socket |
| 986 | sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" | 986 | sha256: "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925" |
| 987 | - url: "https://pub.flutter-io.cn" | 987 | + url: "https://pub.dev" |
| 988 | source: hosted | 988 | source: hosted |
| 989 | version: "3.0.0" | 989 | version: "3.0.0" |
| 990 | simple_gesture_detector: | 990 | simple_gesture_detector: |
| @@ -992,7 +992,7 @@ packages: | @@ -992,7 +992,7 @@ packages: | ||
| 992 | description: | 992 | description: |
| 993 | name: simple_gesture_detector | 993 | name: simple_gesture_detector |
| 994 | sha256: ba2cd5af24ff20a0b8d609cec3f40e5b0744d2a71804a2616ae086b9c19d19a3 | 994 | sha256: ba2cd5af24ff20a0b8d609cec3f40e5b0744d2a71804a2616ae086b9c19d19a3 |
| 995 | - url: "https://pub.flutter-io.cn" | 995 | + url: "https://pub.dev" |
| 996 | source: hosted | 996 | source: hosted |
| 997 | version: "0.2.1" | 997 | version: "0.2.1" |
| 998 | sky_engine: | 998 | sky_engine: |
| @@ -1005,7 +1005,7 @@ packages: | @@ -1005,7 +1005,7 @@ packages: | ||
| 1005 | description: | 1005 | description: |
| 1006 | name: source_span | 1006 | name: source_span |
| 1007 | sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" | 1007 | sha256: "56a02f1f4cd1a2d96303c0144c93bd6d909eea6bee6bf5a0e0b685edbd4c47ab" |
| 1008 | - url: "https://pub.flutter-io.cn" | 1008 | + url: "https://pub.dev" |
| 1009 | source: hosted | 1009 | source: hosted |
| 1010 | version: "1.10.2" | 1010 | version: "1.10.2" |
| 1011 | sqflite: | 1011 | sqflite: |
| @@ -1022,7 +1022,7 @@ packages: | @@ -1022,7 +1022,7 @@ packages: | ||
| 1022 | description: | 1022 | description: |
| 1023 | name: sqflite_android | 1023 | name: sqflite_android |
| 1024 | sha256: "881e28efdcc9950fd8e9bb42713dcf1103e62a2e7168f23c9338d82db13dec40" | 1024 | sha256: "881e28efdcc9950fd8e9bb42713dcf1103e62a2e7168f23c9338d82db13dec40" |
| 1025 | - url: "https://pub.flutter-io.cn" | 1025 | + url: "https://pub.dev" |
| 1026 | source: hosted | 1026 | source: hosted |
| 1027 | version: "2.4.2+3" | 1027 | version: "2.4.2+3" |
| 1028 | sqflite_common: | 1028 | sqflite_common: |
| @@ -1030,7 +1030,7 @@ packages: | @@ -1030,7 +1030,7 @@ packages: | ||
| 1030 | description: | 1030 | description: |
| 1031 | name: sqflite_common | 1031 | name: sqflite_common |
| 1032 | sha256: "1581ffbf7a0e333b380d6a30737d78516b826cb35beb7fb0bf8a3ea0c678b465" | 1032 | sha256: "1581ffbf7a0e333b380d6a30737d78516b826cb35beb7fb0bf8a3ea0c678b465" |
| 1033 | - url: "https://pub.flutter-io.cn" | 1033 | + url: "https://pub.dev" |
| 1034 | source: hosted | 1034 | source: hosted |
| 1035 | version: "2.5.8" | 1035 | version: "2.5.8" |
| 1036 | sqflite_darwin: | 1036 | sqflite_darwin: |
| @@ -1038,7 +1038,7 @@ packages: | @@ -1038,7 +1038,7 @@ packages: | ||
| 1038 | description: | 1038 | description: |
| 1039 | name: sqflite_darwin | 1039 | name: sqflite_darwin |
| 1040 | sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" | 1040 | sha256: "279832e5cde3fe99e8571879498c9211f3ca6391b0d818df4e17d9fff5c6ccb3" |
| 1041 | - url: "https://pub.flutter-io.cn" | 1041 | + url: "https://pub.dev" |
| 1042 | source: hosted | 1042 | source: hosted |
| 1043 | version: "2.4.2" | 1043 | version: "2.4.2" |
| 1044 | sqflite_ohos: | 1044 | sqflite_ohos: |
| @@ -1055,7 +1055,7 @@ packages: | @@ -1055,7 +1055,7 @@ packages: | ||
| 1055 | description: | 1055 | description: |
| 1056 | name: sqflite_platform_interface | 1056 | name: sqflite_platform_interface |
| 1057 | sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" | 1057 | sha256: "8dd4515c7bdcae0a785b0062859336de775e8c65db81ae33dd5445f35be61920" |
| 1058 | - url: "https://pub.flutter-io.cn" | 1058 | + url: "https://pub.dev" |
| 1059 | source: hosted | 1059 | source: hosted |
| 1060 | version: "2.4.0" | 1060 | version: "2.4.0" |
| 1061 | stack_trace: | 1061 | stack_trace: |
| @@ -1063,7 +1063,7 @@ packages: | @@ -1063,7 +1063,7 @@ packages: | ||
| 1063 | description: | 1063 | description: |
| 1064 | name: stack_trace | 1064 | name: stack_trace |
| 1065 | sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" | 1065 | sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1" |
| 1066 | - url: "https://pub.flutter-io.cn" | 1066 | + url: "https://pub.dev" |
| 1067 | source: hosted | 1067 | source: hosted |
| 1068 | version: "1.12.1" | 1068 | version: "1.12.1" |
| 1069 | stream_channel: | 1069 | stream_channel: |
| @@ -1071,7 +1071,7 @@ packages: | @@ -1071,7 +1071,7 @@ packages: | ||
| 1071 | description: | 1071 | description: |
| 1072 | name: stream_channel | 1072 | name: stream_channel |
| 1073 | sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" | 1073 | sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d" |
| 1074 | - url: "https://pub.flutter-io.cn" | 1074 | + url: "https://pub.dev" |
| 1075 | source: hosted | 1075 | source: hosted |
| 1076 | version: "2.1.4" | 1076 | version: "2.1.4" |
| 1077 | stream_transform: | 1077 | stream_transform: |
| @@ -1079,7 +1079,7 @@ packages: | @@ -1079,7 +1079,7 @@ packages: | ||
| 1079 | description: | 1079 | description: |
| 1080 | name: stream_transform | 1080 | name: stream_transform |
| 1081 | sha256: a00e5f18bffc764f923e7dec1038527f7fe7a1791361a7117f0358193f13d53a | 1081 | sha256: a00e5f18bffc764f923e7dec1038527f7fe7a1791361a7117f0358193f13d53a |
| 1082 | - url: "https://pub.flutter-io.cn" | 1082 | + url: "https://pub.dev" |
| 1083 | source: hosted | 1083 | source: hosted |
| 1084 | version: "2.1.2" | 1084 | version: "2.1.2" |
| 1085 | string_scanner: | 1085 | string_scanner: |
| @@ -1087,23 +1087,23 @@ packages: | @@ -1087,23 +1087,23 @@ packages: | ||
| 1087 | description: | 1087 | description: |
| 1088 | name: string_scanner | 1088 | name: string_scanner |
| 1089 | sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" | 1089 | sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43" |
| 1090 | - url: "https://pub.flutter-io.cn" | 1090 | + url: "https://pub.dev" |
| 1091 | source: hosted | 1091 | source: hosted |
| 1092 | version: "1.4.1" | 1092 | version: "1.4.1" |
| 1093 | synchronized: | 1093 | synchronized: |
| 1094 | dependency: transitive | 1094 | dependency: transitive |
| 1095 | description: | 1095 | description: |
| 1096 | name: synchronized | 1096 | name: synchronized |
| 1097 | - sha256: "63896c27e81b28f8cb4e69ead0d3e8f03f1d1e5fc531a3e579cabed6a2c7c9e5" | ||
| 1098 | - url: "https://pub.flutter-io.cn" | 1097 | + sha256: c254ade258ec8282947a0acbbc90b9575b4f19673533ee46f2f6e9b3aeefd7c0 |
| 1098 | + url: "https://pub.dev" | ||
| 1099 | source: hosted | 1099 | source: hosted |
| 1100 | - version: "3.4.0+1" | 1100 | + version: "3.4.0" |
| 1101 | table_calendar: | 1101 | table_calendar: |
| 1102 | dependency: "direct main" | 1102 | dependency: "direct main" |
| 1103 | description: | 1103 | description: |
| 1104 | name: table_calendar | 1104 | name: table_calendar |
| 1105 | sha256: f276347cad425ef837a41e8d9ad43f3ee7d59227aa4c36d7430607a5a18fa3b3 | 1105 | sha256: f276347cad425ef837a41e8d9ad43f3ee7d59227aa4c36d7430607a5a18fa3b3 |
| 1106 | - url: "https://pub.flutter-io.cn" | 1106 | + url: "https://pub.dev" |
| 1107 | source: hosted | 1107 | source: hosted |
| 1108 | version: "3.2.1" | 1108 | version: "3.2.1" |
| 1109 | term_glyph: | 1109 | term_glyph: |
| @@ -1111,7 +1111,7 @@ packages: | @@ -1111,7 +1111,7 @@ packages: | ||
| 1111 | description: | 1111 | description: |
| 1112 | name: term_glyph | 1112 | name: term_glyph |
| 1113 | sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" | 1113 | sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e" |
| 1114 | - url: "https://pub.flutter-io.cn" | 1114 | + url: "https://pub.dev" |
| 1115 | source: hosted | 1115 | source: hosted |
| 1116 | version: "1.2.2" | 1116 | version: "1.2.2" |
| 1117 | test_api: | 1117 | test_api: |
| @@ -1119,7 +1119,7 @@ packages: | @@ -1119,7 +1119,7 @@ packages: | ||
| 1119 | description: | 1119 | description: |
| 1120 | name: test_api | 1120 | name: test_api |
| 1121 | sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" | 1121 | sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" |
| 1122 | - url: "https://pub.flutter-io.cn" | 1122 | + url: "https://pub.dev" |
| 1123 | source: hosted | 1123 | source: hosted |
| 1124 | version: "0.7.10" | 1124 | version: "0.7.10" |
| 1125 | thinking_analytics: | 1125 | thinking_analytics: |
| @@ -1127,7 +1127,7 @@ packages: | @@ -1127,7 +1127,7 @@ packages: | ||
| 1127 | description: | 1127 | description: |
| 1128 | name: thinking_analytics | 1128 | name: thinking_analytics |
| 1129 | sha256: b01cac0b5482e71c1d75c44c77d27f427662cc65a77b7bc3c8b49617d7a01e02 | 1129 | sha256: b01cac0b5482e71c1d75c44c77d27f427662cc65a77b7bc3c8b49617d7a01e02 |
| 1130 | - url: "https://pub.flutter-io.cn" | 1130 | + url: "https://pub.dev" |
| 1131 | source: hosted | 1131 | source: hosted |
| 1132 | version: "3.3.3" | 1132 | version: "3.3.3" |
| 1133 | typed_data: | 1133 | typed_data: |
| @@ -1135,7 +1135,7 @@ packages: | @@ -1135,7 +1135,7 @@ packages: | ||
| 1135 | description: | 1135 | description: |
| 1136 | name: typed_data | 1136 | name: typed_data |
| 1137 | sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 | 1137 | sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006 |
| 1138 | - url: "https://pub.flutter-io.cn" | 1138 | + url: "https://pub.dev" |
| 1139 | source: hosted | 1139 | source: hosted |
| 1140 | version: "1.4.0" | 1140 | version: "1.4.0" |
| 1141 | url_launcher_linux: | 1141 | url_launcher_linux: |
| @@ -1143,7 +1143,7 @@ packages: | @@ -1143,7 +1143,7 @@ packages: | ||
| 1143 | description: | 1143 | description: |
| 1144 | name: url_launcher_linux | 1144 | name: url_launcher_linux |
| 1145 | sha256: "10f86fef4c2c43563fa6c211ff9cf757adf4d3ab762c56bd430664a947d70cd0" | 1145 | sha256: "10f86fef4c2c43563fa6c211ff9cf757adf4d3ab762c56bd430664a947d70cd0" |
| 1146 | - url: "https://pub.flutter-io.cn" | 1146 | + url: "https://pub.dev" |
| 1147 | source: hosted | 1147 | source: hosted |
| 1148 | version: "3.2.3" | 1148 | version: "3.2.3" |
| 1149 | url_launcher_platform_interface: | 1149 | url_launcher_platform_interface: |
| @@ -1151,7 +1151,7 @@ packages: | @@ -1151,7 +1151,7 @@ packages: | ||
| 1151 | description: | 1151 | description: |
| 1152 | name: url_launcher_platform_interface | 1152 | name: url_launcher_platform_interface |
| 1153 | sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" | 1153 | sha256: "552f8a1e663569be95a8190206a38187b531910283c3e982193e4f2733f01029" |
| 1154 | - url: "https://pub.flutter-io.cn" | 1154 | + url: "https://pub.dev" |
| 1155 | source: hosted | 1155 | source: hosted |
| 1156 | version: "2.3.2" | 1156 | version: "2.3.2" |
| 1157 | url_launcher_web: | 1157 | url_launcher_web: |
| @@ -1159,7 +1159,7 @@ packages: | @@ -1159,7 +1159,7 @@ packages: | ||
| 1159 | description: | 1159 | description: |
| 1160 | name: url_launcher_web | 1160 | name: url_launcher_web |
| 1161 | sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34" | 1161 | sha256: "85c81589622fbc87c1c683aaea164d3604a7777495a79d91e39ffcdec39ddb34" |
| 1162 | - url: "https://pub.flutter-io.cn" | 1162 | + url: "https://pub.dev" |
| 1163 | source: hosted | 1163 | source: hosted |
| 1164 | version: "2.4.3" | 1164 | version: "2.4.3" |
| 1165 | url_launcher_windows: | 1165 | url_launcher_windows: |
| @@ -1167,7 +1167,7 @@ packages: | @@ -1167,7 +1167,7 @@ packages: | ||
| 1167 | description: | 1167 | description: |
| 1168 | name: url_launcher_windows | 1168 | name: url_launcher_windows |
| 1169 | sha256: "6c5ad3f22cd4c38e089b81963b3cd7bb83b111b2df5dce008bb066162f42e429" | 1169 | sha256: "6c5ad3f22cd4c38e089b81963b3cd7bb83b111b2df5dce008bb066162f42e429" |
| 1170 | - url: "https://pub.flutter-io.cn" | 1170 | + url: "https://pub.dev" |
| 1171 | source: hosted | 1171 | source: hosted |
| 1172 | version: "3.1.6" | 1172 | version: "3.1.6" |
| 1173 | uuid: | 1173 | uuid: |
| @@ -1175,7 +1175,7 @@ packages: | @@ -1175,7 +1175,7 @@ packages: | ||
| 1175 | description: | 1175 | description: |
| 1176 | name: uuid | 1176 | name: uuid |
| 1177 | sha256: "9b129329f58692f6e6578329498a8fe9fbe98f090beb764ffbb8ee2eadd01dcd" | 1177 | sha256: "9b129329f58692f6e6578329498a8fe9fbe98f090beb764ffbb8ee2eadd01dcd" |
| 1178 | - url: "https://pub.flutter-io.cn" | 1178 | + url: "https://pub.dev" |
| 1179 | source: hosted | 1179 | source: hosted |
| 1180 | version: "4.6.0" | 1180 | version: "4.6.0" |
| 1181 | vector_math: | 1181 | vector_math: |
| @@ -1183,7 +1183,7 @@ packages: | @@ -1183,7 +1183,7 @@ packages: | ||
| 1183 | description: | 1183 | description: |
| 1184 | name: vector_math | 1184 | name: vector_math |
| 1185 | sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b | 1185 | sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b |
| 1186 | - url: "https://pub.flutter-io.cn" | 1186 | + url: "https://pub.dev" |
| 1187 | source: hosted | 1187 | source: hosted |
| 1188 | version: "2.2.0" | 1188 | version: "2.2.0" |
| 1189 | video_thumbnail: | 1189 | video_thumbnail: |
| @@ -1191,7 +1191,7 @@ packages: | @@ -1191,7 +1191,7 @@ packages: | ||
| 1191 | description: | 1191 | description: |
| 1192 | name: video_thumbnail | 1192 | name: video_thumbnail |
| 1193 | sha256: "181a0c205b353918954a881f53a3441476b9e301641688a581e0c13f00dc588b" | 1193 | sha256: "181a0c205b353918954a881f53a3441476b9e301641688a581e0c13f00dc588b" |
| 1194 | - url: "https://pub.flutter-io.cn" | 1194 | + url: "https://pub.dev" |
| 1195 | source: hosted | 1195 | source: hosted |
| 1196 | version: "0.5.6" | 1196 | version: "0.5.6" |
| 1197 | vm_service: | 1197 | vm_service: |
| @@ -1199,7 +1199,7 @@ packages: | @@ -1199,7 +1199,7 @@ packages: | ||
| 1199 | description: | 1199 | description: |
| 1200 | name: vm_service | 1200 | name: vm_service |
| 1201 | sha256: "5f37239c4851efcef929cea7824e76df7f2f0970aef85d66bbc430afa40e72f0" | 1201 | sha256: "5f37239c4851efcef929cea7824e76df7f2f0970aef85d66bbc430afa40e72f0" |
| 1202 | - url: "https://pub.flutter-io.cn" | 1202 | + url: "https://pub.dev" |
| 1203 | source: hosted | 1203 | source: hosted |
| 1204 | version: "15.3.0" | 1204 | version: "15.3.0" |
| 1205 | watcher: | 1205 | watcher: |
| @@ -1207,7 +1207,7 @@ packages: | @@ -1207,7 +1207,7 @@ packages: | ||
| 1207 | description: | 1207 | description: |
| 1208 | name: watcher | 1208 | name: watcher |
| 1209 | sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" | 1209 | sha256: "1398c9f081a753f9226febe8900fce8f7d0a67163334e1c94a2438339d79d635" |
| 1210 | - url: "https://pub.flutter-io.cn" | 1210 | + url: "https://pub.dev" |
| 1211 | source: hosted | 1211 | source: hosted |
| 1212 | version: "1.2.1" | 1212 | version: "1.2.1" |
| 1213 | web: | 1213 | web: |
| @@ -1215,7 +1215,7 @@ packages: | @@ -1215,7 +1215,7 @@ packages: | ||
| 1215 | description: | 1215 | description: |
| 1216 | name: web | 1216 | name: web |
| 1217 | sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" | 1217 | sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a" |
| 1218 | - url: "https://pub.flutter-io.cn" | 1218 | + url: "https://pub.dev" |
| 1219 | source: hosted | 1219 | source: hosted |
| 1220 | version: "1.1.1" | 1220 | version: "1.1.1" |
| 1221 | web_socket: | 1221 | web_socket: |
| @@ -1223,7 +1223,7 @@ packages: | @@ -1223,7 +1223,7 @@ packages: | ||
| 1223 | description: | 1223 | description: |
| 1224 | name: web_socket | 1224 | name: web_socket |
| 1225 | sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" | 1225 | sha256: "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c" |
| 1226 | - url: "https://pub.flutter-io.cn" | 1226 | + url: "https://pub.dev" |
| 1227 | source: hosted | 1227 | source: hosted |
| 1228 | version: "1.0.1" | 1228 | version: "1.0.1" |
| 1229 | web_socket_channel: | 1229 | web_socket_channel: |
| @@ -1231,7 +1231,7 @@ packages: | @@ -1231,7 +1231,7 @@ packages: | ||
| 1231 | description: | 1231 | description: |
| 1232 | name: web_socket_channel | 1232 | name: web_socket_channel |
| 1233 | sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 | 1233 | sha256: d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8 |
| 1234 | - url: "https://pub.flutter-io.cn" | 1234 | + url: "https://pub.dev" |
| 1235 | source: hosted | 1235 | source: hosted |
| 1236 | version: "3.0.3" | 1236 | version: "3.0.3" |
| 1237 | webview_flutter: | 1237 | webview_flutter: |
| @@ -1284,7 +1284,7 @@ packages: | @@ -1284,7 +1284,7 @@ packages: | ||
| 1284 | description: | 1284 | description: |
| 1285 | name: win32 | 1285 | name: win32 |
| 1286 | sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e | 1286 | sha256: d7cb55e04cd34096cd3a79b3330245f54cb96a370a1c27adb3c84b917de8b08e |
| 1287 | - url: "https://pub.flutter-io.cn" | 1287 | + url: "https://pub.dev" |
| 1288 | source: hosted | 1288 | source: hosted |
| 1289 | version: "5.15.0" | 1289 | version: "5.15.0" |
| 1290 | xdg_directories: | 1290 | xdg_directories: |
| @@ -1292,7 +1292,7 @@ packages: | @@ -1292,7 +1292,7 @@ packages: | ||
| 1292 | description: | 1292 | description: |
| 1293 | name: xdg_directories | 1293 | name: xdg_directories |
| 1294 | sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" | 1294 | sha256: "7a3f37b05d989967cdddcbb571f1ea834867ae2faa29725fd085180e0883aa15" |
| 1295 | - url: "https://pub.flutter-io.cn" | 1295 | + url: "https://pub.dev" |
| 1296 | source: hosted | 1296 | source: hosted |
| 1297 | version: "1.1.0" | 1297 | version: "1.1.0" |
| 1298 | yaml: | 1298 | yaml: |
| @@ -1300,9 +1300,9 @@ packages: | @@ -1300,9 +1300,9 @@ packages: | ||
| 1300 | description: | 1300 | description: |
| 1301 | name: yaml | 1301 | name: yaml |
| 1302 | sha256: f67cdd8e07d3c6329146aaef1ba043542b3134c12489f553ca9a7435d1068aea | 1302 | sha256: f67cdd8e07d3c6329146aaef1ba043542b3134c12489f553ca9a7435d1068aea |
| 1303 | - url: "https://pub.flutter-io.cn" | 1303 | + url: "https://pub.dev" |
| 1304 | source: hosted | 1304 | source: hosted |
| 1305 | version: "3.1.4" | 1305 | version: "3.1.4" |
| 1306 | sdks: | 1306 | sdks: |
| 1307 | - dart: ">=3.11.0 <4.0.0" | 1307 | + dart: ">=3.10.3 <4.0.0" |
| 1308 | flutter: ">=3.38.4" | 1308 | flutter: ">=3.38.4" |
-
Please register or login to post a comment