Open1

【Flutter】ChangeNotifierProvider.valueを使って一回作ったmodelを使い回すためのメモ

Ryouhei FurugenRyouhei Furugen

Unhandled Exception: A {YourModel} was used after being disposed.
回避のため。
ChangeNotifierProviderで作ったmodelを別のpageで使う。

以下の3つ
main_page.dart
(StatelessWidget MainPage)
main_model.dart
(StatelessWidget MainModel extends ChangeNotifier)
add_page.dart
(StatelessWidget AddPage)
があるとして、
MainModelのmodelをAddPageでも使いたい。

  • add_pageで、以下追加
ChangeNotifierProvider<AlreadyCreatedModel>.value(
      value: AlreadyCreatedModel(), //createではなくvalue
      child: SomeWidget(),
    );
  • AddPage classのfieldに
    MainModelを追加
    constructorの引数にmodelを追加
class AddPage extends StatelessWidget {
  const AddPage(this.model, {Key? key}) : super(key: key);
  final MainModel model;

  
  Widget build(BuildContext context) {
    ...
  }
}

  • あとは上の変更に合わせて、適宜変更する。

参考

YouTubeのvideoIDが不正ですhttps://youtu.be/rR0Zl9-J0JA?t=1255

A Product was used after being disposed. flutter: Once you have called dispose() on a Product, it can no longer be used. · Issue #168 · rrousselGit/provider

https://qiita.com/kabochapo/items/a90d8438243c27e2f6d9