Как отловить ошибку в ChangeNotifier после деактивации виджета? - PullRequest
0 голосов
/ 27 октября 2019

У меня есть код в Model для выполнения. Я предоставляю Model с Provider. Но если Model удаляется до завершения выполнения, я получаю ошибку:

E / flutter (26180): [ОШИБКА: flutter / lib / ui / ui_dart_state.cc (148)] Необработанное Исключение: AМодель использовалась после утилизации. E / flutter (26180): после того, как вы вызвали dispose () для модели, он больше не может использоваться.

Например, Model удаляется, если пользователь нажимает кнопку возврата, так что Navigator.pop(),Это потому, что Model является только областью действия для этого виджета.

Но это означает, что я не могу поймать ошибку в Model?

Мой код:

class Model extends ChangeNotifier {

  bool error = false;

  func() {

    try {

    await execute();
    error = false

    } catch {
    error = true;
    print(e.toString());
    }

  }

}



class ExampleWidget extends StatelessWidget {
  @override
  Widget build(BuildContext context) {

return ChangeNotifierProvider(
      builder: (context) => Model(),
child: Consumer<Model>(builder: (context, model, _) {
return FloatingActionButton(
  child: model.error ? Icon(Icons.error) : Icon(Icons.check),
  onPressed: () {
    model.func();
  }
);

    …

Как яможет поймать ошибку в модели после утилизации?

...