Json 如何在单个列表视图中加载多个列表视图?

Json 如何在单个列表视图中加载多个列表视图?,json,listview,flutter,scrollview,Json,Listview,Flutter,Scrollview,我正在开发Flatter应用程序,我想在其中显示提要,我想显示包含4个训练的第一个列表(水平列表),包含4个帖子的第二个列表(垂直列表),包含4个教练的第三个列表(水平列表),以及包含4个帖子的第四个列表。在列表末尾有“加载更多”按钮,然后再次单击按钮,重复第一步,即4个训练、4个帖子、4个教练和4个帖子。我的问题是显示这种视图的最佳方式是什么 你不能在另一个列表视图中显示每个列表视图,只需在SingleChildScrollView中显示所有内容,然后将所有列表视图添加到行小部件中 Singl

我正在开发Flatter应用程序,我想在其中显示提要,我想显示包含4个训练的第一个列表(水平列表),包含4个帖子的第二个列表(垂直列表),包含4个教练的第三个列表(水平列表),以及包含4个帖子的第四个列表。在列表末尾有“加载更多”按钮,然后再次单击按钮,重复第一步,即4个训练、4个帖子、4个教练和4个帖子。我的问题是显示这种视图的最佳方式是什么


你不能在另一个
列表视图
中显示每个
列表视图
,只需在
SingleChildScrollView
中显示所有内容,然后将所有
列表视图
添加到
小部件中

SingleChildScrollView(
   child: Column(
      children<widget>[
         // Put listviews here.
      ],
   ),
),
SingleChildScrollView(
子:列(
孩子们[
//将列表视图放在这里。
],
),
),

以下是您想要实现的一个示例:

List<List<String>> lists = [["A1","A2","A3","A4","A5"],["B1","B2","B3"],["C1","C2","C3","C4","C5"],["D1","D2","D3"]];

Widget buildCard(String text) {
  return Container(
    margin: EdgeInsets.all(4.0),
    padding: EdgeInsets.all(40.0),
    alignment: Alignment.center,
    color: Colors.lightGreenAccent,
    child: Text(text),
  );
}

Widget buildHorizontalList(List<String> sublist) {
  return SizedBox(
    height: 200.0,
    child: ListView.builder(
      scrollDirection: Axis.horizontal,
      itemCount: sublist.length,
      itemBuilder: (context, index) => buildCard("${sublist[index]}"),
    ),
  );
}

Widget buildVerticalList(List<String> sublist) {
  return ListView.builder(
    shrinkWrap: true,
    physics: NeverScrollableScrollPhysics(),
    itemCount: sublist.length,
    itemBuilder: (context, index) {
      return buildCard("${sublist[index]}");
    },
  );
}

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: ListView.builder(
        itemCount: lists.length + 1,
        itemBuilder: (context, index) {
          if (index <= lists.length - 1) {
            return index.isEven ? buildHorizontalList(lists[index]) : buildVerticalList(lists[index]);
          }
          return RaisedButton(
            child: Text('Load More'),
            onPressed: () {
              setState(() {
                lists.addAll([["X1","X2","X3","X4","X5"],["Y1","Y2","Y3"]]);
              });
            },
          );
        }),
  );
}
List List=[[“A1”、“A2”、“A3”、“A4”、“A5”]、[“B1”、“B2”、“B3”]、[“C1”、“C2”、“C3”、“C4”、“C5”]、[“D1”、“D2”、“D3”];
小部件构建卡(字符串文本){
返回容器(
边距:所有边集(4.0),
填充:所有边缘设置(40.0),
对齐:对齐.center,
颜色:颜色。浅绿色口音,
子:文本(Text),
);
}
小部件构建水平列表(列表子列表){
返回大小框(
高度:200.0,
子项:ListView.builder(
滚动方向:轴水平,
itemCount:sublist.length,
itemBuilder:(上下文,索引)=>buildCard(${sublist[index]}),
),
);
}
小部件buildVerticalList(列表子列表){
返回ListView.builder(
收缩膜:对,
物理学:NeverscrollableScroll物理学(),
itemCount:sublist.length,
itemBuilder:(上下文,索引){
返回构建卡(${sublist[index]});
},
);
}
@凌驾
小部件构建(构建上下文){
返回脚手架(
正文:ListView.builder(
itemCount:lists.length+1,
itemBuilder:(上下文,索引){

如果(也许你正在寻找感谢巴勃罗·巴雷拉,你能不能也弄清楚如何“加载更多”的作品?再次感谢巴勃罗·巴雷拉,这个答案节省了我的时间。谢谢#托尔,你能不能也弄清楚如何“加载更多”的作品?如果我理解你的意思是正确的,你想在你所有的列表下面都有一个按钮?为此,我会把按钮放在下面列中的子项中的列表。