繁体   English   中英

textField 和 textEditControl,在单击按钮时获取用户输入 - Flutter

[英]textField and textEditControl ,Get user input on button click - Flutter

我正在构建一个聊天屏幕并尝试从 textEditController 获取消息,而不是从消息 model 中获取消息

代码如下:

 TextEditingController _controller =
  new TextEditingController();

String _text = '';

....

 IconButton(
        icon: Icon(Icons.send),
        iconSize: 25.0,
        color: Theme.of(context).primaryColor,
        onPressed: () async {
          DataModel? data = await submitData(_controller);
          _dataModel = data;
          setState(
            () {
              _text = _controller.text.toString();
            },
          );
        },
      ),

....

 child: TextField(
          controller: _controller, 
          textCapitalization: TextCapitalization.sentences,
          onChanged: (value) {},
          decoration: InputDecoration(hintText: 'Send a message...'),
        ),

您需要做的是在您的 TextEditingController 上调用addListener function 并对其执行操作。 这是一个例子:

class HomePage extends StatefulWidget {
  const HomePage({Key? key}) : super(key: key);

  @override
  State<HomePage> createState() => _HomePageState();
}

class _HomePageState extends State<HomePage> {
  late final TextEditingController _controller;

  @override
  void initState() {
    _controller = TextEditingController();
    _controller.addListener(() {
      final text = _controller.text;
      // do something with text here
    });
    super.initState();
  }

  @override
  void dispose() {
    _controller.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Home Page'),
      ),
      body: TextField(
        controller: _controller,
      ),
    );
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM