У меня есть TextFormField внутри ListView, и я обнаружил проблему, заключающуюся в том, что сохраненный обратный вызов никогда не вызывался, когда 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 вызываемый» напечатан не длявсе поле.