У меня есть список путей к изображениям, и я использую метод List.generate
для отображения изображений и крестик для удаления изображения из списка. Метод загрузки вызывается для каждого изображения, и когда я удаляю изображение из списка, метод продолжает работать до тех пор, пока изображение не будет загружено. Я ожидаю, что когда я удаляю изображение из списка, метод также должен перестать работать. Я использую будущий конструктор для отображения круглого индикатора выполнения и значков ошибок при загрузке изображения.
Что мне делать, чтобы убедиться, что будущий метод, связанный с текущим виджетом, также останавливается, когда я удаляю виджет из списка?
Это код, в котором я создаю список
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();
}
},
);
}