【问题标题】:Flutter TextFormField how to add manual onChange propertyFlutter TextFormField如何手动添加onChange属性
【发布时间】:2019-06-25 20:36:47
【问题描述】:

我将 TextEditingController 添加到我的 TextFormField 以读取用户输入,但我想在 TextFormField 中的每次更新时读取输入,并且控制器会显示以前的更新。简而言之,我想要一个替代方法,比如 TextField 中的 onChanged 方法,因为我将它用于表单,所以我需要使用 TextFormField。给我一些建议。

【问题讨论】:

  • 添加一些细节...一些代码,例如...

标签: mobile dart flutter


【解决方案1】:

只需向 TextEditingController 添加一个监听器。

如下所示。

  @override
  void initState() {
    super.initState();

    _editingController.addListener(() {
      print(_editingController.text);
    });
  }

  @override
  void dispose() {
  // Clean up the controller when the Widget is disposed
  _editingController.dispose(); 
  super.dispose();
}

希望对你有帮助!

【讨论】:

  • 你也应该调用 _editingController.dispose();在 dispose 方法中。
【解决方案2】:

使用带有 ValueNotifier 的 TextFormField 的 onChange(text) 函数,这应该可以帮助您。

TextFormField(
   controller: _Controller,
   label: "Input",
   currentNode: _Node,
   nextNode: FocusNode(),
   keyboard: TextInputType.visiblePassword,
   onChanged: (text) {
     _avalueNotifier.value = text;
   },
   inputFormatters: <TextInputFormatter>[                          
           BlacklistingTextInputFormatter.singleLineFormatter,
    ],
   validator: (String value) {
     if (value.isEmpty) {
        return 'Please make inputs';
     }
     return null;
     },
),

【讨论】:

  • 感谢 onchanged 为我工作。我动态创建了一个 textformfields 列表,因此 textcontroller 不是获取 textformfield 数据的选项。
猜你喜欢
  • 1970-01-01
  • 2020-05-04
  • 2019-06-09
  • 2020-08-22
  • 1970-01-01
  • 2019-08-30
  • 2013-03-04
  • 1970-01-01
  • 2020-06-18
相关资源
最近更新 更多