我可以在Flutter中将尾随项添加到ListView吗?

时间:2019-08-29 13:40:53

标签: listview flutter

我想创建一个动态列表视图,最后一个项目是与动态列表无关的固定“跟踪”项目。

例如此代码

x -- x -- O -- y -- z <--(master)
           \
            ABC <--(foo)

生成了:-

enter image description here

我想要的是“与列表无关的跟踪项”项,好像它是“ Item20”一样!!

我也尝试过 class ListTest extends StatefulWidget { @override ListTestState createState() => ListTestState(); } class ListTestState extends State<ListTest> { var myList = ['Item1','Item2','Item3','Item4','Item5','Item6','Item7','Item8','Item9', 'Item10','Item11','Item12','Item13','Item14','Item15','Item16','Item17','Item18','Item19']; @override Widget build(BuildContext context) { return Column( children: <Widget> [Expanded( child: ListView.builder( itemCount: myList?.length, itemBuilder: (BuildContext content, int index) { return ListTile(title: Text(myList[index], ) ); }, ), ), Text("Trailing item not related to the list"), ] ); } } ,但我也无法按照我的意愿进行。

有人有什么想法吗?我的大脑冻结了。

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

ListView.builder(
              itemCount: myList?.length + 1,
              itemBuilder: (BuildContext content, int index) {
                if(index == myList.length){
                return Text("Trailing item not related to the list");
                }
                return ListTile(title: Text(myList[index]));
              },
          ),

它将检查您是否在列表的最后一项,并添加结尾的Widget

答案 1 :(得分:1)

这就是您要寻找的

 class ListTest extends StatefulWidget {
@override
  ListTestState createState() => ListTestState();
}

class ListTestState extends State<ListTest> {
  var myList = ['Item1','Item2','Item3','Item4','Item5','Item6','Item7','Item8','Item9',
    'Item10','Item11','Item12','Item13','Item14','Item15','Item16','Item17','Item18','Item19'];
  @override
  Widget build(BuildContext context) {
    return Column(
        children: <Widget> [Expanded(
          child: ListView.builder(

              itemCount: myList?.length,
              itemBuilder: (BuildContext content, int index) {
                return (index!=myList.length-1)?ListTile(title: Text(myList[index],):Container(/* The trailing widget you want to display*/) );
              },
          ),
        ),    
        ] );
  }
}