You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取Flutter Chat Bubble包中MessageBar的用户输入值?

解决MessageBar获取用户输入的两种方法

方法1:通过onSend回调直接获取发送时的输入

你当前的onSend回调里用下划线_忽略了参数,这个参数本身就是用户输入的消息内容,只需把下划线替换为变量名就能直接使用:

MessageBar(
  // 将_替换为变量名(比如message),即可获取输入内容
  onSend: (message) {
    print('发送的消息:$message');
    // 此处可添加消息发送逻辑
  },
  actions: [
    InkWell(
      child: Icon(
        Icons.add,
        color: Colors.black,
        size: 24,
      ),
      onTap: () {},
    ),
    Padding(
      padding: EdgeInsets.only(left: 8, right: 8),
      child: InkWell(
        child: Icon(
          Icons.camera_alt,
          color: Colors.green,
          size: 24,
        ),
        onTap: () {},
      ),
    ),
  ],
),

方法2:使用MessageBarController实时获取输入

如果需要在用户输入过程中实时获取内容(比如做输入长度限制、实时提示等),可以创建MessageBarController,用法类似TextField的TextEditingController:

  1. 先声明控制器:
final MessageBarController _messageBarController = MessageBarController();
  1. 将控制器绑定到MessageBar:
MessageBar(
  controller: _messageBarController,
  onSend: (message) {
    print('发送的消息:$message');
  },
  // 其他属性保持不变
),
  1. 实时获取输入内容(示例:在按钮点击时获取):
InkWell(
  child: Icon(Icons.preview),
  onTap: () {
    String currentInput = _messageBarController.text;
    print('当前输入内容:$currentInput');
  },
)

发送完成后,若需要清空输入框,可调用_messageBarController.clear()方法。

内容的提问来源于stack exchange,提问作者Cliff Odebala Clarke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:17:02