0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙实战开发ArkTS运用:【ai聊天框】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-08 15:38 次阅读

简介

用一个ArkTS编写的HarmonyOS原生聊天UI框架,提供了开箱即用的聊天对话组件。

demo

接口和属性列表

接口列表

接口参数功能
setTyping(isTyping)isTyping:布尔值显示/隐藏消息加载动画
postMessage(msg,clearInput)msg:[ChatMessage]类型 clearInput: boolean类型。在对话界面中显示消息 指示展示消息时是否清空输入框内容,默认清除。
submitUserInput(userIputText)userIputText:string类型。触发Chat组件用户发送消息事件

属性列表

属性描述
messages聊天消息列表,[IChatDataSource]类型。支持懒加载显示的数据源
botAvatarchatbot头像(可选)。Resource类型
userAvatar我的头像(可选)。Resource类型
title标题栏标题。string类型
needTitleBar是否显示标题栏。boolean类型
welcomeMessagechatbot默认欢迎语。string类型
botMessageBackgroundColorchatbot消息的背景颜色。string类型
botMessageTextColorchatbot消息的文本颜色。string类型
userMessageBackgroundColor用户消息的背景颜色。string类型
userMessageTextColor用户消息的文本颜色。string类型
messageFontSize消息文本的字体大小。number类型
needBackButton是否显示顶部返回按钮。点击返回导航上一页。boolean类型
needInputControl是否需要底部输入区域。 boolean类型
InputControl底部输入区域,@BuilderParams类型。该区域可自定义为你自己的布局
controller自定义输入控制器,自定义输入区时必填。[ChatController]类型
backIcon返回按钮图标。Resource类型
clearChatIcon清楚聊天按钮图标。Resource类型
submitButtonText提交消息按钮文本。string类型
inputTextPlaceHolder输入框提示文本。string类型
inputTextPlaceHolderColor输入框提示文本的颜色。string类型
inputTextColor输入文本的颜色。string类型
needSubmitButton是否显示提交消息按钮。boolean类型

使用示例

这里演示简单的调用ChatUI组件

import { Chat, ChatRole, ChatMessage } from '@changwei/chatui'

@Entry
@Component
struct Index {
  build() {
    Row() {
      Column() {
        Chat({
          title:'demo chatbot',
          welcomeMessage: '我是你的测试bot',
          onSendMessage: (ctl, message) = > {
            //发送用户消息
            ctl.postMessage(message)
            //显示回复等待动画
            ctl.setTyping(true)
            //3秒后发送chatbot响应消息
            setTimeout(() = > {
              ctl.postMessage(new ChatMessage(ChatRole.Assistant, '这是一条测试回复'))
            }, 3000)
          }
        })
      }
    }
    .height('100%')
  }
}

深度定制聊天UI。替换输入区域为你自己的输入组件,替换头像,文本颜色等。

import { Chat, ChatRole, ChatMessage } from '@changwei/chatui'
import { ChatController } from '@changwei/chatui'
import router from '@ohos.router';

@Entry
@Component
struct CustomInput {
  @State userInput: string = ''
  @State needBackButton: boolean = false
  chatController = new ChatController()

  build() {
    Row() {
      Column() {
        Chat({
          title: 'demo chatbot',
          needTitleBar: true,
          welcomeMessage: '我是你的测试bot',
          botMessageBackgroundColor: Color.Brown,
          botMessageTextColor: Color.White,
          userMessageBackgroundColor: Color.Green,
          userMessageTextColor: Color.White,
          botAvatar:$r('app.media.chat'),
          messageFontSize: 20,
          userInput: this.userInput,
          controller: this.chatController,
          needBackButton:this.needBackButton,
          onSendMessage: (ctl, message) = > {
            //发送用户消息
            ctl.postMessage(message)
            this.userInput = ''
            //显示回复等待动画
            ctl.setTyping(true)
            //3秒后发送chatbot响应消息
            setTimeout(() = > {
              ctl.postMessage(new ChatMessage(ChatRole.Assistant, '这是一条测试回复'),false)
            }, 3000)
          }
        })
        {
          Row() {
            Button() {
              Image($r('app.media.app_icon'))
            }
            .backgroundColor('#')
            .height('40')
            .width('40')
            .margin(5)

            TextInput({
              text: this.userInput
            })
              .enterKeyType(EnterKeyType.Send)
              .fontColor(Color.White)
              .backgroundColor(Color.Blue)
              .width('80%')
              .onChange((val) = > {
                this.userInput = val
              })
              .onSubmit((ss) = > {
                this.chatController.submitUserInput(this.userInput)
              })

          }
        }

      }
    }
    .height('100%')
  }

