Browse Source

[Flutter] update to version 3.0.0

PualGeorge 11 months ago
parent
commit
87b7fd56ff
18 changed files with 76 additions and 68 deletions
  1. 6 0
      Flutter/tencent_conference_uikit/CHANGELOG.md
  2. 9 1
      Flutter/tencent_conference_uikit/android/build.gradle
  3. 1 1
      Flutter/tencent_conference_uikit/android/src/main/java/com/tencent/cloud/tuikit/flutter/rtcconferencetuikit/floatwindow/FloatWindowManager.java
  4. 1 1
      Flutter/tencent_conference_uikit/example/android/build.gradle
  5. 4 4
      Flutter/tencent_conference_uikit/example/lib/pages/common/login/controller.dart
  6. 1 1
      Flutter/tencent_conference_uikit/example/lib/pages/conference_tuikit/create_room/controller.dart
  7. 1 1
      Flutter/tencent_conference_uikit/example/lib/pages/conference_tuikit/enter_room/controller.dart
  8. 2 2
      Flutter/tencent_conference_uikit/example/pubspec.yaml
  9. 4 5
      Flutter/tencent_conference_uikit/lib/common/store/float_window_store.dart
  10. 7 2
      Flutter/tencent_conference_uikit/lib/common/store/room.dart
  11. 21 12
      Flutter/tencent_conference_uikit/lib/conference/conference_session.dart
  12. 3 1
      Flutter/tencent_conference_uikit/lib/event/room_event_handler.dart
  13. 4 0
      Flutter/tencent_conference_uikit/lib/pages/conference_main/controller.dart
  14. 0 1
      Flutter/tencent_conference_uikit/lib/pages/conference_main/widgets/float_window/index.dart
  15. 6 2
      Flutter/tencent_conference_uikit/lib/pages/conference_main/widgets/float_window/view.dart
  16. 0 29
      Flutter/tencent_conference_uikit/lib/pages/conference_main/widgets/float_window/window_manager.dart
  17. 2 1
      Flutter/tencent_conference_uikit/lib/pages/conference_main/widgets/user_list/controller.dart
  18. 4 4
      Flutter/tencent_conference_uikit/pubspec.yaml

+ 6 - 0
Flutter/tencent_conference_uikit/CHANGELOG.md

@@ -1,5 +1,11 @@
 ## Changelog
 ## Changelog
 
 
+### 3.0.0(2025-04-15)
+
+- Fixed the issue of error when using rtc_room_engine version 2.9 or above.
+- Fixed the issue of abnormal status in the room when entering the room.
+- Upgraded rtc_room_engine dependencies.
+
 ### 2.8.4(2025-01-16)
 ### 2.8.4(2025-01-16)
 - Fixed the issue where the member count is displayed abnormally when there are a large number of user in the conference.
 - Fixed the issue where the member count is displayed abnormally when there are a large number of user in the conference.
 - Fixed the issue that when there are a large number of user in the conference, the user on the seat cannot be seen after entering the room.
 - Fixed the issue that when there are a large number of user in the conference, the user on the seat cannot be seen after entering the room.

+ 9 - 1
Flutter/tencent_conference_uikit/android/build.gradle

@@ -1,5 +1,6 @@
 group 'com.tencent.cloud.tuikit.flutter.rtcconferencetuikit'
 group 'com.tencent.cloud.tuikit.flutter.rtcconferencetuikit'
 version '1.0'
 version '1.0'
+import org.gradle.util.VersionNumber
 
 
 //获取local.properties配置文件
 //获取local.properties配置文件
 def localProperties = new Properties()
 def localProperties = new Properties()
@@ -23,7 +24,14 @@ buildscript {
     }
     }
 
 
     dependencies {
     dependencies {
-        classpath 'com.android.tools.build:gradle:7.3.0'
+        VersionNumber currentGradleVersion = VersionNumber.parse(gradle.gradleVersion)
+        if (currentGradleVersion.major >= 8) {
+            classpath 'com.android.tools.build:gradle:8.0.2'
+            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.9.0"
+        } else {
+            classpath 'com.android.tools.build:gradle:4.2.1'
+            classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.6.10"
+        }
     }
     }
 }
 }
 
 

+ 1 - 1
Flutter/tencent_conference_uikit/android/src/main/java/com/tencent/cloud/tuikit/flutter/rtcconferencetuikit/floatwindow/FloatWindowManager.java

