我是个陌生的人,我必须说,从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,则容器将扩展以填充其父级中的所有可用空间,除非父级提供了无界的约束,在这种情况下,容器将尝试尽可能小可能。
答案 0 :(得分:1)
您应使用多子代布局小部件,这些小部件接受children
而非child
。一个适合您的好例子可能是Row
,Column
或Stack
。
不要害怕嵌套窗口小部件,您会做很多事情!
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