diff --git a/ios/Podfile.lock b/ios/Podfile.lock
new file mode 100644
index 0000000..79e108e
--- /dev/null
+++ b/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
diff --git a/ios/Runner.xcworkspace/contents.xcworkspacedata b/ios/Runner.xcworkspace/contents.xcworkspacedata
new file mode 100644
index 0000000..21a3cc1
--- /dev/null
+++ b/ios/Runner.xcworkspace/contents.xcworkspacedata
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist
index 9c6d430..2683384 100644
--- a/ios/Runner/Info.plist
+++ b/ios/Runner/Info.plist
@@ -7,7 +7,7 @@
CFBundleDevelopmentRegion
$(DEVELOPMENT_LANGUAGE)
CFBundleDisplayName
- Dating Touchme App
+ 趣恋恋
CFBundleExecutable
$(EXECUTABLE_NAME)
CFBundleIdentifier
diff --git a/lib/controller/message/chat_controller.dart b/lib/controller/message/chat_controller.dart
index d698f2a..92c31c8 100644
--- a/lib/controller/message/chat_controller.dart
+++ b/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();
+
+ // 如果消息状态仍然是 PROGRESS,设置状态检查和监听(与sendMessage逻辑一致)
+ 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) {
+ // 如果状态已经是 FAIL,立即更新UI
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');
diff --git a/lib/generated/assets.dart b/lib/generated/assets.dart
index b9f8919..0821a1e 100644
--- a/lib/generated/assets.dart
+++ b/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';
}
diff --git a/lib/widget/message/call_item.dart b/lib/widget/message/call_item.dart
index e4fb1ee..60d667b 100644
--- a/lib/widget/message/call_item.dart
+++ b/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,
+ ),
+ ),
),
),
);
diff --git a/lib/widget/message/gift_item.dart b/lib/widget/message/gift_item.dart
index 5d32ad6..5ffebe9 100644
--- a/lib/widget/message/gift_item.dart
+++ b/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,
+ ),
+ ),
),
),
);
diff --git a/lib/widget/message/image_item.dart b/lib/widget/message/image_item.dart
index 6d10f04..1f8c789 100644
--- a/lib/widget/message/image_item.dart
+++ b/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,
+ ),
+ ),
),
),
);
diff --git a/lib/widget/message/room_item.dart b/lib/widget/message/room_item.dart
index 8029576..05902ca 100644
--- a/lib/widget/message/room_item.dart
+++ b/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,
+ ),
+ ),
),
),
);
diff --git a/lib/widget/message/text_item.dart b/lib/widget/message/text_item.dart
index f8ad379..77694a1 100644
--- a/lib/widget/message/text_item.dart
+++ b/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,
+ ),
+ ),
),
),
);
diff --git a/lib/widget/message/video_item.dart b/lib/widget/message/video_item.dart
index d88fcd2..a10e880 100644
--- a/lib/widget/message/video_item.dart
+++ b/lib/widget/message/video_item.dart
@@ -410,16 +410,20 @@ class _VideoItemState extends State {
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,
+ ),
+ ),
),
),
);
diff --git a/location_plugin/example/pubspec.lock b/location_plugin/example/pubspec.lock
index 36a3835..678892a 100644
--- a/location_plugin/example/pubspec.lock
+++ b/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: