Flutter简单聊天页面

导入了get依赖,需要使用的请自行导入依赖

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

class ChatController extends GetxController {
  // 集合信息
  RxList<ChatModel> chatList = <ChatModel>[].obs;

  add(message, direction) {
    chatList.add(ChatModel(message, direction));
    update();
    print(chatList.toJson()); //  打印结果查看是否添加成功
  }

  void _initList() {
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
    chatList.add(ChatModel('你好', 0));
    chatList.add(ChatModel('你好', 1));
  }
}

class ChatModel {
  ChatModel(this.message, this.direction);
  var message; // 发送信息
  var direction; // 0l : 1r
}

// ignore: must_be_immutable
class ChatView extends GetWidget<ChatController> {
  var content;
  final fieldText = TextEditingController();

  ChatView({super.key});

  ChatController chatController = Get.put(ChatController());

  @override
  Widget build(BuildContext context) {
    chatController._initList();

    return Scaffold(
        appBar: AppBar(
          title: const Text('chatBot'),
        ),
        body: Obx(
          () => Column(children: <Widget>[
            Expanded(
                child: ListView.builder(
              itemCount: chatController.chatList.length,
              itemBuilder: (BuildContext context, int index) {
                return SizedBox(
                    child: Padding(
                  padding: const EdgeInsets.all(20),
                  child: Column(
                    crossAxisAlignment:
                        chatController.chatList[index].direction == 0
                            ? CrossAxisAlignment.start
                            : CrossAxisAlignment.end,
                    children: [Text(chatController.chatList[index].message)],
                  ),
                ));
              },
            )),
            Row(
              children: <Widget>[
                Expanded(
                  flex: 2,
                  child: TextField(
                    controller: fieldText,
                    onChanged: (message) {
                      // 绑定文本框改变事件
                      content = message;
                    },
                  ),
                ),
                Expanded(
                    flex: 1,
                    child: ElevatedButton(
                        onPressed: () {
                          chatController.add(content, 1);
                          fieldText.clear();
                        },
                        child: const Text('发送')))
              ],
            )
          ]),
        ));
  }
}

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值