flutter

最近更新时间:2024-05-08 14:48:21

我的收藏

插件功能

tencent_cloud_chat_sdk 5.1.5版本之后,您可以集成腾讯云即时通信官方提供的投票插件tencent_cloud_chat_vote_plugin,此插件为闭源插件,集成后,您可以在群里(Community 和 AVChatRoom 除外)集成投票功能。投票功能包括发起(单选、多选)投票、查看投票结果,参与投票等。Flutter 端与 Native 的投票能力互通。

环境与版本

本插件依赖插件以及环境
Fluter 3.10.0及以上
tencent_cloud_chat_sdk 5.1.5及以上

插件引入

通过 pub 可将投票插件 tencent_cloud_chat_vote_plugin 1.0.2 引入到项目中:
// 集成最新版本
pub add tencent_cloud_chat_vote_plugin
// 集成指定版本,在项目pubspec.yaml中dependencies字段加入
tencent_cloud_chat_vote_plugin: "version"

核心组件

插件集成

初始化插件

// 放在登录IM后

await TencentCloudChatVotePlugin.initPlugin();

创建投票

用户单击投票按钮,可创建投票。
import 'package:example/config.dart';
import 'package:flutter/material.dart';
import 'package:tencent_cloud_chat_vote_plugin/components/vote_create/vote_create.dart';

class VoteCreateExample extends StatefulWidget {
const VoteCreateExample({super.key});

@override
State<StatefulWidget> createState() => VoteCreateExampleState();
}

class VoteCreateExampleState extends State {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("创建投票"),
),
body: Container(
padding: const EdgeInsets.all(16),
child: TencentCloudChatVoteCreate(
groupID: ExampleConfig.testGruopID,
onCreateVoteSuccess: () {
Navigator.pop(context);
},
),
),
);
}
}
TencentCloudChatVoteCreate 参数说明
参数
说明
groupID
需要创建投票的群 ID,同 IM 群 ID,Community 和 AVChatRoom 除外。
onCreateVoteSuccess
创建投票成功回调。

投票消息解析

import 'package:example/config.dart';
import 'package:example/vote_detail_example.dart';
import 'package:flutter/material.dart';
import 'package:tencent_cloud_chat_sdk/enum/history_msg_get_type_enum.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_message.dart';
import 'package:tencent_cloud_chat_sdk/models/v2_tim_value_callback.dart';
import 'package:tencent_cloud_chat_sdk/tencent_im_sdk_plugin.dart';
import 'package:tencent_cloud_chat_vote_plugin/tencent_cloud_chat_vote_plugin.dart';

class VoteMessageExample extends StatefulWidget {
const VoteMessageExample({super.key});

@override
State<StatefulWidget> createState() => VoteMessageExampleState();
}

class VoteMessageExampleState extends State {
V2TimMessage? message;
getTestV2TimMessage() async {
V2TimValueCallback<List<V2TimMessage>> messageListRes =
await TencentImSDKPlugin.v2TIMManager
.getMessageManager()
.getHistoryMessageList(
count: 1,
groupID: ExampleConfig.testGruopID,
getType: HistoryMsgGetTypeEnum.V2TIM_GET_CLOUD_OLDER_MSG,
);
if (messageListRes.code == 0) {
if (messageListRes.data != null) {
if (messageListRes.data!.isNotEmpty) {
setState(() {
message = messageListRes.data!.first;
});
}
}
}
}

bool isEnd = false;
@override
void initState() {
super.initState();
Future.delayed(
const Duration(
milliseconds: 300,
), () {
setState(() {
isEnd = true;
});
});
// 页面运动结束再显示组件
getTestV2TimMessage();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("投票消息体"),
),
body: !isEnd
? Container()
: message != null
? TencentCloudChatVoteMessage(
message: message!,
onTap: (
TencentCloudChatVoteDataOptoin option,
TencentCloudChatVoteLogic data,
) {
print(data.voteData.toJson());
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => VoteDetailExample(
option: option,
data: data,
),
),
);
},
)
: const Center(
child: Text("未获取到正确的Message实例"),
),
);
}
}

TencentCloudChatVoteMessage参数说明
参数
说明
message
投票消息,V2TimMessage 类型。
onTap
单击投票回调,当投票为公开且实名时,可以打开群投票详情。

投票详情查看

import 'package:flutter/material.dart';
import 'package:tencent_cloud_chat_vote_plugin/tencent_cloud_chat_vote_plugin.dart';

class VoteDetailExample extends StatelessWidget {
final TencentCloudChatVoteDataOptoin option;
final TencentCloudChatVoteLogic data;
const VoteDetailExample({
super.key,
required this.option,
required this.data,
});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(option.option),
),
body: Padding(
padding: const EdgeInsets.all(16),
child: TencentCloudChatVoteDetail(
option: option,
data: data,
),
),
);
}
}

TencentCloudChatVoteDetail 参数说明
参数
说明
option
TencentCloudChatVoteDataOption 类型,投票详情数据,由 TencentCloudChatVoteMessage 单击时获取。
data
TencentCloudChatVoteLogic 类型由 TencentCloudChatVoteMessage 点击时获取。