我觉得linter规则discarded_future有问题
有没有一种方法可以使用discarded_future lint规则,而不必在每次使用FutureBuilder时忽略该规则。使用简单的FutureBuilder时触发规则正常吗?如果是,正确的方法是什么?
FutureBuilder<void>(
future: retrieveLostData(),
builder: (
BuildContext context,
AsyncSnapshot<void> snapshot,
) {
switch (snapshot.connectionState) {
case ConnectionState.none:
return buildRowIconPhoto();
case ConnectionState.waiting:
return buildRowIconPhoto();
case ConnectionState.done:
return buildRowIconPhoto();
default:
return buildRowIconPhoto();
}
},
)
Future<void> retrieveLostData() async {
LostDataResponse response = await _imagePicker.retrieveLostData();
if (response.isEmpty) {
return;
}
if (response.file != null && widget.onPhotoTaken != null) {
widget.onPhotoTaken!(
File(response.file!.path),
false,
);
}
}
1条答案
按热度按时间s8vozzvw1#
我完全同意你的看法。我不明白为什么这个linter警告关心
future
属性是否接受同步未来或异步未来。然而,这是你如何绕过警告的方法:
或者,如果你没有使用
StatefulWidget
,而不是在initState
中调用retrieveLostDataFuture
,你可以在构造函数中做同样的事情:我认为这两种变体都非常丑陋,而您的原始代码可能是最好的版本。
这段代码是为那些对解决linter警告非常迂腐的人提供的。