在Flutter中将ListView Builder的索引增加2

问题描述 投票:1回答:1

我想在单行中放置两个列表图块。如何在Flutter中将每次迭代的索引增量增加2?

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS94TEV0aS5qcGcifQ==” alt =“在此处输入图像描述”>

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

我如何将其增加两个?

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],
                    ),
                  ),
                );
              },
            ),
          ),
        ],
      );
    },
  ),
listview flutter flutter-layout
1个回答
0
投票

连续使用两个项目时最好使用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()),
              ],
            );
          },
        ),
      ),
    );
  }
© www.soinside.com 2019 - 2024. All rights reserved.