Browse Source

优化聊天

ios
Jolie 3 months ago
parent
commit
b86b7bd795
12 changed files with 423 additions and 95 deletions
  1. 252
      ios/Podfile.lock
  2. 10
      ios/Runner.xcworkspace/contents.xcworkspacedata
  3. 2
      ios/Runner/Info.plist
  4. 64
      lib/controller/message/chat_controller.dart
  5. 2
      lib/generated/assets.dart
  6. 20
      lib/widget/message/call_item.dart
  7. 20
      lib/widget/message/gift_item.dart
  8. 20
      lib/widget/message/image_item.dart
  9. 20
      lib/widget/message/room_item.dart
  10. 20
      lib/widget/message/text_item.dart
  11. 20
      lib/widget/message/video_item.dart
  12. 68
      location_plugin/example/pubspec.lock

252
ios/Podfile.lock

@ -0,0 +1,252 @@
PODS:
- agora_rtc_engine (6.5.3):
- AgoraIrisRTC_iOS (= 4.5.2-build.1)
- AgoraRtcEngine_iOS (= 4.5.2)
- Flutter
- agora_rtm (2.2.5):
- AgoraIrisRTM_iOS (= 2.2.5-build.2)
- AgoraRtm (= 2.2.5)
- Flutter
- AgoraInfra_iOS (1.2.13.1)
- AgoraIrisRTC_iOS (4.5.2-build.1)
- AgoraIrisRTM_iOS (2.2.5-build.2)
- AgoraRtcEngine_iOS (4.5.2):
- AgoraRtcEngine_iOS/AIAEC (= 4.5.2)
- AgoraRtcEngine_iOS/AIAECLL (= 4.5.2)
- AgoraRtcEngine_iOS/AINS (= 4.5.2)
- AgoraRtcEngine_iOS/AINSLL (= 4.5.2)
- AgoraRtcEngine_iOS/AudioBeauty (= 4.5.2)
- AgoraRtcEngine_iOS/ClearVision (= 4.5.2)
- AgoraRtcEngine_iOS/ContentInspect (= 4.5.2)
- AgoraRtcEngine_iOS/FaceCapture (= 4.5.2)
- AgoraRtcEngine_iOS/FaceDetection (= 4.5.2)
- AgoraRtcEngine_iOS/LipSync (= 4.5.2)
- AgoraRtcEngine_iOS/ReplayKit (= 4.5.2)
- AgoraRtcEngine_iOS/RtcBasic (= 4.5.2)
- AgoraRtcEngine_iOS/SpatialAudio (= 4.5.2)
- AgoraRtcEngine_iOS/VideoAv1CodecDec (= 4.5.2)
- AgoraRtcEngine_iOS/VideoAv1CodecEnc (= 4.5.2)
- AgoraRtcEngine_iOS/VideoCodecDec (= 4.5.2)
- AgoraRtcEngine_iOS/VideoCodecEnc (= 4.5.2)
- AgoraRtcEngine_iOS/VirtualBackground (= 4.5.2)
- AgoraRtcEngine_iOS/VQA (= 4.5.2)
- AgoraRtcEngine_iOS/AIAEC (4.5.2)
- AgoraRtcEngine_iOS/AIAECLL (4.5.2)
- AgoraRtcEngine_iOS/AINS (4.5.2)
- AgoraRtcEngine_iOS/AINSLL (4.5.2)
- AgoraRtcEngine_iOS/AudioBeauty (4.5.2)
- AgoraRtcEngine_iOS/ClearVision (4.5.2)
- AgoraRtcEngine_iOS/ContentInspect (4.5.2)
- AgoraRtcEngine_iOS/FaceCapture (4.5.2)
- AgoraRtcEngine_iOS/FaceDetection (4.5.2)
- AgoraRtcEngine_iOS/LipSync (4.5.2)
- AgoraRtcEngine_iOS/ReplayKit (4.5.2)
- AgoraRtcEngine_iOS/RtcBasic (4.5.2):
- AgoraInfra_iOS (= 1.2.13.1)
- AgoraRtcEngine_iOS/SpatialAudio (4.5.2)
- AgoraRtcEngine_iOS/VideoAv1CodecDec (4.5.2)
- AgoraRtcEngine_iOS/VideoAv1CodecEnc (4.5.2)
- AgoraRtcEngine_iOS/VideoCodecDec (4.5.2)
- AgoraRtcEngine_iOS/VideoCodecEnc (4.5.2)
- AgoraRtcEngine_iOS/VirtualBackground (4.5.2)
- AgoraRtcEngine_iOS/VQA (4.5.2)
- AgoraRtm (2.2.5):
- AgoraRtm/RtmBasic (= 2.2.5)
- AgoraRtm/RtmKit (= 2.2.5)
- AgoraRtm/RtmBasic (2.2.5)
- AgoraRtm/RtmKit (2.2.5)
- app_settings (5.1.1):
- Flutter
- audioplayers_darwin (0.0.1):
- Flutter
- FlutterMacOS
- camera_avfoundation (0.0.1):
- Flutter
- Flutter (1.0.0)
- flutter_native_splash (2.4.3):
- Flutter
- fluwx (0.0.1):
- Flutter
- fluwx/pay (= 0.0.1)
- fluwx/pay (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (~> 2.0.5)
- HyphenateChat (4.15.0):
- AgoraInfra_iOS (~> 1.2.13)
- im_flutter_sdk_ios (4.15.2):
- Flutter
- HyphenateChat (= 4.15.0)
- image_picker_ios (0.0.1):
- Flutter
- iris_method_channel (0.0.1):
- Flutter
- libwebp (1.5.0):
- libwebp/demux (= 1.5.0)
- libwebp/mux (= 1.5.0)
- libwebp/sharpyuv (= 1.5.0)
- libwebp/webp (= 1.5.0)
- libwebp/demux (1.5.0):
- libwebp/webp
- libwebp/mux (1.5.0):
- libwebp/demux
- libwebp/sharpyuv (1.5.0)
- libwebp/webp (1.5.0):
- libwebp/sharpyuv
- location_plugin (0.0.1):
- Flutter
- package_info_plus (0.4.5):
- Flutter
- path_provider_foundation (0.0.1):
- Flutter
- FlutterMacOS
- permission_handler_apple (9.3.0):
- Flutter
- photo_manager (3.8.2):
- Flutter
- FlutterMacOS
- record_ios (1.1.0):
- Flutter
- sensors_plus (0.0.1):
- Flutter
- shared_preferences_foundation (0.0.1):
- Flutter
- FlutterMacOS
- sqflite_darwin (0.0.4):
- Flutter
- FlutterMacOS
- url_launcher_ios (0.0.1):
- Flutter
- video_player_avfoundation (0.0.1):
- Flutter
- FlutterMacOS
- video_thumbnail (0.0.1):
- Flutter
- libwebp
- wakelock_plus (0.0.1):
- Flutter
- WechatOpenSDK-XCFramework (2.0.5)
DEPENDENCIES:
- agora_rtc_engine (from `.symlinks/plugins/agora_rtc_engine/ios`)
- agora_rtm (from `.symlinks/plugins/agora_rtm/ios`)
- app_settings (from `.symlinks/plugins/app_settings/ios`)
- audioplayers_darwin (from `.symlinks/plugins/audioplayers_darwin/darwin`)
- camera_avfoundation (from `.symlinks/plugins/camera_avfoundation/ios`)
- Flutter (from `Flutter`)
- flutter_native_splash (from `.symlinks/plugins/flutter_native_splash/ios`)
- fluwx (from `.symlinks/plugins/fluwx/ios`)
- im_flutter_sdk_ios (from `.symlinks/plugins/im_flutter_sdk_ios/ios`)
- image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`)
- iris_method_channel (from `.symlinks/plugins/iris_method_channel/ios`)
- location_plugin (from `.symlinks/plugins/location_plugin/ios`)
- package_info_plus (from `.symlinks/plugins/package_info_plus/ios`)
- path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`)
- permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`)
- photo_manager (from `.symlinks/plugins/photo_manager/darwin`)
- record_ios (from `.symlinks/plugins/record_ios/ios`)
- sensors_plus (from `.symlinks/plugins/sensors_plus/ios`)
- shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`)
- sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`)
- url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`)
- video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`)
- video_thumbnail (from `.symlinks/plugins/video_thumbnail/ios`)
- wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`)
SPEC REPOS:
trunk:
- AgoraInfra_iOS
- AgoraIrisRTC_iOS
- AgoraIrisRTM_iOS
- AgoraRtcEngine_iOS
- AgoraRtm
- HyphenateChat
- libwebp
- WechatOpenSDK-XCFramework
EXTERNAL SOURCES:
agora_rtc_engine:
:path: ".symlinks/plugins/agora_rtc_engine/ios"
agora_rtm:
:path: ".symlinks/plugins/agora_rtm/ios"
app_settings:
:path: ".symlinks/plugins/app_settings/ios"
audioplayers_darwin:
:path: ".symlinks/plugins/audioplayers_darwin/darwin"
camera_avfoundation:
:path: ".symlinks/plugins/camera_avfoundation/ios"
Flutter:
:path: Flutter
flutter_native_splash:
:path: ".symlinks/plugins/flutter_native_splash/ios"
fluwx:
:path: ".symlinks/plugins/fluwx/ios"
im_flutter_sdk_ios:
:path: ".symlinks/plugins/im_flutter_sdk_ios/ios"
image_picker_ios:
:path: ".symlinks/plugins/image_picker_ios/ios"
iris_method_channel:
:path: ".symlinks/plugins/iris_method_channel/ios"
location_plugin:
:path: ".symlinks/plugins/location_plugin/ios"
package_info_plus:
:path: ".symlinks/plugins/package_info_plus/ios"
path_provider_foundation:
:path: ".symlinks/plugins/path_provider_foundation/darwin"
permission_handler_apple:
:path: ".symlinks/plugins/permission_handler_apple/ios"
photo_manager:
:path: ".symlinks/plugins/photo_manager/darwin"
record_ios:
:path: ".symlinks/plugins/record_ios/ios"
sensors_plus:
:path: ".symlinks/plugins/sensors_plus/ios"
shared_preferences_foundation:
:path: ".symlinks/plugins/shared_preferences_foundation/darwin"
sqflite_darwin:
:path: ".symlinks/plugins/sqflite_darwin/darwin"
url_launcher_ios:
:path: ".symlinks/plugins/url_launcher_ios/ios"
video_player_avfoundation:
:path: ".symlinks/plugins/video_player_avfoundation/darwin"
video_thumbnail:
:path: ".symlinks/plugins/video_thumbnail/ios"
wakelock_plus:
:path: ".symlinks/plugins/wakelock_plus/ios"
SPEC CHECKSUMS:
agora_rtc_engine: da45ea14c402317c9e22fdb9ffe504d9a1acbe68
agora_rtm: 171fb2ddc9da71ca2c30780118a5bc6d005aed49
AgoraInfra_iOS: 3691b2b277a1712a35ae96de25af319de0d73d08
AgoraIrisRTC_iOS: eab58c126439adf5ec99632828a558ea216860da
AgoraIrisRTM_iOS: 8db20697f717de6e1db5dd4c842432889f284220
AgoraRtcEngine_iOS: 97e2398a2addda9057815a2a583a658e36796ff6
AgoraRtm: d92cdfca825f3e6817c315d7dd6403742494f7ca
app_settings: 58017cd26b604ae98c3e65acbdd8ba173703cc82
audioplayers_darwin: 4027b33a8f471d996c13f71cb77f0b1583b5d923
camera_avfoundation: 281867ff09f1da66f031a184ecfbc6f2e625c9f5
Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467
flutter_native_splash: df59bb2e1421aa0282cb2e95618af4dcb0c56c29
fluwx: 95a2274c23418c1098940bd00dcfe7c975bb0550
HyphenateChat: 4523c7fb2075771c49a2c492b31544d6cc82ff50
im_flutter_sdk_ios: 6570b291875ab7b3016e8d21fc0ef58ab347cd38
image_picker_ios: 4f2f91b01abdb52842a8e277617df877e40f905b
iris_method_channel: 4e3fe7fe6b2db1b84feae956e98ce1479402627a
libwebp: 02b23773aedb6ff1fd38cec7a77b81414c6842a8
location_plugin: 0b3c55050267925da87176add5bf67c67c8be7ec
package_info_plus: c0502532a26c7662a62a356cebe2692ec5fe4ec4
path_provider_foundation: 0b743cbb62d8e47eab856f09262bb8c1ddcfe6ba
permission_handler_apple: 9878588469a2b0d0fc1e048d9f43605f92e6cec2
photo_manager: 8f40300912c856ef39d0d533a205afab5fbee62f
record_ios: 840d21cce013c5a3b2168b74a54ebdb4136359e2
sensors_plus: 7229095999f30740798f0eeef5cd120357a8f4f2
shared_preferences_foundation: 5086985c1d43c5ba4d5e69a4e8083a389e2909e6
sqflite_darwin: 5a7236e3b501866c1c9befc6771dfd73ffb8702d
url_launcher_ios: bb13df5870e8c4234ca12609d04010a21be43dfa
video_player_avfoundation: 7993f492ae0bd77edaea24d9dc051d8bb2cd7c86
video_thumbnail: c4e2a3c539e247d4de13cd545344fd2d26ffafd1
wakelock_plus: 76957ab028e12bfa4e66813c99e46637f367fc7e
WechatOpenSDK-XCFramework: ff342ae616bb86df3d236aca38059dfd4bc4a949
PODFILE CHECKSUM: 9f921d5f3a6aff46b310102d923e8942abc7114d
COCOAPODS: 1.16.2

