flutter - 退出应用程序时未调用 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();
},
),
);
解决方案
来自https://github.com/rrousselGit/provider的文档(我猜这是您使用的提供商!?):
如果 Provider 从小部件树中删除,实例化的 MyComplexClass 将被释放。
因此,据我了解,仅当您更改小部件树时才会触发 dispose 回调。退出应用程序时,小部件树仍然保持不变。当您杀死应用程序时,您是否检查过它是否被调用?
推荐阅读
- algorithm - 重复的 DNA 序列
- javascript - 如何使用 jQuery javascript 在数据库表中上传、显示和保存图像
- .net-core - 带有 JWT 的 Core 2.0 API Auth 返回未经授权
- c - 存储在数组中的值在 OpenMP gcc 中更改
- r - R 版本的 inplace=True
- msbuild - 无效的表达式术语“。” 运行 Visual Studio 2017 和 TFS Build 2015
- fonts - 如何在 Notepad++ 中更改字体颜色以突出显示(不是全局更改)
- mysql - 像 QUARTER 函数一样获取季度,但使用 DATE_FORMAT
- html - EJS 渲染 HTML
- opencv - 使用 emeocv 时如何解决“OpenCV 错误:cvCheckTrainData 中的错误参数(训练数据必须是浮点矩阵)”错误?