我在ListView内有一个TextFormField,我发现一个问题,即当TextFormField不在屏幕上时,保存的回调永远不会调用。我计划使用TextEditingController手动保存值,但这是一个好方法吗?
下面是一些代码段:
class _MyHomePageState extends State<MyHomePage> {
final _formKey = GlobalKey<FormState>();
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Title"),
actions: <Widget>[
IconButton(
icon: Icon(Icons.save),
onPressed: () {
_formKey.currentState.save();
},
)
],
),
body: Form(
key: _formKey,
child: ListView(
children: List<int>.generate(30, (index) => index).map((v) {
return TextFormField(
decoration: InputDecoration(labelText: "Input $v"),
onSaved: (v1) => print("On save $v called"),
);
}).toList(),
),
),
);
}
}
并非在所有字段上都打印了“在保存时调用$ v”。
答案 0 :(得分:0)
我找到了解决方案,所以我没有使用ListView,而是使用SingleChildScrollView。