update flutter uikit to 1.2.0

This commit is contained in:
anonymous 2023-01-06 15:08:58 +08:00
parent 5cba5b30cf
commit cf7633aa02
13 changed files with 197 additions and 106 deletions

View File

@ -1,4 +1,10 @@
## 1.1.0 ## 1.2.0
* Fix: The issue of input area not showing, when switching from recording to keyboard, on `TIMUIKitChat`.
* Fix: Only the first receiver can receive the merged multiple forward messages.
* Optimize: `MessageItemBuilder` can now be used for shows on the merger message screen.
## 1.1.0 And 1.1.0+1
* Add: Supports two new languages, Japanese and Korean. * Add: Supports two new languages, Japanese and Korean.
* Add: Supports adding new other languages, apart from our default ones, including English, Chinese(Simplified and Traditional), Japanese and Korean, or modifying the translations, refers to [this documentation](https://www.tencentcloud.com/document/product/1047/52154). * Add: Supports adding new other languages, apart from our default ones, including English, Chinese(Simplified and Traditional), Japanese and Korean, or modifying the translations, refers to [this documentation](https://www.tencentcloud.com/document/product/1047/52154).

View File

@ -45,7 +45,7 @@
</a> </a>
</p> </p>
<h1 align="center">Tencent Cloud Chat UIKIt</h1> <h1 align="center">Tencent Cloud Chat UIKit</h1>
<br> <br>

View File

@ -963,14 +963,14 @@ packages:
name: tencent_cloud_chat_sdk name: tencent_cloud_chat_sdk
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.0.6" version: "5.0.7"
tencent_cloud_chat_uikit: tencent_cloud_chat_uikit:
dependency: "direct main" dependency: "direct main"
description: description:
path: ".." path: ".."
relative: true relative: true
source: path source: path
version: "1.1.0" version: "1.2.0"
tencent_extended_text: tencent_extended_text:
dependency: transitive dependency: transitive
description: description:
@ -998,7 +998,7 @@ packages:
name: tencent_im_base name: tencent_im_base
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.14" version: "1.0.17"
tencent_im_sdk_plugin_platform_interface: tencent_im_sdk_plugin_platform_interface:
dependency: transitive dependency: transitive
description: description:

View File

@ -982,10 +982,10 @@ class TUIChatSeparateViewModel extends ChangeNotifier {
lifeCycleMsg = lifeCycleMsg =
await lifeCycle?.messageWillSend(messageInfoWithSender); await lifeCycle?.messageWillSend(messageInfoWithSender);
if (lifeCycleMsg == null) { if (lifeCycleMsg == null) {
return null; continue;
} }
} }
return _sendMessage( _sendMessage(
id: mergerMessageInfo.id!, id: mergerMessageInfo.id!,
convID: convID, convID: convID,
convType: convType == 1 ? ConvType.c2c : ConvType.group, convType: convType == 1 ? ConvType.c2c : ConvType.group,

View File

@ -1,7 +1,6 @@
// ignore_for_file: unused_import // ignore_for_file: unused_import
import 'dart:io'; import 'dart:io';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart';
@ -19,9 +18,9 @@ class PermissionRequestInfo extends StatefulWidget {
const PermissionRequestInfo( const PermissionRequestInfo(
{Key? key, {Key? key,
required this.removeOverLay, required this.removeOverLay,
required this.permissionType, required this.permissionType,
required this.appName}) required this.appName})
: super(key: key); : super(key: key);
@override @override
@ -205,11 +204,11 @@ class Permissions {
} }
static Future<bool> checkPermission( static Future<bool> checkPermission(
BuildContext context, BuildContext context,
int value, [ int value, [
TUITheme? theme, TUITheme? theme,
bool isShowPermissionPage = true, bool isShowPermissionPage = true,
]) async { ]) async {
final status = await Permission.byValue(value).status; final status = await Permission.byValue(value).status;
if (status.isGranted || status.isLimited) { if (status.isGranted || status.isLimited) {
return true; return true;
@ -256,7 +255,11 @@ class Permissions {
static Future<bool?> showPermissionConfirmDialog(BuildContext context, value, static Future<bool?> showPermissionConfirmDialog(BuildContext context, value,
[TUITheme? theme, bool isShowPermissionPage = true]) async { [TUITheme? theme, bool isShowPermissionPage = true]) async {
final platformUtils = PlatformUtils();
//
if (!await checkPermissionSetBefore(value)) {
await setLocalPermission(value); await setLocalPermission(value);
if (platformUtils.isAndroid && isShowPermissionPage) {
showPermissionRequestInfoDialog(context, value); showPermissionRequestInfoDialog(context, value);
} }
return true; return true;
@ -280,54 +283,54 @@ class Permissions {
builder: (context) { builder: (context) {
return platformUtils.isIOS return platformUtils.isIOS
? CupertinoAlertDialog( ? CupertinoAlertDialog(
title: Text("$appName" + title: Text("$appName" +
TIM_t_para(" 想访问您的{{option2}}", " 想访问您的$option2")( TIM_t_para(" 想访问您的{{option2}}", " 想访问您的$option2")(
option2: option2)), option2: option2)),
content: Text(permissionText), content: Text(permissionText),
actions: <Widget>[ actions: <Widget>[
CupertinoDialogAction( CupertinoDialogAction(
child: Text(TIM_t("以后再说")), child: Text(TIM_t("以后再说")),
onPressed: closeDialog, // onPressed: closeDialog, //
), ),
CupertinoDialogAction( CupertinoDialogAction(
child: Text(TIM_t("去开启")), child: Text(TIM_t("去开启")),
onPressed: getPermission, onPressed: getPermission,
), ),
], ],
) )
: AlertDialog( : AlertDialog(
content: Text(permissionText), content: Text(permissionText),
actions: <Widget>[ actions: <Widget>[
const Divider(), const Divider(),
SizedBox( SizedBox(
height: 48, height: 48,
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly, mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [ children: [
Expanded( Expanded(
child: TextButton( child: TextButton(
child: Text(TIM_t("以后再说"), child: Text(TIM_t("以后再说"),
style: TextStyle( style: TextStyle(
color: theme?.black ?? Colors.black, color: theme?.black ?? Colors.black,
)), )),
onPressed: closeDialog, // onPressed: closeDialog, //
), ),
), ),
const VerticalDivider(), const VerticalDivider(),
Expanded( Expanded(
child: TextButton( child: TextButton(
child: Text(TIM_t("去开启"), child: Text(TIM_t("去开启"),
style: TextStyle( style: TextStyle(
color: theme?.black ?? Colors.black, color: theme?.black ?? Colors.black,
)), )),
onPressed: getPermission, onPressed: getPermission,
),
)
],
), ),
) )
], ],
); ),
)
],
);
}, },
); );
} }

View File

@ -520,6 +520,7 @@ class _TIMUIKItHistoryMessageListItemState
)!; )!;
} }
return TIMUIKitMergerElem( return TIMUIKitMergerElem(
messageItemBuilder: messageItemBuilder,
model: model, model: model,
isShowJump: isShowJump, isShowJump: isShowJump,
clearJump: clearJump, clearJump: clearJump,

View File

@ -5,6 +5,7 @@ import 'dart:math';
import 'package:flutter/cupertino.dart'; import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:tencent_cloud_chat_uikit/ui/utils/permission.dart';
import 'package:tencent_open_file/tencent_open_file.dart'; import 'package:tencent_open_file/tencent_open_file.dart';
import 'package:package_info_plus/package_info_plus.dart'; import 'package:package_info_plus/package_info_plus.dart';
import 'package:permission_handler/permission_handler.dart'; import 'package:permission_handler/permission_handler.dart';
@ -15,10 +16,7 @@ import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_state.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart'; import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/view_models/tui_chat_global_model.dart'; import 'package:tencent_cloud_chat_uikit/business_logic/view_models/tui_chat_global_model.dart';
import 'package:tencent_cloud_chat_uikit/data_services/services_locatar.dart'; import 'package:tencent_cloud_chat_uikit/data_services/services_locatar.dart';
import 'package:tencent_cloud_chat_uikit/ui/utils/permission.dart';
import 'package:tencent_cloud_chat_uikit/ui/utils/platform.dart'; import 'package:tencent_cloud_chat_uikit/ui/utils/platform.dart';
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKitMessageItem/TIMUIKitMessageReaction/tim_uikit_message_reaction_wrapper.dart'; import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKitMessageItem/TIMUIKitMessageReaction/tim_uikit_message_reaction_wrapper.dart';
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_file_icon.dart'; import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKitMessageItem/tim_uikit_chat_file_icon.dart';
import 'package:tencent_cloud_chat_uikit/ui/widgets/textSize.dart'; import 'package:tencent_cloud_chat_uikit/ui/widgets/textSize.dart';

View File

@ -3,6 +3,7 @@ import 'dart:async';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_state.dart'; import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_state.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart'; import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart';
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list_item.dart';
import 'package:tencent_cloud_chat_uikit/ui/widgets/merger_message_screen.dart'; import 'package:tencent_cloud_chat_uikit/ui/widgets/merger_message_screen.dart';
@ -21,6 +22,7 @@ class TIMUIKitMergerElem extends StatefulWidget {
final V2TimMessage message; final V2TimMessage message;
final bool? isShowMessageReaction; final bool? isShowMessageReaction;
final TUIChatSeparateViewModel model; final TUIChatSeparateViewModel model;
final MessageItemBuilder? messageItemBuilder;
const TIMUIKitMergerElem( const TIMUIKitMergerElem(
{Key? key, {Key? key,
@ -31,7 +33,7 @@ class TIMUIKitMergerElem extends StatefulWidget {
this.isShowMessageReaction, this.isShowMessageReaction,
required this.messageID, required this.messageID,
required this.isShowJump, required this.isShowJump,
this.clearJump}) this.clearJump, this.messageItemBuilder})
: super(key: key); : super(key: key);
@override @override
@ -71,6 +73,7 @@ class TIMUIKitMergerElemState extends TIMUIKitState<TIMUIKitMergerElem> {
context, context,
MaterialPageRoute( MaterialPageRoute(
builder: (context) => MergerMessageScreen( builder: (context) => MergerMessageScreen(
messageItemBuilder: widget.messageItemBuilder,
model: model, msgID: widget.messageID), model: model, msgID: widget.messageID),
)); ));
} }

View File

@ -795,8 +795,8 @@ class _InputTextFieldState extends TIMUIKitState<TIMUIKitInputTextField> {
forbiddenText == null) forbiddenText == null)
InkWell( InkWell(
onTap: () async { onTap: () async {
showKeyboard = showSendSoundText;
if (showSendSoundText) { if (showSendSoundText) {
showKeyboard = true;
focusNode.requestFocus(); focusNode.requestFocus();
} }
if (await Permissions.checkPermission( if (await Permissions.checkPermission(
@ -806,7 +806,6 @@ class _InputTextFieldState extends TIMUIKitState<TIMUIKitInputTextField> {
)) { )) {
setState(() { setState(() {
showEmojiPanel = false; showEmojiPanel = false;
showKeyboard = false;
showMore = false; showMore = false;
showSendSoundText = !showSendSoundText; showSendSoundText = !showSendSoundText;
}); });

View File

@ -10,12 +10,10 @@ import 'package:tencent_cloud_chat_uikit/business_logic/life_cycle/chat_life_cyc
import 'package:tencent_cloud_chat_uikit/business_logic/listener_model/tui_group_listener_model.dart'; import 'package:tencent_cloud_chat_uikit/business_logic/listener_model/tui_group_listener_model.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart'; import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/view_models/tui_chat_global_model.dart'; import 'package:tencent_cloud_chat_uikit/business_logic/view_models/tui_chat_global_model.dart';
import 'package:tencent_cloud_chat_uikit/data_services/services_locatar.dart'; import 'package:tencent_cloud_chat_uikit/data_services/services_locatar.dart';
import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart'; import 'package:tencent_cloud_chat_uikit/tencent_cloud_chat_uikit.dart';
import 'package:tencent_cloud_chat_uikit/ui/constants/history_message_constant.dart'; import 'package:tencent_cloud_chat_uikit/ui/constants/history_message_constant.dart';
import 'package:tencent_cloud_chat_uikit/ui/controller/tim_uikit_chat_controller.dart'; import 'package:tencent_cloud_chat_uikit/ui/controller/tim_uikit_chat_controller.dart';
import 'package:tencent_cloud_chat_uikit/ui/utils/frame.dart'; import 'package:tencent_cloud_chat_uikit/ui/utils/frame.dart';
import 'package:tencent_cloud_chat_uikit/ui/utils/optimize_utils.dart'; import 'package:tencent_cloud_chat_uikit/ui/utils/optimize_utils.dart';
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/tim_uikit_multi_select_panel.dart'; import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/tim_uikit_multi_select_panel.dart';

View File

@ -4,6 +4,7 @@ import 'package:flutter/material.dart';
import 'package:loading_animation_widget/loading_animation_widget.dart'; import 'package:loading_animation_widget/loading_animation_widget.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_state.dart'; import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_state.dart';
import 'package:tencent_cloud_chat_uikit/ui/views/TIMUIKitChat/TIMUIKItMessageList/tim_uikit_chat_history_message_list_item.dart';
import 'package:tencent_im_base/tencent_im_base.dart'; import 'package:tencent_im_base/tencent_im_base.dart';
import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart'; import 'package:tencent_cloud_chat_uikit/business_logic/separate_models/tui_chat_separate_view_model.dart';
import 'package:tencent_cloud_chat_uikit/data_services/message/message_services.dart'; import 'package:tencent_cloud_chat_uikit/data_services/message/message_services.dart';
@ -18,9 +19,13 @@ import 'package:tencent_cloud_chat_uikit/base_widgets/tim_ui_kit_base.dart';
class MergerMessageScreen extends StatefulWidget { class MergerMessageScreen extends StatefulWidget {
final TUIChatSeparateViewModel model; final TUIChatSeparateViewModel model;
final String msgID; final String msgID;
final MessageItemBuilder? messageItemBuilder;
const MergerMessageScreen( const MergerMessageScreen(
{Key? key, required this.model, required this.msgID}) {Key? key,
required this.model,
required this.msgID,
this.messageItemBuilder})
: super(key: key); : super(key: key);
@override @override
@ -39,7 +44,8 @@ class MergerMessageScreenState extends TIMUIKitState<MergerMessageScreen> {
} }
void initMessageList() async { void initMessageList() async {
final mergerMessageList = await _messageService.downloadMergerMessage(msgID: widget.msgID); final mergerMessageList =
await _messageService.downloadMergerMessage(msgID: widget.msgID);
setState(() { setState(() {
messageList = mergerMessageList ?? []; messageList = mergerMessageList ?? [];
}); });
@ -51,7 +57,7 @@ class MergerMessageScreenState extends TIMUIKitState<MergerMessageScreen> {
if (hasCustomData) { if (hasCustomData) {
try { try {
final CloudCustomData messageCloudCustomData = final CloudCustomData messageCloudCustomData =
CloudCustomData.fromJson(json.decode(message.cloudCustomData!)); CloudCustomData.fromJson(json.decode(message.cloudCustomData!));
if (messageCloudCustomData.messageReply != null) { if (messageCloudCustomData.messageReply != null) {
MessageRepliedData.fromJson(messageCloudCustomData.messageReply!); MessageRepliedData.fromJson(messageCloudCustomData.messageReply!);
return true; return true;
@ -70,8 +76,22 @@ class MergerMessageScreenState extends TIMUIKitState<MergerMessageScreen> {
switch (type) { switch (type) {
case MessageElemType.V2TIM_ELEM_TYPE_CUSTOM: case MessageElemType.V2TIM_ELEM_TYPE_CUSTOM:
if (widget.messageItemBuilder?.customMessageItemBuilder != null) {
return widget.messageItemBuilder!.customMessageItemBuilder!(
message,
false,
() {},
)!;
}
return Text(TIM_t("[自定义]")); return Text(TIM_t("[自定义]"));
case MessageElemType.V2TIM_ELEM_TYPE_SOUND: case MessageElemType.V2TIM_ELEM_TYPE_SOUND:
if (widget.messageItemBuilder?.soundMessageItemBuilder != null) {
return widget.messageItemBuilder!.soundMessageItemBuilder!(
message,
false,
() {},
)!;
}
return TIMUIKitSoundElem( return TIMUIKitSoundElem(
chatModel: widget.model, chatModel: widget.model,
isShowMessageReaction: false, isShowMessageReaction: false,
@ -82,6 +102,13 @@ class MergerMessageScreenState extends TIMUIKitState<MergerMessageScreen> {
localCustomInt: message.localCustomInt); localCustomInt: message.localCustomInt);
case MessageElemType.V2TIM_ELEM_TYPE_TEXT: case MessageElemType.V2TIM_ELEM_TYPE_TEXT:
if (isReplyMessage(message)) { if (isReplyMessage(message)) {
if (widget.messageItemBuilder?.textReplyMessageItemBuilder != null) {
return widget.messageItemBuilder!.textReplyMessageItemBuilder!(
message,
false,
() {},
)!;
}
return TIMUIKitReplyElem( return TIMUIKitReplyElem(
isShowMessageReaction: false, isShowMessageReaction: false,
chatModel: widget.model, chatModel: widget.model,
@ -89,14 +116,29 @@ class MergerMessageScreenState extends TIMUIKitState<MergerMessageScreen> {
scrollToIndex: () {}, scrollToIndex: () {},
clearJump: () {}); clearJump: () {});
} }
if (widget.messageItemBuilder?.textMessageItemBuilder != null) {
return Text( return widget.messageItemBuilder!.textMessageItemBuilder!(
message.textElem!.text!, message,
softWrap: true, false,
style: const TextStyle(fontSize: 16), () {},
)!;
}
return TIMUIKitTextElem(
chatModel: widget.model,
message: message,
isFromSelf: message.isSelf ?? false,
clearJump: (){},
isShowJump: false,
isShowMessageReaction: false,
); );
// return Text(message.textElem!.text!);
case MessageElemType.V2TIM_ELEM_TYPE_FACE: case MessageElemType.V2TIM_ELEM_TYPE_FACE:
if (widget.messageItemBuilder?.faceMessageItemBuilder != null) {
return widget.messageItemBuilder!.faceMessageItemBuilder!(
message,
false,
() {},
)!;
}
return TIMUIKitFaceElem( return TIMUIKitFaceElem(
model: widget.model, model: widget.model,
isShowJump: false, isShowJump: false,
@ -104,6 +146,13 @@ class MergerMessageScreenState extends TIMUIKitState<MergerMessageScreen> {
path: message.faceElem?.data ?? "", path: message.faceElem?.data ?? "",
message: message); message: message);
case MessageElemType.V2TIM_ELEM_TYPE_FILE: case MessageElemType.V2TIM_ELEM_TYPE_FILE:
if (widget.messageItemBuilder?.fileMessageItemBuilder != null) {
return widget.messageItemBuilder!.fileMessageItemBuilder!(
message,
false,
() {},
)!;
}
return TIMUIKitFileElem( return TIMUIKitFileElem(
chatModel: widget.model, chatModel: widget.model,
isShowMessageReaction: false, isShowMessageReaction: false,
@ -113,6 +162,13 @@ class MergerMessageScreenState extends TIMUIKitState<MergerMessageScreen> {
isSelf: isFromSelf, isSelf: isFromSelf,
isShowJump: false); isShowJump: false);
case MessageElemType.V2TIM_ELEM_TYPE_IMAGE: case MessageElemType.V2TIM_ELEM_TYPE_IMAGE:
if (widget.messageItemBuilder?.imageMessageItemBuilder != null) {
return widget.messageItemBuilder!.imageMessageItemBuilder!(
message,
false,
() {},
)!;
}
return TIMUIKitImageElem( return TIMUIKitImageElem(
chatModel: widget.model, chatModel: widget.model,
isShowMessageReaction: false, isShowMessageReaction: false,
@ -121,12 +177,34 @@ class MergerMessageScreenState extends TIMUIKitState<MergerMessageScreen> {
key: Key("${message.seq}_${message.timestamp}"), key: Key("${message.seq}_${message.timestamp}"),
); );
case MessageElemType.V2TIM_ELEM_TYPE_VIDEO: case MessageElemType.V2TIM_ELEM_TYPE_VIDEO:
if (widget.messageItemBuilder?.videoMessageItemBuilder != null) {
return widget.messageItemBuilder!.videoMessageItemBuilder!(
message,
false,
() {},
)!;
}
return TIMUIKitVideoElem(message, return TIMUIKitVideoElem(message,
chatModel: widget.model, chatModel: widget.model,
isFrom: "merger", isShowMessageReaction: false); isFrom: "merger",
isShowMessageReaction: false);
case MessageElemType.V2TIM_ELEM_TYPE_LOCATION: case MessageElemType.V2TIM_ELEM_TYPE_LOCATION:
if (widget.messageItemBuilder?.locationMessageItemBuilder != null) {
return widget.messageItemBuilder!.locationMessageItemBuilder!(
message,
false,
() {},
)!;
}
return Text(TIM_t("[位置]")); return Text(TIM_t("[位置]"));
case MessageElemType.V2TIM_ELEM_TYPE_MERGER: case MessageElemType.V2TIM_ELEM_TYPE_MERGER:
if (widget.messageItemBuilder?.mergerMessageItemBuilder != null) {
return widget.messageItemBuilder!.mergerMessageItemBuilder!(
message,
false,
() {},
)!;
}
return TIMUIKitMergerElem( return TIMUIKitMergerElem(
model: widget.model, model: widget.model,
isShowJump: false, isShowJump: false,
@ -204,31 +282,36 @@ class MergerMessageScreenState extends TIMUIKitState<MergerMessageScreen> {
iconTheme: const IconThemeData( iconTheme: const IconThemeData(
color: Colors.white, color: Colors.white,
)), )),
body: messageList.isEmpty ? Row(children: [ body: messageList.isEmpty
Expanded(child: Column( ? Row(
mainAxisSize: MainAxisSize.max, children: [
crossAxisAlignment: CrossAxisAlignment.center, Expanded(
mainAxisAlignment: MainAxisAlignment.center, child: Column(
children: [ mainAxisSize: MainAxisSize.max,
LoadingAnimationWidget.staggeredDotsWave( crossAxisAlignment: CrossAxisAlignment.center,
color: theme.weakTextColor ?? Colors.grey, mainAxisAlignment: MainAxisAlignment.center,
size: 48, children: [
LoadingAnimationWidget.staggeredDotsWave(
color: theme.weakTextColor ?? Colors.grey,
size: 48,
),
const SizedBox(height: 20),
Text(TIM_t("消息列表加载中"))
],
))
],
)
: Padding(
padding: const EdgeInsets.all(16),
child: ListView.builder(
shrinkWrap: true,
itemCount: messageList.length,
itemBuilder: (context, index) {
final message = messageList[index];
return _itemBuilder(message, context);
},
),
), ),
const SizedBox(height: 20),
Text(TIM_t("消息列表加载中"))
],
))
],) : Padding(
padding: const EdgeInsets.all(16),
child: ListView.builder(
shrinkWrap: true,
itemCount: messageList.length,
itemBuilder: (context, index) {
final messageItem = messageList[index];
return _itemBuilder(messageItem, context);
},
),
),
); );
} }
} }

View File

@ -1063,7 +1063,7 @@ packages:
name: tencent_cloud_chat_sdk name: tencent_cloud_chat_sdk
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "5.0.6" version: "5.0.7"
tencent_extended_text: tencent_extended_text:
dependency: "direct main" dependency: "direct main"
description: description:
@ -1091,7 +1091,7 @@ packages:
name: tencent_im_base name: tencent_im_base
url: "https://pub.dartlang.org" url: "https://pub.dartlang.org"
source: hosted source: hosted
version: "1.0.14" version: "1.0.17"
tencent_im_sdk_plugin_platform_interface: tencent_im_sdk_plugin_platform_interface:
dependency: transitive dependency: transitive
description: description:

View File

@ -1,6 +1,6 @@
name: tencent_cloud_chat_uikit name: tencent_cloud_chat_uikit
description: UI components library and basic chat business logic for Tencent Cloud Chat service, helping you build In-APP Chat module easily. description: UI components library and basic chat business logic for Tencent Cloud Chat service, helping you build In-APP Chat module easily.
version: 1.1.0 version: 1.2.0
homepage: https://www.tencentcloud.com/products/im?from=pub homepage: https://www.tencentcloud.com/products/im?from=pub
repository: https://github.com/TencentCloud/tc-chat-uikit-flutter repository: https://github.com/TencentCloud/tc-chat-uikit-flutter
documentation: https://comm.qq.com/im/doc/flutter/en/TUIKit/readme.html documentation: https://comm.qq.com/im/doc/flutter/en/TUIKit/readme.html
@ -62,7 +62,7 @@ dependencies:
url_launcher: ^6.1.4 url_launcher: ^6.1.4
universal_html: ^2.0.8 universal_html: ^2.0.8
link_preview_generator: ^1.2.0 link_preview_generator: ^1.2.0
tencent_im_base: ^1.0.14 tencent_im_base: ^1.0.17
disk_space: ^0.2.1 disk_space: ^0.2.1
http: ^0.13.5 http: ^0.13.5
crypto: ^3.0.2 crypto: ^3.0.2