ได้รับแรงบันดาลใจจาก React-Native-Gifted-Chat ปรับแต่งได้สูงและช่วยพัฒนาแชท UI ได้เร็วขึ้น
หากต้องการใช้แพ็คเกจนี้ให้เพิ่ม dash_chat เป็นการพึ่งพาในไฟล์ pubspec.yaml ของคุณ
ตัวอย่างข้อความแชท
ChatMessage (
text : "Hello" ,
user : ChatUser (
name : "Fayeed" ,
uid : "123456789" ,
avatar : "https://www.wrappixel.com/ampleadmin/assets/images/users/4.jpg" ,
),
createdAt : DateTime . now (),
image : "http://www.sclance.com/images/picture/Picture_753248.jpg" ,
);ตัวอย่างข้อความแชทพร้อมการตอบกลับอย่างรวดเร็ว
ChatMessage (
text : "This is a quick reply example." ,
user : ChatUser (),
createdAt : DateTime . now (),
quickReplies : QuickReplies (
values : < Reply > [
Reply (
title : "? Yes" ,
value : "Yes" ,
),
Reply (
title : "? Nope. What?" ,
value : "no" ,
),
],
),
),messageContainerFlex (int) - ค่า Flex สำหรับค่าเริ่มต้นของ Message Container เป็น 1height (สองเท่า) - ความสูงสำหรับวิดเจ็ตแชทหน้าประwidth (สองเท่า) - ความกว้างสำหรับวิดเจ็ตแชทหน้าประmessages (รายการ) - รายการข้อความที่จะแสดงในการแชทtext (สตริง) - [พารามิเตอร์ตัวเลือก] หากมีให้จะหยุดใช้คอนโทรลเลอร์เริ่มต้นonTextChange (ฟังก์ชั่น (สตริง)) - หากพารามิเตอร์ข้อความถูกส่งผ่านแล้วจะต้องส่งผ่าน ontextchange ด้วยinputDecoration (InputDecoration) - ใช้เพื่อให้การตกแต่งอินพุตกับข้อความmessageIdGenerator (ฟังก์ชั่นสตริง) - โดยปกติจะเพิ่มข้อความใหม่โดยผู้ใช้จะได้รับ uuid v4 string generater โดย UUIDuser (Chatuser) - วัตถุผู้ใช้ปัจจุบัน DashChat (
user : ChatUser (
name : "Jhon Doe" ,
uid : "xxxxxxxxx" ,
avatar : "https://www.wrappixel.com/ampleadmin/assets/images/users/4.jpg" ,
)
); onSend (ฟังก์ชั่น (chatMessage)) - การโทรกลับเมื่อส่งข้อความ
alwaysShowSend (BOOL) - ปุ่มส่งจะใช้งานค่าเริ่มต้นเป็นเท็จเสมอ
avatarMaxSize (สองเท่า) - ตั้งค่าขนาดสูงสุดของ Avatar เริ่มต้นค่าเริ่มต้นคือ 30.0
dateFormat (DateFormat)-รูปแบบที่จะใช้สำหรับการเริ่มต้นวันที่เริ่มต้นคือ yyyy-MM-dd
timeFormat (DateFormat) - รูปแบบที่จะใช้สำหรับการเริ่มต้นเวลาเริ่มต้นคือ HH:mm:ss
showUserAvatar (บูล) - ควรแสดงอวตารของผู้ใช้
showAvatarForEveryMessage (BOOL) - ควรแสดงอวตารสำหรับทุกข้อความเริ่มต้นเป็นเท็จ
onPressAvatar (ฟังก์ชั่น (chatuser)) - การเรียกร้องการโทรกลับเมื่อ Avatar ถูกแตะ
onLongPressAvatar (ฟังก์ชั่น (chatuser)) - การเรียกร้องการโทรกลับเมื่อ Avatar ถูกกดเป็นเวลานาน
onLongPressMessage (ฟังก์ชั่น (chatuser)) - การเรียกร้องการโทรกลับเมื่อข้อความถูกกดนาน
inverted (บูล) - ควรแสดงข้อความตามลำดับย้อนกลับ
avatarBuilder (ฟังก์ชั่นวิดเจ็ต (Chatuser)) - จะแทนที่ Avatar เริ่มต้น
messageBuilder (ฟังก์ชั่นวิดเจ็ต (chatMessage)) - จะแทนที่วิดเจ็ตข้อความเริ่มต้น
messageTextBuilder (ฟังก์ชั่นวิดเจ็ต (สตริง)) - จะแทนที่วิดเจ็ตข้อความเริ่มต้นเริ่มต้น
messageImageBuilder (ฟังก์ชั่นวิดเจ็ต (สตริง)) - จะแทนที่วิดเจ็ตข้อความเริ่มต้นของข้อความเริ่มต้น
messageTimeBuilder (ฟังก์ชั่นวิดเจ็ต (สตริง)) - จะแทนที่วิดเจ็ตเวลาข้อความเริ่มต้น
dateBuilder (ฟังก์ชั่นวิดเจ็ต (สตริง)) - จะแทนที่วิดเจ็ตวันที่มุมมองการแชทเริ่มต้น
sendButtonBuilder (ฟังก์ชั่นวิดเจ็ต (ฟังก์ชั่น)) - จะแทนที่วิดเจ็ตปุ่มส่งเริ่มต้น
chatFooterBuilder (ฟังก์ชั่นวิดเจ็ต) - วิดเจ็ตที่จะแสดงด้านล่าง MessageListView เช่นเดียวกับที่คุณสามารถ "ผูก ... " วิดเจ็ตข้อความในตอนท้าย
inputFooterBuilder (ฟังก์ชั่นวิดเจ็ต) - วิดเจ็ตที่จะแสดงด้านล่าง ChatinputToolbar
maxInputLength (INT) - ความยาวอินพุตหลักของกล่องข้อความอินพุต defaulst ไม่ จำกัด
parsePatterns (รายการ) - ใช้ในการแยกวิเคราะห์ข้อความเพื่อสร้างข้อความที่เชื่อมโยงใช้ flutter_parsed_text
DashChat (
parsePatterns : < MatchText > [
MatchText (
type : "email" ,
onTap : ( String value) {}
),
MatchText (
pattern : r"B#+([w]+)b" ,
style : TextStyle (
color : Colors .pink,
fontSize : 24 ,
),
onTap : ( String value) {}
),
]
); messageContainerDecoration (BoxDecoration) - ให้สไตล์ที่กำหนดเองสำหรับคอนเทนเนอร์ข้อความ
leading (รายการ <vidget>) - รายการวิดเจ็ตที่จะแสดงก่อนฟิลด์ข้อความ
trailing (รายการ <vidget>) - รายการวิดเจ็ตที่จะแสดงหลังจากฟิลด์ข้อความจะลบปุ่มส่ง
readOnly (บูล) - ซ่อนแถบอินพุตค่าเริ่มต้นเป็น false
showTraillingBeforeSend - ควรแสดงวิดเจ็ต trailling ก่อนที่ปุ่มส่งจะเริ่มต้นเป็น true
inputTextStyle (TextStyle) - สไตล์สำหรับ textfield
inputContainerStyle (BoxDecoration) - สไตล์คอนเทนเนอร์ฟิลด์ข้อความ
inputMaxLines (int) - ความยาวสูงสุดของสายอินพุตเริ่มต้นเป็น 1
showInputCursor (บูล) - ควรแสดงเคอร์เซอร์อินพุตจะแสดงค่าเริ่มต้นเป็นจริง
inputCursorWidth (สองเท่า) - ความกว้างของค่าเริ่มต้นอินพุตข้อความเป็น 2.0
inputCursorColor (สี) - สีของค่าเริ่มต้นเคอร์เซอร์อินพุตเป็นธีม
scrollController (ScrollController) - ScrollController สำหรับ MessageListView
messageContainerPadding (edgeinsetsgeometry) - การขยายสำหรับ MessageListView
messagePadding (EdgeInsets) - ช่องว่างสำหรับ MessageContainer
onQuickReply (funtion (ตอบกลับ)) - วิธีการโทรกลับเมื่อมีการแตะอย่างรวดเร็ว
quickReplyStyle (BoxDecoration) - สไตล์คอนเทนเนอร์สำหรับคอนเทนเนอร์ที่รวดเร็ว
quickReplyTextStyle (TextStyle) - สไตล์ข้อความที่รวดเร็ว
quickReplyBuilder (ฟังก์ชั่นวิดเจ็ต (ตอบกลับ)) - จะแทนที่วิดเจ็ตเร็วเริ่มต้น
scrollToBottom (บูล) - ควรเลื่อนไปที่วิดเจ็ตด้านล่างจะแสดงค่าเริ่มต้นเป็น true
scrollToBottomStyle (Scrolltobottomstyle) - ตั้งค่าสไตล์และตำแหน่งสำหรับวิดเจ็ต Scrolltobottom
scrollToBottomWidget (ฟังก์ชั่นวิดเจ็ต ()) - แทนที่ ScrollTobottomWidget เริ่มต้นด้วยวิดเจ็ตที่กำหนดเอง
onScrollToBottomPress (ฟังก์ชั่น) - แทนที่พฤติกรรมเริ่มต้นของวิดเจ็ต onscrolltobottom
shouldShowLoadEarlier (บูล) - ควรแสดงวิดเจ็ตลอยตัวของ loadearlier หรือใช้โหลดตามรูปแบบการเลื่อน WHCIH จะเรียกค่าเริ่มต้น onLoadeArlier เป็นเท็จซึ่งเป็นรูปแบบนี้
showLoadEarlierWidget (ฟังก์ชั่นวิดเจ็ต ()) - แทนที่พฤติกรรมเริ่มต้นของวิดเจ็ต onscrolltobottom
onLoadEarlier (ฟังก์ชั่น) - แทนที่พฤติกรรมเริ่มต้นของวิดเจ็ต OnLoadeArLeir หรือใช้เป็นการโทรกลับเมื่อ ListView มาถึงด้านบน
inputToolbarPadding (EdgeInsets) - สามารถใช้เพื่อเพิ่มการขยายช่องให้กับแถบเครื่องมืออินพุต
inputToolbarMargin (EdgeInsets) - สามารถใช้เพื่อเพิ่มอัตรากำไรขั้นต้นไปยังแถบเครื่องมืออินพุต
shouldStartMessagesFromTop ใช้ StartMessagesFromTop (BOOL) - สามารถใช้เพื่อจัดเรียงข้อความเพื่อให้เริ่มต้นจากบนลงล่างแทนที่จะเป็นล่างเริ่มต้นขึ้นไปด้านบน
textBeforeImage (บูล) - สามารถใช้เพื่อตั้งค่าลำดับของข้อความและรูปภาพภายในข้อความค่าเริ่มต้นเป็น true
quickReplyScroll (บูล) - ควรเลือกตัวเลือกการตอบกลับอย่างรวดเร็วในแนวนอน
quickReplyPadding (edgeinsetsgeometry) - การขยายช่องสำหรับเร็ว
inputDisabled (BOOL) - ควรปิดการใช้งานฟิลด์อินพุตค่าเริ่มต้นเป็น false
messageDecorationBuilder (ฟังก์ชั่น BoxDecoration (ChatMessage, Isuser) - แทนที่การตกแต่งคอนเทนเนอร์ข้อความ [หมายเหตุ: สิ่งนี้จะแทนที่ MessageContainerDecoration]
DashChat (
...
messageDecorationBuilder : ( ChatMessage msg, bool isUser){
return BoxDecoration (
...
color : isUser ? Colors .red : Colors .blue, // example
...
);
},
...
);หากคุณพบว่าโครงการนี้มีประโยชน์โปรดพิจารณาให้บน GitHub และแบ่งปันกับเพื่อนของคุณผ่านโซเชียลมีเดีย
ดู dash_chat.dart สำหรับรายละเอียด API เพิ่มเติม
หากคุณมีข้อเสนอแนะใด ๆ สำหรับการรวมคุณสมบัติหรือสิ่งที่ไม่ได้ผลอย่าลังเลที่จะเปิดปัญหา GitHub เพื่อให้เรามีการสนทนาเกี่ยวกับเรื่องนี้