当前位置: 首页 > 知识库问答 >
问题:

Listview。在Flatter中实现时,builder不显示我的图像

濮升
2023-03-14

我正在尝试实现一个水平列表视图,其中显示了从Flatter image_picker插件中提取的图像。

它的工作正常,如果我不使用列表视图,只显示一个单一的图像。然而,我试图使用多个图像,只要我在列表视图中的小部件只是显示为黑色。我的列表视图代码如下:

          @override
 Widget build(BuildContext context) {
return WillPopScope(

  onWillPop: () async {
    
    Navigator.pushReplacementNamed(context, 'inventory');
    return false;
  },
  child: Scaffold(
    appBar: AppBar(
      backgroundColor: Colors.green[700],
      title: Text(
        'MyApp',
        textAlign: TextAlign.center,
      ),
      leading: new IconButton(
        icon: new Icon(Icons.arrow_back),
        onPressed: () {
          Navigator.pushReplacementNamed(
              context,
              'inventory');
        },
      ),

      actions: <Widget>[
        Padding(
          padding: EdgeInsets.only(right: 10.0),
          child: Container(

            width: 50,
            height: 50,
            decoration: BoxDecoration(
              shape: BoxShape.circle,
              color: Colors.white, //remove this when you add image.
            ),

            child: GestureDetector(
              onTap: (){
                Navigator.pushNamed(context,'profile');

              },
              child: Image(
                image:NetworkImage("imageUrl goes here"),
                width: 120,
                height: 120,
                fit: BoxFit.cover,

              ),
            ),
          ),
        )
      ],

    ),
    body: SafeArea(

      child: Column(

        children: [

          pickedFile == null ?
          GestureDetector(
            onTap: () {

              _showMyDialog();

              setState(() {


              });
            },

            child: Container(

              width: 200,
              height: 200,
              child: Column(
                mainAxisAlignment: MainAxisAlignment.center,
                children: <Widget>[
                  Text('Click to add a Photo',textAlign: 
TextAlign.center,style: TextStyle(fontSize: 24),),
                  SizedBox(height: 20,),
                  Icon(

                    Icons.add_circle_outline,
                    color: Colors.grey[700],
                    size: 30,

                  ),

                ],
              ),
              margin: EdgeInsets.all(20.0),
              decoration: BoxDecoration(

                  border: Border.all(width: 2,color: Colors.grey),

                  shape: BoxShape.circle
              ),

            ),
          )
              :
          GestureDetector(
              onTap: () {

                _showMyDialog();

                setState(() {


                });
              },


              child: ListView.builder(
                  shrinkWrap: true,
                  scrollDirection: Axis.horizontal,
                  itemCount: _imageFileList!.length,
                  itemBuilder: (BuildContext context, int index) {
                   
 return kIsWeb

                        ? Image.network(_imageFileList![index].path)
                        : Image.file(File(_imageFileList! 
  [index].path));

                  }
              )

  ],
      ),

  ),),
  );
  }
}

我没有显示整个代码,因为页面太长,但是页面的其余部分工作正常。如果我删除Listview构建器,而只是使用下面的测试,它就可以正常工作。我做错了什么?

            child: Row(
              children: [
                        kIsWeb
                          ? Container(
                          child: Image.network(_imageFileList![index].path))
                          : Container(
                          child: Image.file(File(_imageFileList![index].path)));

                    }
                ),
              ],
            ),

请帮忙。

**用我的完整部件编辑了上面的代码

共有2个答案

柳宾实
2023-03-14

设法解决了我的问题。这与需要添加的高度约束有关。在这个链接中找到了解决方案

如何在Flatter中向列添加ListView?

顾亦
2023-03-14

要么使用Row,要么使用ListView,不能两者都使用。

您可以使用带有列表的行。生成

Row(
  children: List.generate(_imageFileList!.length, 
    (i) => kIsWeb
         ? Container(child: Image.network(_imageFileList![index].path))
         : Container(child: Image.file(File(_imageFileList![index].path))
),

或者ListView在没有行的情况下如何使用它ListView可能是您想要使用的小部件<如果内容大于宽度,则代码>行将溢出,而在这种情况下,列表视图将充当其自己的滚动视图。

我还要再次检查您是否需要扩展的小部件。这通常用于一行(或类似的小部件)中。

 类似资料:
  • 问题内容: 我想要一个带有“人”名称的ListView,但是在启动应用程序时,在ListView上,我看到了一些奇怪的字符串而不是(字符串)名称。我认为这是“人”对象的强制问题。我不知道ListView应该是ListView还是ListView。因为当我尝试在listview上设置项目时,使用setItems(ObservableList)可以得到显示在列表上的怪异字符串。.这是代码: MainA

  • 问题内容: 我有一个带有ArrayAdapter的ListView,其中包含带有图像和字符串的行。直到我确定图像的加载速度变慢,这样我才能在显示列表之前无法加载图像,这样效果很好。因此,我开始使用加载图像到单独的线程中AsyncTask。 在开始滚动列表之前,我对结果感到非常满意。加载了错误的图像,看起来好像不是图像稍后出现的问题。如果我尝试对列表进行排序,问题将变得非常严重,并且没有图像在右行。

  • 我是一个新手,尝试在我的一条路线中添加一个列表视图,单击该列表视图时,会将我带到每个列表卡特定的新路线。 这是我的路线代码: 我收到的问题是: 我尝试让ListView成为自己的类,然后将其添加到我的SecondRoute主体中,但同样的错误出现了。 102号线是二年级的脚手架。 谢谢你的帮助

  • 我无法在测试应用程序的设备上显示我的广告单元。 我正在使用firebase_admob插件 这是我使用的代码: 这是我得到的日志: 所以我这样指定了我设备的ID: 但广告仍然没有出现。这是我得到的日志: 如果我使用Google提供的测试广告,广告效果很好,这是我得到的日志: 我的广告单元怎么了?我在两天前创建了它,我是否等待了足够长的时间才让它出现? 感谢您的帮助;)

  • 我是Android的新手,我正在做一个应用程序,可以显示用户上传的衣服图片。我可以完美地上传图片,但由于某种原因,我无法将firebase实时数据库中的图像显示到中。几周来我一直在寻找解决办法。 请帮帮我。非常感谢你抽出时间。 topactivity.java 下面是我在TopsActivity.java中所做的更改