У меня есть код Model
для исполнения. Я предоставляю Model
Provider
. Но если Model
удаляется до завершения выполнения, я получаю сообщение об ошибке:
E / flutter (26180): [ОШИБКА: flutter / lib / ui / ui_dart_state.cc (148)] Необработанное исключение: Модель использовалась после удаления. 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();
}
);
…
Как я могу отловить ошибку в модели после удаления?
mounted?
с помощью Stateful Widget, все равно будет выдаваться ошибка, что виджетdeactivated
. Я надеюсь, что с большим количеством кода каждый сможет понять, почему я не могу поймать ошибку и распечатать ее на консоли - person FlutterFirebase   schedule 27.10.2019