如何获取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:
- 先声明控制器:
final MessageBarController _messageBarController = MessageBarController();
- 将控制器绑定到MessageBar:
MessageBar( controller: _messageBarController, onSend: (message) { print('发送的消息:$message'); }, // 其他属性保持不变 ),
- 实时获取输入内容(示例:在按钮点击时获取):
InkWell( child: Icon(Icons.preview), onTap: () { String currentInput = _messageBarController.text; print('当前输入内容:$currentInput'); }, )
发送完成后,若需要清空输入框,可调用_messageBarController.clear()方法。
内容的提问来源于stack exchange,提问作者Cliff Odebala Clarke
相关产品推荐
相关产品推荐

