容器中的动态数据颤动

时间:2019-10-19 16:21:43

标签: flutter dart

我是个陌生的人,我必须说,从c#的背景来看,我印象深刻,我能够在不到5分钟的时间内完成水平(包含几个容器)的列表视图。

但是,我希望我的容器动态地显示一个List内容,到目前为止,我所拥有的是一个小部件来构建我的颜色

 Widget horizontalList2 = new Container(
    margin: EdgeInsets.symmetric(vertical: 20.0),
    height: 200.0,
    child: new ListView(
  scrollDirection: Axis.horizontal,
  children: <Widget>[
    Container(width: 160.0, color: Colors.blue,),
    Container(width: 160.0, color: Colors.green,),
    Container(width: 160.0, color: Colors.cyan,),
    Container(width: 160.0, color: Colors.black,   
    child:Text("Test"),

    child: Image.network(
          'https://flutter.io/images/catalog-widget-placeholder.png',
          height: 100,
          width: 150
        ) 

    )

但是,正如您看到的那样,我正在尝试创建另一个文本元素,我想要图像,然后再创建一点文本和另一个文本,这与Netflix的工作方式大致相同,但这是针对气象应用程序的。

有人能解释子元素的工作原理吗?在我尝试这样做时,容器中不能有一个以上的子元素,所以出现以下错误。我该怎么做才能拥有第二个文本子元素并基于动态POCO列表的listview

  

容器包含的[child]。

     

如果为null,并且[constraints]为无界或也为null,则容器将扩展以填充其父级中的所有可用空间,除非父级提供了无界的约束,在这种情况下,容器将尝试尽可能小可能。

1 个答案:

答案 0 :(得分:1)

您应使用多子代布局小部件,这些小部件接受children而非child。一个适合您的好例子可能是RowColumnStack

不要害怕嵌套窗口小部件,您会做很多事情!

ListView
  Container
    Row
      Text
      Image
      Icon
  Container
    Row
      Text
      Image
      Icon

当您发现自己像这样重复窗口小部件树时,请创建一个输出子树的自定义窗口小部件。以上内容可能变为:

ListView
  MyColoredListItem
  MyColoredListItem

您可以在下面的flutter文档中找到多子布局小部件的完整列表:

https://flutter.dev/docs/development/ui/widgets/layout#Multi-child%20layout%20widgets

有关创建自己的小部件的更多信息:

https://api.flutter.dev/flutter/widgets/StatelessWidget-class.html https://api.flutter.dev/flutter/widgets/StatefulWidget-class.html