flutter - 是否可以在flutter中只显示widget 3秒

标签 flutter dart

这是我的代码:

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 。那么可以这样做吗?

enter image description here

在更新图标之前,我希望它在同一位置显示加载 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/

相关文章:

Java DatagramSocket、Dart ClientSocket

android - Flutter - InkWell 对 Flexible 内部的 onTap 没有反应

dart - 我在使用 list.map 函数时遇到类型错误

Flutter web 轻松打印

java - 任务 ':app:compileDebugKotlin' java.io.IOException 执行失败

flutter - 什么是dart(?)表示法?

dart - 如何在Dart编程中使用 “>>>”

flutter - 无法在Flutter中将参数类型 'String'分配给参数类型 'Uint8List'/postUrl方法

flutter - Flutter MatrixGestureDetector-最小和最大比例

Flutter:List<File> 的值无法分配给 List<Widget> 类型的变量