  aboutToAppear() {
    const params = router.getParams(); // 获取传递过来的参数对象
    if(params) {
      this.needBackButton = params['needBackButton']
    }
  }
}

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙
    +关注

    关注

    57

    文章

    2306

    浏览量

    42730
  • HarmonyOS
    +关注

    关注

    79

    文章

    1967

    浏览量

    29997
收藏 人收藏

    评论

    相关推荐

    鸿蒙OS开发实战:【ArkTS 实现MQTT协议(2)】

    1. 协议传输通道仅为TCPSocket 2. 基于HarmonyOS SDK API 9开发 3. 开发语言:ArkTS,TypeScript
    的头像 发表于 04-01 14:48 1450次阅读
    <b class='flag-5'>鸿蒙</b>OS<b class='flag-5'>开发</b><b class='flag-5'>实战</b>:【<b class='flag-5'>ArkTS</b> 实现MQTT协议(2)】

    鸿蒙基础开发实战-(ArkTS)像素转换

    的使用。通过像素转换案例,向开发者讲解了如何使用像素单位设置组件的尺寸、字体的大小以及不同像素单位之间的转换方法。更多鸿蒙4.0的学习,可以前往主页学习或前往《鸿蒙4.0开发学习目录》
    发表于 01-11 16:53

    鸿蒙入门实战-ArkTS开发

    声明式UI基本概念 应用界面是由一个个页面组成,ArkTS是由ArkUI框架提供,用于以声明式开发范式开发界面的语言。 声明式UI构建页面的过程,其实是组合组件的过程,声明式UI的思想,主要体现在
    发表于 01-16 17:27

    1月18号“纯鸿蒙”千帆启航,程序员预备!

    4.0&next文档)其中内容包含: 《鸿蒙开发基础》 1.ArkTS语言 2.安装DevEco Studio 3.运用你的第一个ArkTS
    发表于 01-16 22:13

    鸿蒙语言ArkTS(更好的生产力与性能)

    ArkTS鸿蒙生态的应用开发语言 ArkTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式
    发表于 02-17 15:56

    鸿蒙这么大声势,为何迟迟看不见岗位?最新数据来了

    基础》 ArkTS语言 安装DevEco Studio 运用你的第一个ArkTS应用 ArkUI声明式UI开发 .…… 《鸿蒙
    发表于 02-29 20:53

    鸿蒙实战项目开发:【短信服务】

    环境搭建 ​ 《鸿蒙开发基础》 ArkTS语言 安装DevEco Studio 运用你的第一个ArkTS应用 ArkUI声明式UI
    发表于 03-03 21:29

    鸿蒙Flutter实战:05-使用第三方插件

    # 鸿蒙Flutter 实战:使用第三方插件 在鸿蒙Flutter开发中,如果涉及到使用原生功能,就要使用插件。使用插件有两种方式,一种是自己编写原生
    发表于 10-22 21:54

    鸿蒙Flutter实战:06-使用ArkTs开发Flutter鸿蒙插件

    # 使用 ArkTs 开发 Flutter 鸿蒙平台插件 本文讲述如何开发一个 Flutter 鸿蒙插件,如何实现 Flutter 与
    发表于 10-22 21:56

    鸿蒙Flutter实战:07混合开发

    # 鸿蒙Flutter实战:混合开发 鸿蒙Flutter混合开发主要有两种形式。 ## 1.基于har 将flutter module
    发表于 10-23 16:00

    鸿蒙Flutter实战:08-如何调试代码

    # 鸿蒙Flutter实战:如何调试代码 ## 1.环境搭建 参考文章[鸿蒙Flutter实战:01-搭建开发环境](https://g
    发表于 10-23 16:29

    疯壳AI语音及开发实战教程 Ⅲ 开发实战

    疯壳AI语音及开发实战教程 Ⅲ 开发实战
    发表于 11-05 16:54

    鸿蒙开发AI应用(汇总)连载中

    `1. 用鸿蒙开发AI应用(一)硬件篇本篇介绍了开发板Hi3516DV300的硬件资料,包括开箱组装、各主板介绍、芯片手册等等...2. 用鸿蒙
    发表于 01-13 15:03

    如何实现HarmonyOS Java端的气泡聊天

      HarmonyOSJava端的气泡聊天怎么实现?android上有9图可实现?鸿蒙上有什么类似的方案没?
    发表于 06-13 09:59

    鸿蒙开发ArkTS基础知识

    一、ArkTS简介 ArkTS是HarmonyOS优选的主力应用开发语言。它在TypeScript(简称TS)的基础上,匹配了鸿蒙的ArkUI框架,扩展了声明式UI、状态管理等相应的能
    的头像 发表于 01-24 16:44 2110次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>之<b class='flag-5'>ArkTS</b>基础知识