10
ios/Runner.xcworkspace/contents.xcworkspacedata

@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "group:Runner.xcodeproj">
</FileRef>
<FileRef
location = "group:Pods/Pods.xcodeproj">
</FileRef>
</Workspace>

2
ios/Runner/Info.plist

@ -7,7 +7,7 @@
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleDisplayName</key>
<string>Dating Touchme App</string>
<string>趣恋恋</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>

64
lib/controller/message/chat_controller.dart

@ -959,30 +959,72 @@ class ChatController extends GetxController {
Get.log('🔄 [ChatController] 开始重发消息: ${failedMessage.msgId}');
}
//
final oldIndex = messages.indexWhere((msg) => msg.msgId == failedMessage.msgId);
if (oldIndex == -1) {
if (Get.isLogEnable) {
Get.log('❌ [ChatController] 未找到要重发的消息: ${failedMessage.msgId}');
}
SmartDialog.showToast('未找到要重发的消息');
return false;
}
// IMManager的重发方法
final newMessage = await IMManager.instance.resendMessage(failedMessage);
if (newMessage != null) {
//
final index = messages.indexWhere((msg) => msg.msgId == failedMessage.msgId);
if (index != -1) {
messages[index] = newMessage;
if (Get.isLogEnable) {
Get.log('✅ [ChatController] SDK返回重发消息: msgId=${newMessage.msgId}, status=${newMessage.status}');
}
//
messages.removeAt(oldIndex);
messages.insert(oldIndex, newMessage);
update();
if (Get.isLogEnable) {
Get.log('✅ [ChatController] 消息重发成功,已替换旧消息');
}
//
_refreshConversationList();
// PROGRESSsendMessage逻辑一致
if (newMessage.status == MessageStatus.PROGRESS) {
if (Get.isLogEnable) {
Get.log('⏳ [ChatController] 重发消息状态仍为PROGRESS,将延迟检查状态');
}
// sendMessage逻辑一致
Future.delayed(Duration(milliseconds: 500), () {
_checkMessageStatusAndUpdate(newMessage.msgId);
});
Future.delayed(Duration(milliseconds: 1500), () {
_checkMessageStatusAndUpdate(newMessage.msgId);
});
Future.delayed(Duration(milliseconds: 3000), () {
_checkMessageStatusAndUpdate(newMessage.msgId);
});
} else if (newMessage.status == MessageStatus.FAIL) {
// FAILUI
update();
if (Get.isLogEnable) {
Get.log('✅ [ChatController] 消息重发成功');
Get.log('❌ [ChatController] 重发消息失败,状态: ${newMessage.status}');
}
SmartDialog.showToast('消息重发失败,请重试');
} else {
// PROGRESS
if (Get.isLogEnable) {
Get.log('✅ [ChatController] 重发消息成功,状态: ${newMessage.status}');
}
//
_refreshConversationList();
SmartDialog.showToast('消息已重发');
return true;
}
return true;
} else {
if (Get.isLogEnable) {
Get.log('❌ [ChatController] 消息重发失败');
Get.log('❌ [ChatController] 消息重发失败,SDK返回null');
}
SmartDialog.showToast('消息重发失败,请重试');
return false;
}
return false;
} catch (e) {
if (Get.isLogEnable) {
Get.log('❌ [ChatController] 重发消息异常: $e');

2
lib/generated/assets.dart

@ -208,5 +208,5 @@ class Assets {
static const String imagesWallet = 'assets/images/wallet.png';
static const String imagesWechatPay = 'assets/images/wechat_pay.png';
static const String imagesWomenIcon = 'assets/images/women_icon.png';
static const String imagesAppLogo = 'assets/images/app_logo.png';
}

20
lib/widget/message/call_item.dart

@ -282,16 +282,20 @@ class CallItem extends StatelessWidget {
return GestureDetector(
onTap: onResend,
child: Container(
width: 20.w,
height: 20.w,
width: 44.w,
height: 26.h,
decoration: BoxDecoration(
color: Colors.red.withOpacity(0.1),
shape: BoxShape.circle,
color: Color.fromRGBO(248, 85, 66, 1),
borderRadius: BorderRadius.circular(8.w),
),
child: Icon(
Icons.refresh,
size: 14.w,
color: Colors.red,
child: Center(
child: Text(
'重发',
style: TextStyle(
fontSize: 12.sp,
color: Colors.white,
),
),
),
),
);

20
lib/widget/message/gift_item.dart

@ -261,16 +261,20 @@ class GiftItem extends StatelessWidget {
return GestureDetector(
onTap: onResend,
child: Container(
width: 20.w,
height: 20.w,
width: 44.w,
height: 26.h,
decoration: BoxDecoration(
color: Colors.red.withOpacity(0.1),
shape: BoxShape.circle,
color: Color.fromRGBO(248, 85, 66, 1),
borderRadius: BorderRadius.circular(8.w),
),
child: Icon(
Icons.refresh,
size: 14.w,
color: Colors.red,
child: Center(
child: Text(
'重发',
style: TextStyle(
fontSize: 12.sp,
color: Colors.white,
),
),
),
),
);

20
lib/widget/message/image_item.dart

@ -198,16 +198,20 @@ class ImageItem extends StatelessWidget {
return GestureDetector(
onTap: onResend,
child: Container(
width: 20.w,
height: 20.w,
width: 44.w,
height: 26.h,
decoration: BoxDecoration(
color: Colors.red.withOpacity(0.1),
shape: BoxShape.circle,
color: Color.fromRGBO(248, 85, 66, 1),
borderRadius: BorderRadius.circular(8.w),
),
child: Icon(
Icons.refresh,
size: 14.w,
color: Colors.red,
child: Center(
child: Text(
'重发',
style: TextStyle(
fontSize: 12.sp,
color: Colors.white,
),
),
),
),
);

20
lib/widget/message/room_item.dart

@ -324,16 +324,20 @@ class RoomItem extends StatelessWidget {
return GestureDetector(
onTap: onResend,
child: Container(
width: 20.w,
height: 20.w,
width: 44.w,
height: 26.h,
decoration: BoxDecoration(
color: Colors.red.withOpacity(0.1),
shape: BoxShape.circle,
color: Color.fromRGBO(248, 85, 66, 1),
borderRadius: BorderRadius.circular(8.w),
),
child: Icon(
Icons.refresh,
size: 14.w,
color: Colors.red,
child: Center(
child: Text(
'重发',
style: TextStyle(
fontSize: 12.sp,
color: Colors.white,
),
),
),
),
);

20
lib/widget/message/text_item.dart

@ -136,16 +136,20 @@ class TextItem extends StatelessWidget {
return GestureDetector(
onTap: onResend,
child: Container(
width: 20.w,
height: 20.w,
width: 44.w,
height: 26.h,
decoration: BoxDecoration(
color: Colors.red.withOpacity(0.1),
shape: BoxShape.circle,
color: Color.fromRGBO(248, 85, 66, 1),
borderRadius: BorderRadius.circular(8.w),
),
child: Icon(
Icons.refresh,
size: 14.w,
color: Colors.red,
child: Center(
child: Text(
'重发',
style: TextStyle(
fontSize: 12.sp,
color: Colors.white,
),
),
),
),
);

20
lib/widget/message/video_item.dart

@ -410,16 +410,20 @@ class _VideoItemState extends State<VideoItem> {
return GestureDetector(
onTap: widget.onResend,
child: Container(
width: 20.w,
height: 20.w,
width: 44.w,
height: 26.h,
decoration: BoxDecoration(
color: Colors.red.withOpacity(0.1),
shape: BoxShape.circle,
color: Color.fromRGBO(248, 85, 66, 1),
borderRadius: BorderRadius.circular(8.w),
),
child: Icon(
Icons.refresh,
size: 14.w,
color: Colors.red,
child: Center(
child: Text(
'重发',
style: TextStyle(
fontSize: 12.sp,
color: Colors.white,
),
),
),
),
);

68
location_plugin/example/pubspec.lock

@ -6,7 +6,7 @@ packages:
description:
name: async
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.13.0"
boolean_selector:
@ -14,7 +14,7 @@ packages:
description:
name: boolean_selector
sha256: "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.2"
characters:
@ -22,7 +22,7 @@ packages:
description:
name: characters
sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.4.0"
clock:
@ -30,7 +30,7 @@ packages:
description:
name: clock
sha256: fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.1.2"
collection:
@ -38,7 +38,7 @@ packages:
description:
name: collection
sha256: "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.19.1"
cupertino_icons:
@ -46,7 +46,7 @@ packages:
description:
name: cupertino_icons
sha256: ba631d1c7f7bef6b729a622b7b752645a2d076dba9976925b8f25725a30e1ee6
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.0.8"
fake_async:
@ -54,7 +54,7 @@ packages:
description:
name: fake_async
sha256: "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.3.3"
file:
@ -62,7 +62,7 @@ packages:
description:
name: file
sha256: a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "7.0.1"
flutter:
@ -80,7 +80,7 @@ packages:
description:
name: flutter_lints
sha256: "5398f14efa795ffb7a33e9b6a08798b26a180edac4ad7db3f231e40f82ce11e1"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.0.0"
flutter_test:
@ -98,7 +98,7 @@ packages:
description:
name: http
sha256: "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.6.0"
http_parser:
@ -106,7 +106,7 @@ packages:
description:
name: http_parser
sha256: "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "4.1.2"
integration_test:
@ -119,7 +119,7 @@ packages:
description:
name: leak_tracker
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "11.0.2"
leak_tracker_flutter_testing:
@ -127,7 +127,7 @@ packages:
description:
name: leak_tracker_flutter_testing
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.10"
leak_tracker_testing:
@ -135,7 +135,7 @@ packages:
description:
name: leak_tracker_testing
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.0.2"
lints:
@ -143,7 +143,7 @@ packages:
description:
name: lints
sha256: c35bb79562d980e9a453fc715854e1ed39e24e7d0297a880ef54e17f9874a9d7
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.1.1"
location_plugin:
@ -158,7 +158,7 @@ packages:
description:
name: matcher
sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.12.17"
material_color_utilities:
@ -166,7 +166,7 @@ packages:
description:
name: material_color_utilities
sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.11.1"
meta:
@ -174,7 +174,7 @@ packages:
description:
name: meta
sha256: e3641ec5d63ebf0d9b41bd43201a66e3fc79a65db5f61fc181f04cd27aab950c
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.16.0"
path:
@ -182,7 +182,7 @@ packages:
description:
name: path
sha256: "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.9.1"
platform:
@ -190,7 +190,7 @@ packages:
description:
name: platform
sha256: "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.1.6"
plugin_platform_interface:
@ -198,7 +198,7 @@ packages:
description:
name: plugin_platform_interface
sha256: "4820fbfdb9478b1ebae27888254d445073732dae3d6ea81f0b7e06d5dedc3f02"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.8"
process:
@ -206,7 +206,7 @@ packages:
description:
name: process
sha256: c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "5.0.5"
sky_engine:
@ -219,7 +219,7 @@ packages:
description:
name: source_span
sha256: "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.10.1"
stack_trace:
@ -227,7 +227,7 @@ packages:
description:
name: stack_trace
sha256: "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.12.1"
stream_channel:
@ -235,7 +235,7 @@ packages:
description:
name: stream_channel
sha256: "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.1.4"
string_scanner:
@ -243,7 +243,7 @@ packages:
description:
name: string_scanner
sha256: "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.4.1"
sync_http:
@ -251,7 +251,7 @@ packages:
description:
name: sync_http
sha256: "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.3.1"
term_glyph:
@ -259,7 +259,7 @@ packages:
description:
name: term_glyph
sha256: "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.2.2"
test_api:
@ -267,7 +267,7 @@ packages:
description:
name: test_api
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "0.7.6"
typed_data:
@ -275,7 +275,7 @@ packages:
description:
name: typed_data
sha256: f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.4.0"
vector_math:
@ -283,7 +283,7 @@ packages:
description:
name: vector_math
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "2.2.0"
vm_service:
@ -291,7 +291,7 @@ packages:
description:
name: vm_service
sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "15.0.2"
web:
@ -299,7 +299,7 @@ packages:
description:
name: web
sha256: "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "1.1.1"
webdriver:
@ -307,7 +307,7 @@ packages:
description:
name: webdriver
sha256: "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade"
url: "https://pub.flutter-io.cn"
url: "https://pub.dev"
source: hosted
version: "3.1.0"
sdks:

Loading…
Cancel
Save