android - 在 dispose() 之后调用 setState():_StatefulBuilderState#09642(生命周期状态:已失效,未安装)
问题描述
我用底页显示内容,我在计算后更新文件夹大小,使用 statefulbuilder 的 setState,我也使用了挂载条件,然后在调用 dispose 后它也显示setState ,帮我解决这个问题。
FileStat fileStat = selectedFilesAndFolders.last.statSync();
String size = '0 KB';
showModalBottomSheet(
context: context,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.only(
topLeft: Radius.circular(12.0),
topRight: Radius.circular(12.0),
)),
builder: (context) {
return StatefulBuilder(builder: (context, newSetState) {
getFolderSize(selectedFilesAndFolders.last.path).then((value) {
if (!mounted) return;
newSetState(() {
size = value;
});
});
return SingleChildScrollView(
child: Column(
children: [
SizedBox(
height: 2.0,
),
Text(
'Info',
style: TextStyle(
fontWeight: FontWeight.bold,
),
),
SizedBox(
height: 2.0,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expanded(
child: Align(
alignment: Alignment.centerRight,
child: Text('Name: '))),
Expanded(
child: Text(path
.basename(selectedFilesAndFolders.last.path)))
],
),
SizedBox(
height: 2.0,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expanded(
child: Align(
alignment: Alignment.centerRight,
child: Text('Size: '))),
Expanded(child: Text(size)),
],
),
SizedBox(
height: 2.0,
),
Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Expanded(
child: Align(
alignment: Alignment.centerRight,
child: Text('Last Modified Date: '))),
Expanded(child: Text(fileStat.modified.toString()))
],
),
SizedBox(
height: 2.0,
),
],
),
);
});
});
解决方案
尝试以下
if (!mounted){
setState(() {
size = value;
}),
};
推荐阅读
- java - 为什么我在 Java 中得到不同的加法和错误
- flutter - 将 firestore 数据下载到 Flutter List
- powershell - 使用循环和输出创建 CSV
- typescript - 使用 node js 下载文件
- python - 如何访问websocket函数之外的变量
- javascript - 当我单击按钮时,值未在 js 中发送?
- python - 球卡在屏幕边缘
- api - 从没有 API 服务的网站中提取(或获取、抓取或获取)数据
- python - 仅删除已安装的应用程序然后删除 Django 中的文件夹是否安全?
- javascript - 单击按钮时如何动态显示内容