首页 > 解决方案 > 退出应用程序时未调用 Flutter Provider dispose 方法

问题描述

我正在使用 Provider 将 MaterialApp 包装在我的应用程序中,但是在关闭应用程序时,未调用提供程序的 dispose 方法。

我的代码如下所示:

MaterialApp(
  title: 'Flutter Demo',
  theme: ThemeData(
    primarySwatch: Colors.blue,
  ),
  home: Provider<PageBloc>(
    builder: (context) => PageBloc(FlutterSerialService()),
    child: Consumer<PageBloc>(
      builder: (context, bloc, _) => MainPage(bloc: bloc),
    ),
    dispose: (context, bloc) {
      print("Dispose..");
      bloc.dispose();
    },
  ),
);

标签: flutterflutter-provider

解决方案


来自https://github.com/rrousselGit/provider的文档(我猜这是您使用的提供商!?):

如果 Provider 从小部件树中删除,实例化的 MyComplexClass 将被释放。

因此,据我了解,仅当您更改小部件树时才会触发 dispose 回调。退出应用程序时,小部件树仍然保持不变。当您杀死应用程序时,您是否检查过它是否被调用?


推荐阅读