如何处理TextField中的空值。 [扑]

时间:2019-10-03 06:24:02

标签: flutter

在此应用中,有两个屏幕,第一个屏幕在Strings中显示所有用户输入List,第二个屏幕中有一个TextField,它将接受用户输入使用onEditingComplete返回第一个屏幕。用户将能够通过在第一屏幕中使用FAB导航到第二屏幕。当用户未在TextField中键入任何内容并返回到上一页时,存储用户输入值的String将返回“ null”。我添加了一个if语句,如果TextField不为空,则仅返回到第一页,但是当我单击Submit时,它根本不会导航到第一个屏幕。

我是否可以提出有关如何修改代码的建议,以使TextField中的空值不会保存到String并导航回到第一个屏幕。

导航至输入(第二)屏幕的FAB:

FloatingActionButton(
            onPressed: ()async {
//                setstring(String result){
//                  widget.updatestring = result;
//                  return widget.updatestring;
//                }
                String result1 =   await Navigator.push( // string which stores the user entered value
                  context,
                  MaterialPageRoute(
                    builder: (context) => InputScreen(), //screen which has TextField
                  ));
              setState(() {
//                widget.updatestring = result1;
                TodoList(result1);
//              setstring(result1);
                addItem(result1, false); // function which adds the entered task in a list
              });
            },
            heroTag: "btn2",
            child: Icon(Icons.add, color: Color(whitecolor),), backgroundColor: Color(redcolor),),

需要用户输入的文本字段:

                     TextField(
                        autofocus: true,
                          onEditingComplete: (){
                            String textToSendBack = taskcontroller.text;
                            if(taskcontroller.text.isNotEmpty) {
                              Navigator.pop(context, textToSendBack);
                            }
                            },
//                        onSubmitted: (value) {
//                          String textToSendBack = taskcontroller.text;
//                          Navigator.pop(context, value);
//                          },
                        maxLength: 100,
                        controller: taskcontroller,
                        decoration: InputDecoration(
                          labelText: "enter tasks here"
                        ),
                        style: TextStyle(height: 1.2, fontSize: 20, color: Colors.black87),
                      )

2 个答案:

答案 0 :(得分:0)

您可以执行以下操作:

String textToSendBack = taskcontroller.text;
       if(textToSendBack != null){
              Navigator.pop(context, textToSendBack);
          }

仅当文本不为空时,您才能返回到另一个屏幕。否则,您将停留在当前屏幕上等待有效的输入。

希望我能正确理解你的问题。

答案 1 :(得分:0)

对我来说它工作正常 isEmptyisNotEmpty

_titleController.text.isEmpty
_titleController.text.isNotEmpty