如何在 if 条件下创建图像?

How to create image with if conditions on flutter?

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

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;
    }

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

在你想要显示照片的地方,你将用 x>100:'resimler/primeLogo.png'?null

替换它

希望这个小部件在 column/stack 内,或类似的东西。您不必使用 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();
  }

Stateless/Stateful 小部件的 build 方法总是需要 return 一个 Widget。如果您不想在 x 不大于 100 时显示任何内容,那么在 else 块中只需 return 一个空的 SizedBoxContainer.

你可以用这个 (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(),
       ),
    ),