【问题标题】:ElevatedButton disable onPressedElevatedButton 禁用 onPressed
【发布时间】:2022-08-19 00:56:44
【问题描述】:

我的小部件中连续有 4 个 ElevatedButtons。如果其中一个被按下,将根据按钮显示图像。此图像来自 API,因此需要一些时间来加载。 是否可以在 API 的数据到达时禁用未选择的按钮?

这是按钮的代码:

 @override
  Widget build(BuildContext context) {
    return ElevatedButton(
      style: ElevatedButton.styleFrom(
        padding: EdgeInsets.symmetric(horizontal: 5, vertical: 3),
        shape: RoundedRectangleBorder(
          borderRadius: BorderRadius.circular(5.0),
        ),
        primary: mainBgColor,
      ),
      onPressed: showImage,
      child: Text(
        title,
      ),
    );
  }

这是功能:

showImage: =>_controller.buttonTap(getImage(quizImages.wrong));

标签: flutter dart flutter-onpressed


【解决方案1】:

当属性onPressed 为空时,按钮被禁用。也就是说,您可以将 null 分配给您的按钮 onPressed 或基于在获取图像时设置的标志的回调。

【讨论】:

    【解决方案2】:

    当然,您需要一个变量来告诉您是否处于加载状态,然后您可以执行以下操作:

    onPressed: isLoading ? null : showImage
    

    【讨论】:

      【解决方案3】:

      请取一个状态分别变化的变量如下:

      开始 API 调用:

      isFetching = true
      

      API成功 /失败:

      isFetching = false
      

      将以下代码放在 onPressed 回调中:

      onPressed: isFetching ? null : showImage
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-08-18
        • 2021-08-11
        • 2020-05-08
        • 2021-03-07
        • 2021-08-30
        • 2022-01-25
        • 2021-10-20
        • 2021-06-03
        相关资源
        最近更新 更多