在此应用中,有两个屏幕,第一个屏幕在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),
)
答案 0 :(得分:0)
您可以执行以下操作:
String textToSendBack = taskcontroller.text;
if(textToSendBack != null){
Navigator.pop(context, textToSendBack);
}
仅当文本不为空时,您才能返回到另一个屏幕。否则,您将停留在当前屏幕上等待有效的输入。
希望我能正确理解你的问题。
答案 1 :(得分:0)
对我来说它工作正常 isEmpty 或 isNotEmpty
_titleController.text.isEmpty
_titleController.text.isNotEmpty