如何触发Flutter for Web TextField上的onSubmitted

时间:2019-10-10 10:07:36

标签: flutter flutter-web

我有一个用于Web的小型Flutter应用,正在显示TextField。

无论用户何时离开TextField(失去焦点)或按Enter键,我现在都需要像onSubmitted这样的回调。现在,我根本无法进行任何回调。

TextField(
  decoration: InputDecoration(
    labelText: 'Name',
  ),
  controller: TextEditingController(text: event.name),
  onEditingComplete: () { print("editing complete"); },
  onSubmitted: (String value) { print("submitted\n"); },
  maxLines: 1,
),

3 个答案:

答案 0 :(得分:0)

这似乎是一个问题: [web]: TextField onSubmitted is not triggered when pressing enter

这是链接中提到的解决方法:

    body: RawKeyboardListener(
      focusNode: focusNode,
      onKey: (event) {
        if (event is RawKeyUpEvent && event.data is RawKeyEventDataAndroid) {
          var data = event.data as RawKeyEventDataAndroid;
          if (data.keyCode == 13) {
            debugPrint('onSubmitted');
          }
        }
      },
      child: TextField(),
    ),

答案 1 :(得分:0)

同时删除 maxLines: 1 似乎可以让 onsubmitted 工作。[在移动设备上遇到同样的问题]

答案 2 :(得分:0)

您可以尝试创建一个方法,在您的 TextEditingController 上创建一个条件,并根据该条件在您的 TextField 上提交。

  • 首先
   final entredTitle = titleController.text;
   final entredAmount = double.parse(amountController.text);
   if (entredTitle.isEmpty || entredAmount <= 0 ){
     return ;
   }
   widget.addTx(entredTitle,entredAmount);
   Navigator.of(context).pop();
 } 
  • 第二个
 TextField(
                      decoration:  InputDecoration(labelText: 'Amount'),
                      controller: amountController,
                      onSubmitted: (_) => submitData(),
                    ),