这是我的代码:
showArrow? IconButton(icon: Icon(FontAwesomeIcons.arrowCircleRight,color: Colors.white,), onPressed: (){
setState(() {
showArrow = !showArrow;
});
}):IconButton(icon: Icon(Icons.arrow_right),onPressed: (){},),
一开始showArrow值是true,所以当我按下图标时它会更新图标,但我希望它在3秒后更新图标,同时在其他小部件(如AssetImage)中的同一位置显示加载gif 。那么可以这样做吗?
在更新图标之前,我希望它在同一位置显示加载 gif 3 秒。
最佳答案
第一个解决方案: 如果您的小部件有状态管理,那就更好了。因此,首先您将显示 IconButton(第一个图标),然后当单击它时,您可以设置三秒钟的计时器或等待 future 的值并用 CircularProgressIndicator 替换 IconButton(第一个图标)。
当计时器完成时,用 IconButton(第二个图标)替换 CircularProgressIndicator
第二个解决方案:
var showArrow = false;
var showLoading = false;
Widget myIconButton() {
if (!showLoading)
return showArrow
? IconButton(
icon: Icon(Icons.clear, color: Colors.white),
onPressed: () {
setState(() {
showArrow = !showArrow;
showLoading = !showLoading;
});
Future.delayed(Duration(seconds: 3), () {
if (mounted)
setState(() {
showLoading = !showLoading;
});
});
})
: IconButton(
icon: Icon(Icons.arrow_right),
onPressed: () {},
);
else
return SizedBox(
width: 20, height: 20, child: CircularProgressIndicator());
}
关于flutter - 是否可以在flutter中只显示widget 3秒,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62435142/