gpt4 book ai didi

flutter - Flutter异步方法即使在删除了相应的小部件后仍保持运行

转载 作者:行者123 更新时间:2023-12-03 03:48:36 25 4
gpt4 key购买 nike

我有一个图像路径列表,正在使用List.generate方法显示图像,并使用一个十字形图标从列表中删除图像。在每个图像上都会调用Upload方法,当我从列表中删除该图像时,该方法仍然保持运行,直到图像被上传为止。我期望的行为是当我从列表中删除图像时,该方法也应该停止运行。我正在使用 future builder 在上传图像时显示循环进度栏和错误图标。
当我从列表中删除窗口小部件时,我该怎么做以确保与当前窗口小部件关联的future方法也停止?
这是我创建列表的代码

           List.generate(
files.length,
(index) {
var image = files[index];
return Container(
height: itemSize,
width: itemSize,
child: Stack(
children: <Widget>[
Container(
getImagePreview(image, itemSize)
),
Row(
mainAxisAlignment: MainAxisAlignment.end,
children: [
uploadHandler(image, field),
InkWell(
onTap: () => removeFileAtIndex(index, field),
child: Container(
margin: EdgeInsets.all(3),
decoration: BoxDecoration(
color: Colors.grey.withOpacity(.7),
shape: BoxShape.circle,
),
alignment: Alignment.center,
height: 22,
width: 22,
child: Icon(Icons.close, size: 18, color: Colors.white),
),
),
],
),
],
),
);
},
)

这是上载处理程序方法。
Widget uploadHandler(file, field) {
return FutureBuilder(
future: upload(file),
builder: (context, snapshot) {
if (snapshot.connectionState == ConnectionState.done) {
if (snapshot.data.statusCode == 201) {
return doneUpload();
} else {
logger.d(snapshot.error);
return error();
}
} else {
return uploading();
}
},
);
}

最佳答案

小部件的生命周期未附加到小部件调用的异步函数。
您可以检查mounted变量,以检查该小部件是否仍从异步函数中挂载。

关于flutter - Flutter异步方法即使在删除了相应的小部件后仍保持运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64548565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com