Flutter TextFormField onSaved在屏幕上不可见时未调用

时间:2018-11-24 10:40:33

标签: flutter

我在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”。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,所以我没有使用ListView,而是使用SingleChildScrollView。