Flutter 颤振:帮助构建可滚动的列表视图

Flutter 颤振:帮助构建可滚动的列表视图,flutter,Flutter,item1、item2、item3都是列表,我正在尝试构建一个包含每个列表中所有项的列表视图,其中这三个listview构建器将占据它们所需的任意位置,假设item1中有20个项,它将占据20行,item2有25行,等等。当我尝试使用row和listview.builder时,它会给我一个错误。 我想做的是: 主体:容器( 子:列( 儿童:[ 划船( 儿童:[ ListView.builder( itemBuilder:(构建上下文,int索引){ 返回列表块( 标题:文本(widget.ite

item1、item2、item3都是列表,我正在尝试构建一个包含每个列表中所有项的列表视图,其中这三个listview构建器将占据它们所需的任意位置,假设item1中有20个项,它将占据20行,item2有25行,等等。当我尝试使用row和listview.builder时,它会给我一个错误。 我想做的是:

主体:容器(
子:列(
儿童:[
划船(
儿童:[
ListView.builder(
itemBuilder:(构建上下文,int索引){
返回列表块(
标题:文本(widget.item1[index]),
);
},
itemCount:widget.item1==null?0:widget.item1.length,
),
],
),
],
),
),
在众多事故报告中:


flatter:引发了另一个异常:NoSuchMethodError:The method'这就是我所说的,一个
列表
使用
SingleChildScrollView
,您也可以对
碎片
执行相同的操作

我为您制作的样本:

 final List<String> item1 = List.generate(5, (val) => "item1 $val");
  final List<String> item2 = List.generate(5, (val) => "item2 $val");
  final List<String> item3 = List.generate(5, (val) => "item3 $val");

  @override
  Widget build(BuildContext context) {
    final items = <Widget>[];

    for (String i1 in item1) {
      items.add(ListTile(
        title: Text(i1),
      ));
    }

    for (String i2 in item2) {
      items.add(ListTile(
        title: Text(
          i2,
          style: TextStyle(
            color: Colors.red,
          ),
        ),
      ));
    }

    for (String i3 in item3) {
      items.add(ListTile(
        title: Text(
          i3,
          style: TextStyle(
            color: Colors.blue,
          ),
        ),
      ));
    }

    return Scaffold(
      body: Container(
        child: SingleChildScrollView(
          child: Column(
            children: items,
          ),
        ),
      ),
    );
  }
}

别忘了查看Emily Fortuna(Flatter团队)撰写的这篇关于条子的精彩文章


这就是我所说的,一个
列表
使用
SingleChildScrollView
,您也可以使用
片段

我为您制作的样本:

 final List<String> item1 = List.generate(5, (val) => "item1 $val");
  final List<String> item2 = List.generate(5, (val) => "item2 $val");
  final List<String> item3 = List.generate(5, (val) => "item3 $val");

  @override
  Widget build(BuildContext context) {
    final items = <Widget>[];

    for (String i1 in item1) {
      items.add(ListTile(
        title: Text(i1),
      ));
    }

    for (String i2 in item2) {
      items.add(ListTile(
        title: Text(
          i2,
          style: TextStyle(
            color: Colors.red,
          ),
        ),
      ));
    }

    for (String i3 in item3) {
      items.add(ListTile(
        title: Text(
          i3,
          style: TextStyle(
            color: Colors.blue,
          ),
        ),
      ));
    }

    return Scaffold(
      body: Container(
        child: SingleChildScrollView(
          child: Column(
            children: items,
          ),
        ),
      ),
    );
  }
}

别忘了查看Emily Fortuna(Flatter团队)撰写的这篇关于条子的精彩文章


为什么不使用
SingleChildScrollView
+列,在添加为项目的子项之前以编程方式添加项目Column@diegoveloper我没有意识到这一点,我现在正在看。你也可以使用碎片,我有一个问题,item1、item2、item3有相同类型的对象吗?是的item1、item2、item3都是列表对象。我想条子要高级一点。但是我也可以试一下切片。是的,我知道,但是项目1,项目2,项目3有相同类型的对象吗?列出项目1,列出项目2,列出项目3?如果这是真的,您可以组合您的列表为什么不使用
SingleChildScrollView
+列,并在添加为您的子项之前以编程方式添加您的项目Column@diegoveloper我不知道,我现在正在看。你也可以用条子,我有一个问题,项目1,项目2,项目3有相同类型的对象吗?是的,项目1,item2、item3都是列表对象。我想条子要高级一点。但是我也可以试一下切片。是的,我知道,但是项目1,项目2,项目3有相同类型的对象吗?列出项目1,列出项目2,列出项目3?如果这是真的,你可以组合你的列表。我使用ListView.builder:)添加了另一种方法,它在性能方面更好。那更好,非常感谢,我确实学到了一些东西,干杯。我使用ListView.builder:)添加了另一种方法,它在性能方面更好。那更好,非常感谢,我真的学到了一些东西,干杯。