用途
本技能用于在 Flutter 应用中构建会话式用户界面,覆盖 Syncfusion 提供的两个相关组件:SfChat(聊天组件)与 SfAIAssistView(AI 助手组件)。两者共享许多视觉与配置特性,但主要用途不同。
组件选择
使用 SfChat 的场景:需要多用户会话界面;需要区分接收消息与发送消息;需要传统即时通讯类应用功能(如团队协作、客户支持、社交消息、群聊);消息建议可出现在接收与发送消息上;需要通过 outgoingUser 显式标识发送方用户。
使用 SfAIAssistView 的场景:需要 AI 助手或聊天机器人功能;主要目标是面向 AI 服务的请求-响应模式;需要在响应消息上提供工具栏项(点赞、点踩、复制、重试);需要在 AI 生成响应时显示加载指示器;构建 AI 助手、聊天机器人、帮助机器人、问答界面;消息建议仅出现在 AI 响应消息上;需要清晰区分请求消息与响应消息。
主要能力
SfChat 核心属性包括:messages(ChatMessage 列表)、outgoingUser(发送消息的用户 ID)、composer(ChatComposer 文本输入)、actionButton(ChatActionButton 发送按钮)、placeholderBuilder(空状态自定义组件)、incomingMessageSettings 与 outgoingMessageSettings(接收/发送消息设置)、messageHeaderBuilder、messageFooterBuilder、messageContentBuilder、messageAvatarBuilder(消息头、尾、内容、头像自定义构建器)。
SfAIAssistView 核心属性包括:messages(AssistMessage 列表,含请求/响应)、composer(AssistComposer)、actionButton(AssistActionButton)、placeholderBuilder、requestMessageSettings 与 responseMessageSettings、messageHeaderBuilder、messageFooterBuilder、messageContentBuilder、messageAvatarBuilder、responseLoadingBuilder(AI 响应时的加载指示器)、onToolbarItemSelected(工具栏项点击回调)、onSuggestionItemSelected(建议项点击回调)。
消息类方面:ChatMessage 包含 text、time、author(ChatAuthor,含 id、name、avatar)、suggestions(ChatMessageSuggestion 列表)。AssistMessage 包含 data、time、author(AssistMessageAuthor)、suggestions(仅响应消息)、toolbarItems(仅响应消息)。
输入框(两个组件通用)属性包括:minLines(默认 1)、maxLines(默认 6)、decoration(InputDecoration 样式)、margin、textStyle、builder(自定义输入框组件)。
操作按钮(两个组件通用)属性包括:child、onPressed、tooltip、foregroundColor、backgroundColor、focusColor、hoverColor、splashColor、elevation、focusElevation、hoverElevation、highlightElevation、mouseCursor、shape、margin、size。
消息设置(两个组件通用)属性包括:showAuthorName、showTimestamp、showAuthorAvatar、timestampFormat、backgroundColor、textStyle、headerTextStyle、shape、widthFactor(0-1)、avatarSize、margin、padding、avatarPadding、headerPadding、footerPadding。
使用方式
安装与包配置、基础 SfChat 实现、基础 SfAIAssistView 实现、包依赖与导入等内容见 references/getting-started.md。组件概览分别见 references/chat-overview.md 与 references/aiassistview-overview.md。会话区域与消息见 references/conversation-area.md;输入框见 references/composer.md;操作按钮见 references/action-button.md;占位符见 references/placeholder.md;主题与定制见 references/theming.md;本地化与无障碍(RTL)见 references/right-to-left.md;常见模式见 references/common-patterns.md。
基础聊天示例使用 syncfusion_flutter_chat/chat.dart,通过 SfChat 传入 messages、outgoingUser、composer(ChatComposer 带 hintText)与 actionButton(ChatActionButton 的 onPressed 回调中向列表添加新 ChatMessage)。
AI 助手示例使用 syncfusion_flutter_chat/assist_view.dart,通过 SfAIAssistView 传入 messages、composer(AssistComposer)、actionButton(AssistActionButton 的 onPressed 中先添加 AssistMessage.request,再调用 AI 服务生成 AssistMessage.response)与 placeholderBuilder。示例中的 _getAIResponse 为模拟 API 调用,实际可连接 OpenAI、Google AI、Azure AI 等服务。
消息建议示例在 ChatMessage 的 suggestions 中传入多个 ChatMessageSuggestion。工具栏项示例在 AssistMessage.response 的 toolbarItems 中传入 AssistMessageToolbarItem(含 content 图标与 tooltip),并通过 onToolbarItemSelected 处理点击。
适用场景
SfChat 适用于客户支持聊天、团队消息、社交消息、多用户实时聊天等。SfAIAssistView 适用于 AI 聊天机器人、AI 助手、帮助机器人、问答界面等。
限制
工具栏项与响应加载指示器仅 SfAIAssistView 支持,SfChat 不支持。消息建议在 SfChat 中可出现在任意消息上,在 SfAIAssistView 中仅出现在响应消息上。用户标识方式不同:SfChat 使用 outgoingUser 属性,SfAIAssistView 在每条消息中通过 author 标识。资料未提供具体收费、价格、平台支持范围与性能效果等信息。