@@ -14,7 +14,7 @@ import android.view.View;
 import android.view.WindowManager;
 import android.view.WindowManager;
 import android.widget.FrameLayout;
 import android.widget.FrameLayout;
 
 
-import com.tencent.cloud.tuikit.engine.room.internal.utils.JObjectHelper;
+import com.tencent.cloud.tuikit.engine.impl.utils.JObjectHelper;
 import com.tencent.cloud.tuikit.flutter.rtcconferencetuikit.R;
 import com.tencent.cloud.tuikit.flutter.rtcconferencetuikit.R;
 import com.tencent.qcloud.tuicore.permission.PermissionRequester;
 import com.tencent.qcloud.tuicore.permission.PermissionRequester;
 import com.tencent.qcloud.tuicore.util.ScreenUtil;
 import com.tencent.qcloud.tuicore.util.ScreenUtil;

+ 1 - 1
Flutter/tencent_conference_uikit/example/android/build.gradle

@@ -1,5 +1,5 @@
 buildscript {
 buildscript {
-    ext.kotlin_version = '1.7.10'
+    ext.kotlin_version = '1.9.22'
     repositories {
     repositories {
         google()
         google()
         mavenCentral()
         mavenCentral()

+ 4 - 4
Flutter/tencent_conference_uikit/example/lib/pages/common/login/controller.dart

@@ -3,13 +3,13 @@ import 'package:get/get.dart';
 import 'package:room_flutter_example/common/index.dart';
 import 'package:room_flutter_example/common/index.dart';
 import 'package:room_flutter_example/debug/index.dart';
 import 'package:room_flutter_example/debug/index.dart';
 import 'package:rtc_room_engine/rtc_room_engine.dart';
 import 'package:rtc_room_engine/rtc_room_engine.dart';
-import 'package:tencent_cloud_chat/components/component_config/tencent_cloud_chat_message_common_defines.dart';
-import 'package:tencent_cloud_chat/components/component_config/tencent_cloud_chat_message_config.dart';
-import 'package:tencent_cloud_chat/models/tencent_cloud_chat_models.dart';
-import 'package:tencent_cloud_chat/tencent_cloud_chat.dart';
 import 'package:tencent_cloud_chat_message/tencent_cloud_chat_message.dart';
 import 'package:tencent_cloud_chat_message/tencent_cloud_chat_message.dart';
 import 'package:tencent_cloud_chat_sticker/tencent_cloud_chat_sticker.dart';
 import 'package:tencent_cloud_chat_sticker/tencent_cloud_chat_sticker.dart';
 import 'package:tencent_cloud_chat_sticker/tencent_cloud_chat_sticker_init_data.dart';
 import 'package:tencent_cloud_chat_sticker/tencent_cloud_chat_sticker_init_data.dart';
+import 'package:tencent_cloud_chat_common/tencent_cloud_chat_common.dart';
+import 'package:tencent_cloud_chat_common/models/tencent_cloud_chat_models.dart';
+import 'package:tencent_cloud_chat_common/components/component_config/tencent_cloud_chat_message_config.dart';
+import 'package:tencent_cloud_chat_common/components/component_config/tencent_cloud_chat_message_common_defines.dart';
 
 
 class LoginController extends GetxController {
 class LoginController extends GetxController {
   LoginController();
   LoginController();

+ 1 - 1
Flutter/tencent_conference_uikit/example/lib/pages/conference_tuikit/create_room/controller.dart

@@ -4,7 +4,7 @@ import 'package:room_flutter_example/common/index.dart';
 import 'package:tencent_cloud_chat_message/tencent_cloud_chat_message.dart';
 import 'package:tencent_cloud_chat_message/tencent_cloud_chat_message.dart';
 import 'package:tencent_conference_uikit/common/widgets/toast.dart';
 import 'package:tencent_conference_uikit/common/widgets/toast.dart';
 import 'package:tencent_conference_uikit/tencent_conference_uikit.dart';
 import 'package:tencent_conference_uikit/tencent_conference_uikit.dart';
-import 'package:tencent_cloud_chat/components/component_options/tencent_cloud_chat_message_options.dart';
+import 'package:tencent_cloud_chat_common/components/component_options/tencent_cloud_chat_message_options.dart';
 
 
 class CreateRoomController extends GetxController {
 class CreateRoomController extends GetxController {
   var isOperating = false;
   var isOperating = false;

+ 1 - 1
Flutter/tencent_conference_uikit/example/lib/pages/conference_tuikit/enter_room/controller.dart

@@ -4,7 +4,7 @@ import 'package:room_flutter_example/common/store/user.dart';
 import 'package:tencent_cloud_chat_message/tencent_cloud_chat_message.dart';
 import 'package:tencent_cloud_chat_message/tencent_cloud_chat_message.dart';
 import 'package:tencent_conference_uikit/common/widgets/toast.dart';
 import 'package:tencent_conference_uikit/common/widgets/toast.dart';
 import 'package:tencent_conference_uikit/tencent_conference_uikit.dart';
 import 'package:tencent_conference_uikit/tencent_conference_uikit.dart';
-import 'package:tencent_cloud_chat/components/component_options/tencent_cloud_chat_message_options.dart';
+import 'package:tencent_cloud_chat_common/components/component_options/tencent_cloud_chat_message_options.dart';
 
 
 class EnterRoomController extends GetxController {
 class EnterRoomController extends GetxController {
   EnterRoomController();
   EnterRoomController();

+ 2 - 2
Flutter/tencent_conference_uikit/example/pubspec.yaml

@@ -41,8 +41,8 @@ dependencies:
   crypto: ^3.0.3
   crypto: ^3.0.3
   shared_preferences: ^2.2.1
   shared_preferences: ^2.2.1
   open_file: ^3.3.2
   open_file: ^3.3.2
-  tencent_cloud_chat_message: '>= 2.0.0 <2.1.0'
-  tencent_cloud_chat_sticker: ^1.1.0
+  tencent_cloud_chat_message: ^3.2.1
+  tencent_cloud_chat_sticker: ^3.2.1
 
 
 dev_dependencies:
 dev_dependencies:
   flutter_test:
   flutter_test:

+ 4 - 5
Flutter/tencent_conference_uikit/lib/common/store/float_window_store.dart

@@ -39,11 +39,12 @@ class FloatWindowStore extends GetxController {
 
 
   @override
   @override
   void onClose() {
   void onClose() {
-    super.onClose();
     RoomEngineManager().removeObserver(_observer);
     RoomEngineManager().removeObserver(_observer);
     _maxVolumeUserIdChangedWorker.dispose();
     _maxVolumeUserIdChangedWorker.dispose();
     _isSharingWorker.dispose();
     _isSharingWorker.dispose();
     _floatUserInfoChangedWorker.dispose();
     _floatUserInfoChangedWorker.dispose();
+    dismissFloatWindow();
+    super.onClose();
   }
   }
 
 
   Future<bool> showFloatWindow() async {
   Future<bool> showFloatWindow() async {
@@ -71,13 +72,14 @@ class FloatWindowStore extends GetxController {
       RtcConferenceTuikitPlatform.instance.enableFloatWindow(false);
       RtcConferenceTuikitPlatform.instance.enableFloatWindow(false);
     } else if (Platform.isIOS) {
     } else if (Platform.isIOS) {
       overlayEntry?.remove();
       overlayEntry?.remove();
+      overlayEntry?.dispose();
       overlayEntry = null;
       overlayEntry = null;
     }
     }
     onFloatWindowClose();
     onFloatWindowClose();
   }
   }
 
 
   onFloatWindowClose() {
   onFloatWindowClose() {
-    Get.delete<FloatWindowStore>();
+    Get.delete<FloatWindowStore>(force: true);
   }
   }
 
 
   void _initWorker() {
   void _initWorker() {
@@ -118,9 +120,6 @@ class FloatWindowStore extends GetxController {
         ownerIndex = i;
         ownerIndex = i;
       }
       }
     }
     }
-    if (ownerIndex == -1) {
-      return;
-    }
     currentFloatWindowUserModel.value = fistTalkingUserIndex == -1
     currentFloatWindowUserModel.value = fistTalkingUserIndex == -1
         ? RoomStore.to.userInfoList[ownerIndex]
         ? RoomStore.to.userInfoList[ownerIndex]
         : RoomStore.to.userInfoList[fistTalkingUserIndex];
         : RoomStore.to.userInfoList[fistTalkingUserIndex];

+ 7 - 2
Flutter/tencent_conference_uikit/lib/common/store/room.dart

@@ -198,11 +198,16 @@ class RoomStore {
     }
     }
   }
   }
 
 
-  void updateUserSeatedState(String userId, bool isOnSeat) {
+  void updateUserSeatedState(String userId, bool isOnSeat,
+      {TUIUserInfo? fallbackUserInfo}) {
     var index = getUserIndex(userId, userInfoList);
     var index = getUserIndex(userId, userInfoList);
+
     if (index == -1) {
     if (index == -1) {
-      return;
+      if (fallbackUserInfo == null) return;
+      addUser(fallbackUserInfo, userInfoList);
+      index = getUserIndex(userId, userInfoList);
     }
     }
+
     userInfoList[index].isOnSeat.value = isOnSeat;
     userInfoList[index].isOnSeat.value = isOnSeat;
 
 
     if (userId == currentUser.userId.value) {
     if (userId == currentUser.userId.value) {

+ 21 - 12
Flutter/tencent_conference_uikit/lib/conference/conference_session.dart

@@ -132,17 +132,17 @@ class ConferenceSession {
 
 
   Future<void> _quickStartInternal(TUIRoomInfo roomInfo, bool openAudio,
   Future<void> _quickStartInternal(TUIRoomInfo roomInfo, bool openAudio,
       bool openVideo, bool isSoundOnSpeaker) async {
       bool openVideo, bool isSoundOnSpeaker) async {
-    var createRoomResult = await RoomEngineManager().createRoom(roomInfo);
+    var engineManger = RoomEngineManager();
+    if (RoomStore.to.isEnteredRoom &&
+        RoomStore.to.roomInfo.roomId != roomInfo.roomId) {
+      _onActionError?.call(ConferenceError.errFailed,
+          "You are currently in a conference,exit before joining a new one");
+      return;
+    }
+    var createRoomResult = await engineManger.createRoom(roomInfo);
     if (createRoomResult.code == TUIError.success) {
     if (createRoomResult.code == TUIError.success) {
-      var enterRoomResult = await RoomEngineManager()
-          .enterRoom(roomInfo.roomId, openAudio, openVideo, isSoundOnSpeaker);
-      if (enterRoomResult.code == TUIError.success) {
-        _onActionSuccess?.call();
-      } else {
-        _onActionError?.call(
-            ConferenceErrorExt.fromValue(enterRoomResult.code.value()),
-            enterRoomResult.message ?? "");
-      }
+      await _joinInternal(
+          roomInfo.roomId, openAudio, openVideo, isSoundOnSpeaker);
     } else {
     } else {
       _onActionError?.call(
       _onActionError?.call(
           ConferenceErrorExt.fromValue(createRoomResult.code.value()),
           ConferenceErrorExt.fromValue(createRoomResult.code.value()),
@@ -152,8 +152,17 @@ class ConferenceSession {
 
 
   Future<void> _joinInternal(String roomId, bool openAudio, bool openVideo,
   Future<void> _joinInternal(String roomId, bool openAudio, bool openVideo,
       bool isSoundOnSpeaker) async {
       bool isSoundOnSpeaker) async {
-    var result = await RoomEngineManager()
-        .enterRoom(roomId, openAudio, openVideo, isSoundOnSpeaker);
+    var engineManger = RoomEngineManager();
+    if (RoomStore.to.isEnteredRoom) {
+      if (RoomStore.to.roomInfo.roomId == roomId) {
+        _onActionSuccess?.call();
+      } else {
+        _onActionError?.call(ConferenceError.errFailed,
+            "You are currently in a conference,exit before joining a new one");
+      }
+    }
+    var result = await engineManger.enterRoom(
+        roomId, openAudio, openVideo, isSoundOnSpeaker);
     if (result.code == TUIError.success) {
     if (result.code == TUIError.success) {
       _onActionSuccess?.call();
       _onActionSuccess?.call();
     } else {
     } else {

+ 3 - 1
Flutter/tencent_conference_uikit/lib/event/room_event_handler.dart

@@ -5,6 +5,7 @@ import 'package:rtc_room_engine/rtc_room_engine.dart';
 class RoomEventHandler extends TUIRoomObserver {
 class RoomEventHandler extends TUIRoomObserver {
   final int volumeCanHeardMinLimit = 10;
   final int volumeCanHeardMinLimit = 10;
   final _store = RoomStore.to;
   final _store = RoomStore.to;
+
   RoomEventHandler() {
   RoomEventHandler() {
     super.onAllUserMicrophoneDisableChanged = (roomId, isDisable) {
     super.onAllUserMicrophoneDisableChanged = (roomId, isDisable) {
       _store.roomInfo.isMicrophoneDisableForAllUser = isDisable;
       _store.roomInfo.isMicrophoneDisableForAllUser = isDisable;
@@ -148,12 +149,13 @@ class RoomEventHandler extends TUIRoomObserver {
 
 
     super.onSeatListChanged = (seatList, seatedList, leftList) async {
     super.onSeatListChanged = (seatList, seatedList, leftList) async {
       for (var element in seatedList) {
       for (var element in seatedList) {
-        _store.updateUserSeatedState(element.userId, true);
         var result = await RoomEngineManager()
         var result = await RoomEngineManager()
             .getRoomEngine()
             .getRoomEngine()
             .getUserInfo(element.userId);
             .getUserInfo(element.userId);
         if (result.code == TUIError.success) {
         if (result.code == TUIError.success) {
           _store.addUser(result.data!, RoomStore.to.seatedUserList);
           _store.addUser(result.data!, RoomStore.to.seatedUserList);
+          _store.updateUserSeatedState(element.userId, true,
+              fallbackUserInfo: result.data!);
         }
         }
       }
       }
       for (var element in leftList) {
       for (var element in leftList) {

+ 4 - 0
Flutter/tencent_conference_uikit/lib/pages/conference_main/controller.dart

@@ -3,6 +3,7 @@ import 'dart:async';
 import 'package:get/get.dart';
 import 'package:get/get.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 import 'package:tencent_conference_uikit/common/index.dart';
 import 'package:tencent_conference_uikit/common/index.dart';
+import 'package:tencent_conference_uikit/common/store/float_window_store.dart';
 import 'package:tencent_conference_uikit/conference/conference_error.dart';
 import 'package:tencent_conference_uikit/conference/conference_error.dart';
 import 'package:tencent_conference_uikit/conference/conference_observer.dart';
 import 'package:tencent_conference_uikit/conference/conference_observer.dart';
 import 'package:tencent_conference_uikit/conference/conference_params.dart';
 import 'package:tencent_conference_uikit/conference/conference_params.dart';
@@ -110,6 +111,9 @@ class ConferenceMainController extends GetxController {
       resetHideTimer();
       resetHideTimer();
       _hideDuration = 3;
       _hideDuration = 3;
     }
     }
+    if (Get.isRegistered<FloatWindowStore>()) {
+      FloatWindowStore.to.dismissFloatWindow();
+    }
     super.onReady();
     super.onReady();
   }
   }
 
 

+ 0 - 1
Flutter/tencent_conference_uikit/lib/pages/conference_main/widgets/float_window/index.dart

@@ -2,4 +2,3 @@ library float_window;
 
 
 export './controller.dart';
 export './controller.dart';
 export './view.dart';
 export './view.dart';
-export './window_manager.dart';

+ 6 - 2
Flutter/tencent_conference_uikit/lib/pages/conference_main/widgets/float_window/view.dart

@@ -1,5 +1,6 @@
 import 'package:flutter/material.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:get/get.dart';
+import 'package:tencent_conference_uikit/common/index.dart';
 import 'package:tencent_conference_uikit/common/store/float_window_store.dart';
 import 'package:tencent_conference_uikit/common/store/float_window_store.dart';
 import 'package:tencent_conference_uikit/common/store/index.dart';
 import 'package:tencent_conference_uikit/common/store/index.dart';
 import 'package:tencent_conference_uikit/common/style/colors.dart';
 import 'package:tencent_conference_uikit/common/style/colors.dart';
@@ -50,8 +51,10 @@ class FloatWindowWidget extends GetView<FloatWindowController> {
                   child: Obx(
                   child: Obx(
                     () => VideoItemWidget(
                     () => VideoItemWidget(
                       radius: 0,
                       radius: 0,
-                      userModel:
-                          FloatWindowStore.to.currentFloatWindowUserModel.value,
+                      userModel: Get.isRegistered<FloatWindowStore>()
+                          ? FloatWindowStore
+                              .to.currentFloatWindowUserModel.value
+                          : UserModel(),
                       isScreenStream: RoomStore.to.isSharing.value &&
                       isScreenStream: RoomStore.to.isSharing.value &&
                           !controller.isCurrentUser(),
                           !controller.isCurrentUser(),
                     ),
                     ),
@@ -68,6 +71,7 @@ class FloatWindowWidget extends GetView<FloatWindowController> {
   @override
   @override
   Widget build(BuildContext context) {
   Widget build(BuildContext context) {
     return GetBuilder<FloatWindowController>(
     return GetBuilder<FloatWindowController>(
+      autoRemove: false,
       init: FloatWindowController(left, top, onFloatWindowTap),
       init: FloatWindowController(left, top, onFloatWindowTap),
       builder: (_) {
       builder: (_) {
         return _buildFloatWidget();
         return _buildFloatWidget();

+ 0 - 29
Flutter/tencent_conference_uikit/lib/pages/conference_main/widgets/float_window/window_manager.dart

@@ -1,29 +0,0 @@
-import 'package:flutter/material.dart';
-import 'package:get/get.dart';
-import 'package:tencent_conference_uikit/pages/conference_main/widgets/float_window/view.dart';
-
-class FloatWindowManager {
-  static final FloatWindowManager _instance = FloatWindowManager._();
-
-  factory FloatWindowManager() => _instance;
-
-  FloatWindowManager._();
-
-  OverlayEntry? overlayEntry;
-
-  show(BuildContext context) {
-    overlayEntry ??= OverlayEntry(builder: (BuildContext context) {
-      return FloatWindowWidget(
-        top: 100,
-        left: Get.width - 100,
-        onFloatWindowTap: () => _hide(),
-      );
-    });
-    Overlay.of(context).insert(overlayEntry!);
-  }
-
-  void _hide() {
-    overlayEntry?.remove();
-    overlayEntry = null;
-  }
-}

+ 2 - 1
Flutter/tencent_conference_uikit/lib/pages/conference_main/widgets/user_list/controller.dart

@@ -102,7 +102,8 @@ class UserListController extends GetxController {
     if (value.isNotEmpty) {
     if (value.isNotEmpty) {
       List<UserModel> results = RoomStore.to.userInfoList
       List<UserModel> results = RoomStore.to.userInfoList
           .where((user) =>
           .where((user) =>
-              user.userName.toLowerCase().contains(value.toLowerCase()))
+      user.userName.toLowerCase().contains(value.toLowerCase()) ||
+          user.userId.value.toLowerCase().contains(value.toLowerCase()))
           .toList();
           .toList();
       searchResults.assignAll(results);
       searchResults.assignAll(results);
       isSearchBarEmpty.value = false;
       isSearchBarEmpty.value = false;

+ 4 - 4
Flutter/tencent_conference_uikit/pubspec.yaml

@@ -1,6 +1,6 @@
 name: tencent_conference_uikit
 name: tencent_conference_uikit
 description: tencent_conference_uikit is a UIKit about audio&video room launched by Tencent Cloud.
 description: tencent_conference_uikit is a UIKit about audio&video room launched by Tencent Cloud.
-version: 2.8.4
+version: 3.0.0
 repository: https://github.com/Tencent-RTC/TUIRoomKit/tree/main/Flutter/tencent_conference_uikit
 repository: https://github.com/Tencent-RTC/TUIRoomKit/tree/main/Flutter/tencent_conference_uikit
 homepage: https://trtc.io/document/57508?platform=flutter&product=conference
 homepage: https://trtc.io/document/57508?platform=flutter&product=conference
 
 
@@ -12,14 +12,14 @@ dependencies:
   flutter:
   flutter:
     sdk: flutter
     sdk: flutter
   get: ^4.6.5
   get: ^4.6.5
-  rtc_room_engine: ^2.8.4
+  rtc_room_engine: ^3.0.2
   permission_handler: ^11.0.0
   permission_handler: ^11.0.0
   plugin_platform_interface: ^2.1.6
   plugin_platform_interface: ^2.1.6
   fluttertoast: ^8.2.2
   fluttertoast: ^8.2.2
-  tencent_trtc_cloud: ^2.8.1
+  tencent_trtc_cloud: ^3.0.2
   replay_kit_launcher: ^1.0.0
   replay_kit_launcher: ^1.0.0
   tencent_float_chat_widget: ^1.0.4
   tencent_float_chat_widget: ^1.0.4
-  tencent_cloud_chat_sdk: ^8.2.6325+2
+  tencent_cloud_chat_sdk: ^8.5.6864+4
 
 
 dev_dependencies:
 dev_dependencies:
   flutter_test:
   flutter_test: