【问题标题】:How to create image with if conditions on flutter?如何在颤动的条件下创建图像?
【发布时间】:2021-10-15 18:16:43
【问题描述】:

有一个容器,里面有这样的图像

Container(

              child: GestureDetector(
                onDoubleTap: () {
                  //print("double tap");
                  showAlertDialog(context);
                  call(url);
                },
                //child: Image.asset('resimler/primeLogo.png'),

                child: Image.memory(
                    image!,
                    fit: BoxFit.contain,
                    width: MediaQuery.of(context).size.width * 0.3,
                    height: MediaQuery.of(context).size.height * 0.3),
              ),

此容器允许我在页面中显示图像。然而 我希望这个图像只有在 x 变量大于 100 时才显示,否则根本不会出现。为此,我尝试了这个。

if(x>100){
              return new Container(
                child: GestureDetector(
                onDoubleTap: () {
                  //print("double tap");
                  showAlertDialog(context);
                  call(url);
                },
                //child: Image.asset('resimler/primeLogo.png'),

                child: Image.memory(
                    image!,
                    fit: BoxFit.contain,
                    width: MediaQuery.of(context).size.width * 0.3,
                    height: MediaQuery.of(context).size.height * 0.3),
              ),

            )],
          }else{
              return null;
    }

我该怎么做?感谢您的帮助。

【问题讨论】:

    标签: flutter dart if-statement widget containers


    【解决方案1】:

    希望这个小部件在列/堆栈内,或类似的东西。您不必使用else 状态。

    只需使用if(x>100) Container()。此外,您可以使用Visibility 小部件来处理这种情况。

    示例

    Column(
            children: [
             if(x> 100) Container(),
             
    

    当它在child 上时使用Visbilty

       Visibility(
                visible: x > 100,
                child: Image(image: image),
              ),
    

    另外,如果你还想使用else state,请按照以下方式操作:

    • 在状态中创建一个方法
    • 或使用getter
      get getWIdget => {
            if (x > 100)
              Container()
    
            /// for empty space
            else
              SizedBox()
          };
    
      Widget getWidgetWithParameter(int x) {
    
        if(x>100) return Image(image: );
        else return SizedBox();
      }
    

    【讨论】:

    • 在其他情况下,我希望图像不可见,但根本不出现。
    • 希望您在运行代码时能得到。
    【解决方案2】:

    你可以使用这个 (x>0) 吗? Widget() : Widget() 条件。

    Container(
    
              child: GestureDetector(
                onDoubleTap: () {
                  //print("double tap");
                  showAlertDialog(context);
                  call(url);
                },
                //child: Image.asset('resimler/primeLogo.png'),
    
                child: (x > 100) ? Image.memory(
                    image!,
                    fit: BoxFit.contain,
                    width: MediaQuery.of(context).size.width * 0.3,
                    height: MediaQuery.of(context).size.height * 0.3),
              ) : Container(),
           ),
        ),
    

    【讨论】:

      【解决方案3】:

      无状态/有状态小部件的build 方法总是需要返回一个Widget。如果您不想在 x 不大于 100 的情况下显示任何内容,那么在 else 块中只需返回一个空的 SizedBoxContainer

      【讨论】:

        【解决方案4】:

        你想在哪里显示照片,你将用x>100:'resimler/primeLogo.png'?null替换它

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2019-11-21
          • 2019-07-06
          • 2021-07-25
          • 2021-12-22
          • 2021-11-27
          • 2019-08-30
          • 2021-02-24
          相关资源
          最近更新 更多