在Flatter中将ListView生成器的索引增加2

在Flatter中将ListView生成器的索引增加2,listview,flutter,flutter-layout,Listview,Flutter,Flutter Layout,我想在一行中放置两个列表平铺。如何在每次迭代中将颤振指数的增量增加2 如您所见,在下面的代码中,我尝试在一行中使用两个列表,然后我希望索引为index+2。但是,默认情况下,索引增加了index+1 如何将其增加2? body: ListView.builder( itemCount: song.length - 1, itemBuilder: (BuildContext ctxt, int index) { return Row( children

我想在一行中放置两个列表平铺。如何在每次迭代中将颤振指数的增量增加2

如您所见,在下面的代码中,我尝试在一行中使用两个列表,然后我希望索引为
index+2
。但是,默认情况下,索引增加了
index+1

如何将其增加2?

body: ListView.builder(
    itemCount: song.length - 1,
    itemBuilder: (BuildContext ctxt, int index) {
      return Row(
        children: <Widget>[
          Expanded(
            flex: 1,
            child: ListTile(
              title: Text(song[index]),
              subtitle: Text(singer[index]),
              trailing: Text(time[index]),
              onTap: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) => Player(
                      song[index],
                      singer[index],
                      time[index],
                    ),
                  ),
                );
              },
            ),
          ),
          Expanded(
            flex: 1,
            child: ListTile(
              title: Text(song[index+1]),
              subtitle: Text(singer[index+1]),
              trailing: Text(time[index+1]),
              onTap: () {
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (context) => Player(
                      song[index+1],
                      singer[index+1],
                      time[index+1],
                    ),
                  ),
                );
              },
            ),
          ),
        ],
      );
    },
  ),
body:ListView.builder(
itemCount:song.length-1,
itemBuilder:(BuildContext ctxt,int index){
返回行(
儿童:[
扩大(
弹性:1,
孩子:ListTile(
标题:文本(歌曲[索引]),
字幕:文本(歌手[索引]),
尾随:文本(时间[索引]),
onTap:(){
导航器。推(
上下文
材料路线(
生成器:(上下文)=>Player(
宋[索引],,
辛格[索引],
时间[索引],
),
),
);
},
),
),
扩大(
弹性:1,
孩子:ListTile(
标题:文本(歌曲[索引+1]),
字幕:文本(singer[索引+1]),
尾随:文本(时间[索引+1]),
onTap:(){
导航器。推(
上下文
材料路线(
生成器:(上下文)=>Player(
宋[索引+1],
辛格[index+1],
时间[索引+1],
),
),
);
},
),
),
],
);
},
),

当您希望一行中有两个项目时,使用GridView总是很好的,但是如果您希望使用列表视图,下面的代码将帮助您

您可以通过其他手动索引来维护索引

List<int> list = [1, 2, 3, 4, 5, 6, 7];
  int extraindex = -2;
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        child: ListView.builder(
          itemCount:
              list.length % 2 == 0 ? list.length / 2 : list.length ~/ 2 + 1,
          itemBuilder: (_, index) {
            extraindex += 2;
            return Row(
              children: [
                Text(list[extraindex].toString()),
                if (extraindex + 1 < list.length)
                  Text(list[extraindex + 1].toString()),
              ],
            );
          },
        ),
      ),
    );
  }
List=[1,2,3,4,5,6,7];
intextraindex=-2;
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
子项:ListView.builder(
项目计数:
list.length%2==0?list.length/2:list.length~/2+1,
itemBuilder:(\ux,索引){
指数+=2;
返回行(
儿童:[
文本(列表[extraindex].toString()),
if(外部索引+1<列表长度)
文本(列表[extraindex+1].toString()),
],
);
},
),
),
);
}
列表列表=[1,2,3,4,5,6,7];
@凌驾
小部件构建(构建上下文){
返回脚手架(
主体:容器(
子项:ListView.builder(
项目计数:
list.length%2==0?list.length~/2:list.length~/2+1,
itemBuilder:(\ux,索引){
返回行(
儿童:[
Text(列表[index*2].toString()),
如果(索引*2+1+1
以下是我为解决这一需求所做的工作——我使用了一个单独的计数器,每次迭代时递增2
itemCount
得到了实际计数的一半,如果长度是奇数,则itemCount-1。下面是代码-

Widget build(BuildContext context) {
    final doctor = //yourlist;
    int icount = 0;
    var length = doctor.specialization.length / 2;
    var listLength = length.floor();

ListView.builder(
                itemCount: listLength,
                shrinkWrap: true,
                physics: NeverScrollableScrollPhysics(),
                itemBuilder: (ctx, i) {
                  if (i != 0) {
                    icount = icount + 2;
                  }
                  return Container(
                    padding: EdgeInsets.symmetric(vertical: 5),
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.start,
                      children: <Widget>[
                        RoundedText(displayText: doctor.specialization[icount]),
                        SizedBox(width: 10),
                        RoundedText(
                            displayText: doctor.specialization[icount + 1])
                      ],
                    ),
                  );
                },
              ),  
}
小部件构建(构建上下文){
最终医生=//你的名单;
int-icount=0;
变量长度=doctor.specialization.length/2;
var listLength=length.floor();
ListView.builder(
itemCount:listLength,
收缩膜:对,
物理学:NeverscrollableScroll物理学(),
项目生成器:(ctx,i){
如果(i!=0){
icount=icount+2;
}
返回容器(
填充:边缘组。对称(垂直:5),
孩子:排(
mainAxisAlignment:mainAxisAlignment.start,
儿童:[
RoundedText(显示文本:doctor.specialization[icount]),
尺寸箱(宽度:10),
圆形文字(
displayText:doctor.specialization[icount+1])
],
),
);
},
),  
}

您可以尝试gridview。哪一个是更好的选择。“谢谢你们两个我使用网格视图的方法工作”对于任何想引用网格视图的人来说,虽然您的代码可以回答这个问题,但推荐您的解决方案是一个很好的实践
Widget build(BuildContext context) {
    final doctor = //yourlist;
    int icount = 0;
    var length = doctor.specialization.length / 2;
    var listLength = length.floor();

ListView.builder(
                itemCount: listLength,
                shrinkWrap: true,
                physics: NeverScrollableScrollPhysics(),
                itemBuilder: (ctx, i) {
                  if (i != 0) {
                    icount = icount + 2;
                  }
                  return Container(
                    padding: EdgeInsets.symmetric(vertical: 5),
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.start,
                      children: <Widget>[
                        RoundedText(displayText: doctor.specialization[icount]),
                        SizedBox(width: 10),
                        RoundedText(
                            displayText: doctor.specialization[icount + 1])
                      ],
                    ),
                  );
                },
              ),  
}