颤振listView.Builder隐藏最后一个列表项上的分隔符

颤振listView.Builder隐藏最后一个列表项上的分隔符,listview,flutter,divider,Listview,Flutter,Divider,使用ListView.Builder创建列表时,如何在最后一项中隐藏分隔符 为每个项目添加分隔符是相当容易的,但是在列表中的最后一个项目上取消分隔符的逻辑是什么 没有具体的stackoverflow问题,具体的例子就是实现这个任务 Widget build(BuildContext context) { return ListView.builder( shrinkWrap: true, physics: ScrollPhysics(), it

使用ListView.Builder创建列表时,如何在最后一项中隐藏分隔符

为每个项目添加分隔符是相当容易的,但是在列表中的最后一个项目上取消分隔符的逻辑是什么

没有具体的stackoverflow问题,具体的例子就是实现这个任务

   Widget build(BuildContext context) {
return 
    ListView.builder(
      shrinkWrap: true,
      physics: ScrollPhysics(),
      itemCount: OffersList.length,
      itemBuilder: (context, index) {
        Offer item = OffersList[index];
        return ListItem(context, item);
      },
    );
  }



Widget ListItem(BuildContext context, Offer item) {
if ( index == OffersList.length - 1) {
  dividerChecker = EmptyContainer();
} else {
  dividerChecker = Divider();
}
return Column(
  children: <Widget>[
    OfferListItem(
      offerData: item,
      status: status,
      userType: userType,
    ),
    dividerChecker,
  ],
);
小部件构建(构建上下文){
返回
ListView.builder(
收缩膜:对,
物理:物理(),
itemCount:OfferList.length,
itemBuilder:(上下文,索引){
报价项目=报价列表[索引];
返回列表项(上下文,项);
},
);
}
小部件列表项(构建上下文上下文,提供项){
if(index==OffersList.length-1){
dividerChecker=EmptyContainer();
}否则{
dividerChecker=Divider();
}
返回列(
儿童:[
奥弗利斯蒂姆(
报价数据:第,
状态:状态,
userType:userType,
),
切克,
],
);
}

建议的解决方案:

使用ListView.separator而不是ListView.Builder:

        ListView.separated(
      separatorBuilder: (BuildContext context, int index) => new Divider(),
      shrinkWrap: true,
      physics: ScrollPhysics(),
      itemCount: OffersList.length,
      itemBuilder: (context, index) {
        Offer item = OffersList[index];
        return offerListItem(context, item);
      },
    ),
Widget offerListItem(BuildContext context, Offer item) {
return Column(
  children: <Widget>[
    OfferListItem(
      offerData: item,
      status: status,
      userType: userType,
    ),
  ],
);
ListView.com(
separatorBuilder:(BuildContext上下文,int index)=>new Divider(),
收缩膜:对,
物理:物理(),
itemCount:OfferList.length,
itemBuilder:(上下文,索引){
报价项目=报价列表[索引];
返回报价单(上下文、项目);
},
),
小部件offerListItem(构建上下文,提供项){
返回列(
儿童:[
奥弗利斯蒂姆(
报价数据:第,
状态:状态,
userType:userType,
),
],
);

}

这可以通过
ListView.separated()轻松实现


对于动态创建的列表,可以使用
ListView.separated()
,对于短静态列表,可以使用ListTile.divideTiles。这两种方法都没有在最后一个列表项后添加分隔符

ListTile.divideTiles

这将为每个项目返回两个小部件,最后一个项目除外。
separatorBuilder
用于添加分隔符


如果您想在最后一项后添加分隔符,请参见我的。

使用ListView。separated
ListView。separated
是我一直在寻找的,谢谢。
ListView.separated(
  itemCount: 100,
  itemBuilder: (context, index) {
    return ListTile(
      title: Text('$index sheep'),
    );
  },
  separatorBuilder: (context, index) {
    return Divider(thickness: 0.5,
    indent: 20,
    endIndent: 20,
    );

  },
)
ListView(
  children: ListTile.divideTiles( //          <-- ListTile.divideTiles
      context: context,
      tiles: [
        ListTile(
          title: Text('Horse'),
        ),
        ListTile(
          title: Text('Cow'),
        ),
        ListTile(
          title: Text('Camel'),
        ),
        ListTile(
          title: Text('Sheep'),
        ),
        ListTile(
          title: Text('Goat'),
        ),
      ]
  ).toList(),
)
ListView.separated(
  itemCount: 100,
  itemBuilder: (context, index) {
    return ListTile(
      title: Text('$index sheep'),
    );
  },
  separatorBuilder: (context, index) {
    return Divider();
  },
)