簡(jiǎn)介
用一個(gè)ArkTS編寫的HarmonyOS原生聊天UI框架,提供了開箱即用的聊天對(duì)話組件。
接口和屬性列表
接口列表
接口 | 參數(shù) | 功能 |
---|---|---|
setTyping(isTyping) | isTyping:布爾值 | 顯示/隱藏消息加載動(dòng)畫 |
postMessage(msg,clearInput) | msg:[ChatMessage]類型 clearInput: boolean類型。 | 在對(duì)話界面中顯示消息 指示展示消息時(shí)是否清空輸入框內(nèi)容,默認(rèn)清除。 |
submitUserInput(userIputText) | userIputText:string類型。 | 觸發(fā)Chat組件用戶發(fā)送消息事件 |
屬性列表
屬性 | 描述 |
---|---|
messages | 聊天消息列表,[IChatDataSource]類型。支持懶加載顯示的數(shù)據(jù)源 |
botAvatar | chatbot頭像(可選)。Resource類型 |
userAvatar | 我的頭像(可選)。Resource類型 |
title | 標(biāo)題欄標(biāo)題。string類型 |
needTitleBar | 是否顯示標(biāo)題欄。boolean類型 |
welcomeMessage | chatbot默認(rèn)歡迎語。string類型 |
botMessageBackgroundColor | chatbot消息的背景顏色。string類型 |
botMessageTextColor | chatbot消息的文本顏色。string類型 |
userMessageBackgroundColor | 用戶消息的背景顏色。string類型 |
userMessageTextColor | 用戶消息的文本顏色。string類型 |
messageFontSize | 消息文本的字體大小。number類型 |
needBackButton | 是否顯示頂部返回按鈕。點(diǎn)擊返回導(dǎo)航上一頁(yè)。boolean類型 |
needInputControl | 是否需要底部輸入?yún)^(qū)域。 boolean類型 |
InputControl | 底部輸入?yún)^(qū)域,@BuilderParams類型。該區(qū)域可自定義為你自己的布局 |
controller | 自定義輸入控制器,自定義輸入?yún)^(qū)時(shí)必填。[ChatController]類型 |
backIcon | 返回按鈕圖標(biāo)。Resource類型 |
clearChatIcon | 清楚聊天按鈕圖標(biāo)。Resource類型 |
submitButtonText | 提交消息按鈕文本。string類型 |
inputTextPlaceHolder | 輸入框提示文本。string類型 |
inputTextPlaceHolderColor | 輸入框提示文本的顏色。string類型 |
inputTextColor | 輸入文本的顏色。string類型 |
needSubmitButton | 是否顯示提交消息按鈕。boolean類型 |
使用示例
這里演示簡(jiǎn)單的調(diào)用ChatUI組件
import { Chat, ChatRole, ChatMessage } from '@changwei/chatui'
@Entry
@Component
struct Index {
build() {
Row() {
Column() {
Chat({
title:'demo chatbot',
welcomeMessage: '我是你的測(cè)試bot',
onSendMessage: (ctl, message) = > {
//發(fā)送用戶消息
ctl.postMessage(message)
//顯示回復(fù)等待動(dòng)畫
ctl.setTyping(true)
//3秒后發(fā)送chatbot響應(yīng)消息
setTimeout(() = > {
ctl.postMessage(new ChatMessage(ChatRole.Assistant, '這是一條測(cè)試回復(fù)'))
}, 3000)
}
})
}
}
.height('100%')
}
}
深度定制聊天UI。替換輸入?yún)^(qū)域?yàn)槟阕约旱妮斎虢M件,替換頭像,文本顏色等。
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: '我是你的測(cè)試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) = > {
//發(fā)送用戶消息
ctl.postMessage(message)
this.userInput = ''
//顯示回復(fù)等待動(dòng)畫
ctl.setTyping(true)
//3秒后發(fā)送chatbot響應(yīng)消息
setTimeout(() = > {
ctl.postMessage(new ChatMessage(ChatRole.Assistant, '這是一條測(cè)試回復(fù)'),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(); // 獲取傳遞過來的參數(shù)對(duì)象
if(params) {
this.needBackButton = params['needBackButton']
}
}
}
審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。
舉報(bào)投訴
-
鴻蒙
+關(guān)注
關(guān)注
57文章
2302瀏覽量
42689 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1966瀏覽量
29962
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
鴻蒙OS開發(fā)實(shí)戰(zhàn):【ArkTS 實(shí)現(xiàn)MQTT協(xié)議(2)】
1. 協(xié)議傳輸通道僅為TCPSocket
2. 基于HarmonyOS SDK API 9開發(fā)
3. 開發(fā)語言:ArkTS,TypeScript
鴻蒙基礎(chǔ)開發(fā)實(shí)戰(zhàn)-(ArkTS)像素轉(zhuǎn)換
的使用。通過像素轉(zhuǎn)換案例,向開發(fā)者講解了如何使用像素單位設(shè)置組件的尺寸、字體的大小以及不同像素單位之間的轉(zhuǎn)換方法。更多鴻蒙4.0的學(xué)習(xí),可以前往主頁(yè)學(xué)習(xí)或前往《鴻蒙4.0開發(fā)學(xué)習(xí)目錄》
發(fā)表于 01-11 16:53
鴻蒙入門實(shí)戰(zhàn)-ArkTS開發(fā)
聲明式UI基本概念
應(yīng)用界面是由一個(gè)個(gè)頁(yè)面組成,ArkTS是由ArkUI框架提供,用于以聲明式開發(fā)范式開發(fā)界面的語言。
聲明式UI構(gòu)建頁(yè)面的過程,其實(shí)是組合組件的過程,聲明式UI的思想,主要體現(xiàn)在
發(fā)表于 01-16 17:27
1月18號(hào)“純鴻蒙”千帆啟航,程序員預(yù)備!
4.0&next文檔)其中內(nèi)容包含:
《鴻蒙開發(fā)基礎(chǔ)》
1.ArkTS語言
2.安裝DevEco Studio
3.運(yùn)用你的第一個(gè)ArkTS
發(fā)表于 01-16 22:13
鴻蒙語言ArkTS(更好的生產(chǎn)力與性能)
ArkTS是鴻蒙生態(tài)的應(yīng)用開發(fā)語言
ArkTS提供了聲明式UI范式、狀態(tài)管理支持等相應(yīng)的能力,讓開發(fā)者可以以更簡(jiǎn)潔、更自然的方式
發(fā)表于 02-17 15:56
鴻蒙這么大聲勢(shì),為何遲遲看不見崗位?最新數(shù)據(jù)來了
基礎(chǔ)》
ArkTS語言
安裝DevEco Studio
運(yùn)用你的第一個(gè)ArkTS應(yīng)用
ArkUI聲明式UI開發(fā)
.……
《鴻蒙
發(fā)表于 02-29 20:53
鴻蒙實(shí)戰(zhàn)項(xiàng)目開發(fā):【短信服務(wù)】
環(huán)境搭建
?
《鴻蒙開發(fā)基礎(chǔ)》
ArkTS語言
安裝DevEco Studio
運(yùn)用你的第一個(gè)ArkTS應(yīng)用
ArkUI聲明式UI
發(fā)表于 03-03 21:29
鴻蒙Flutter實(shí)戰(zhàn):05-使用第三方插件
# 鴻蒙Flutter 實(shí)戰(zhàn):使用第三方插件
在鴻蒙Flutter開發(fā)中,如果涉及到使用原生功能,就要使用插件。使用插件有兩種方式,一種是自己編寫原生
發(fā)表于 10-22 21:54
鴻蒙Flutter實(shí)戰(zhàn):06-使用ArkTs開發(fā)Flutter鴻蒙插件
# 使用 ArkTs 開發(fā) Flutter 鴻蒙平臺(tái)插件
本文講述如何開發(fā)一個(gè) Flutter 鴻蒙插件,如何實(shí)現(xiàn) Flutter 與
發(fā)表于 10-22 21:56
鴻蒙Flutter實(shí)戰(zhàn):07混合開發(fā)
# 鴻蒙Flutter實(shí)戰(zhàn):混合開發(fā)
鴻蒙Flutter混合開發(fā)主要有兩種形式。
## 1.基于har
將flutter module
發(fā)表于 10-23 16:00
鴻蒙Flutter實(shí)戰(zhàn):08-如何調(diào)試代碼
# 鴻蒙Flutter實(shí)戰(zhàn):如何調(diào)試代碼
## 1.環(huán)境搭建
參考文章[鴻蒙Flutter實(shí)戰(zhàn):01-搭建開發(fā)環(huán)境](https://g
發(fā)表于 10-23 16:29
瘋殼AI語音及開發(fā)實(shí)戰(zhàn)教程 Ⅲ 開發(fā)實(shí)戰(zhàn)
瘋殼AI語音及開發(fā)實(shí)戰(zhàn)教程 Ⅲ 開發(fā)實(shí)戰(zhàn)
發(fā)表于 11-05 16:54
用鴻蒙開發(fā)AI應(yīng)用(匯總)連載中
`1. 用鴻蒙開發(fā)AI應(yīng)用(一)硬件篇本篇介紹了開發(fā)板Hi3516DV300的硬件資料,包括開箱組裝、各主板介紹、芯片手冊(cè)等等...2. 用鴻蒙
發(fā)表于 01-13 15:03
如何實(shí)現(xiàn)HarmonyOS Java端的氣泡聊天框?
HarmonyOSJava端的氣泡聊天框怎么實(shí)現(xiàn)?android上有9圖可實(shí)現(xiàn)?鴻蒙上有什么類似的方案沒?
發(fā)表于 06-13 09:59
鴻蒙開發(fā)之ArkTS基礎(chǔ)知識(shí)
一、ArkTS簡(jiǎn)介 ArkTS是HarmonyOS優(yōu)選的主力應(yīng)用開發(fā)語言。它在TypeScript(簡(jiǎn)稱TS)的基礎(chǔ)上,匹配了鴻蒙的ArkUI框架,擴(kuò)展了聲明式UI、狀態(tài)管理等相應(yīng)的能
評(píng)論