I have code in Model for execution. I provide Model with Provider. But if Model is dispose before finish execution I get error:
E/flutter (26180): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: A Model was used after being disposed. E/flutter (26180): Once you have called dispose() on a Model, it can no longer be used.
For example Model is dispose if user press back button so Navigator.pop(). This because Model is only scope to this Widget.
But that mean I cannot catch error in Model?
My code:
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();
}
);
…
How I can catch error in Model after dispose?