Flutter ListItem.builder不同事件单击

Flutter ListItem.builder不同事件单击,flutter,listview,dart,listitem,Flutter,Listview,Dart,Listitem,如何使用ListItem.builder为列表中的元素提供不同的单击事件?(OnApp,onpress) 我不想单独创建单独的listItem生成器 Expanded( child: ListView.builder( padding: const EdgeInsets.all(8), itemCount: entries.length, itemBuilder: (BuildContext context

如何使用ListItem.builder为列表中的元素提供不同的单击事件?(OnApp,onpress)

我不想单独创建单独的listItem生成器

 Expanded(
        child: ListView.builder(
            padding: const EdgeInsets.all(8),
            itemCount: entries.length,
            itemBuilder: (BuildContext context, int index) {
              return InkWell(
                onTap: () {},
                child: Container(
                  height: 100,
                  color: index % 2 == 0 ? Colors.white : Colors.grey,
                  child: InkWell(
                    onTap: () {},
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        Icon(iconsImage[index]),
                        Text('${entries[index]}'),
                        Icon(Icons.arrow_right)
                      ],
                    ),
                  ),
                ),
              );
            }),
      )

现在您有两个不同的列表,分别是
条目
图标
。您正试图在一个
列表视图中迭代这两个视图。它现在可能会起作用。但这不是一个好的编程概念。可以定义包含条目、图标和函数的新模型。它看起来像这样:

class NewModel {
  String entry;
  IconData iconData;
  Function function;

  NewModel({this.entry, this.iconData, this.function});
}
然后:

  List<NewModel> newModelList = [];

  void generateList() {
    newModelList.add(NewModel(
        entry: 'Privacy',
        iconData: Icons.privacy_tip,
        function: () {
          // GoToPrivacy();
        }));

    newModelList.add(NewModel(
        entry: 'Purchase History',
        iconData: Icons.history,
        function: () {
          // GoToHistory();
        }));

    newModelList.add(NewModel(
        entry: 'Help & Support',
        iconData: Icons.help,
        function: () {
          // GoToHelp();
        }));
  }
Expanded(
          child: ListView.builder(
              padding: const EdgeInsets.all(8),
              itemCount: newModelList.length,
              itemBuilder: (BuildContext context, int index) {
                return Container(
                  height: 100,
                  color: index % 2 == 0 ? Colors.white : Colors.grey,
                  child: InkWell(
                    onTap: newModelList[index].function, // Here is your function!
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.spaceBetween,
                      children: [
                        Icon(newModelList[index].iconData),
                        Text('${newModelList[index].entry}'),
                        Icon(Icons.arrow_right)
                      ],
                    ),
                  ),
                );
              }),

您可以添加一些示例或更多有关您需要的功能的信息吗?是的,我编辑了postAre。您是否有一个示例或类似的内容来显示您需要在完成时得到什么结果?单击列表中的项目将根据索引号执行不同的操作?是的,列表中有一个单独的小部件。如果单击第一个项目,则单击可调用第一个项目,而单击第二个项目则可能是另一个单击。