Flutter TextFormField onSaved no вызывается, когда не отображается на экране - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть 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 вызываемый» напечатан не длявсе поле.

1 Ответ

0 голосов
/ 26 ноября 2018

Я нашел решение, поэтому вместо использования ListView я использую SingleChildScrollView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...