如何从 Listview.builder 中获取模型类 Flutter 的列表索引

Posted

技术标签:

【中文标题】如何从 Listview.builder 中获取模型类 Flutter 的列表索引【英文标题】:How to get INDEX of the List from a Model Class Flutter out from Listview.builder 【发布时间】:2021-03-14 11:22:41 【问题描述】:

我有课

class Consultant 
  final int id;
  final String consultantFirstName;
  final String consultantLastName;
  final String consultantNickName;

  const Consultant(
    this.id,
    this.consultantFirstName,
    this.consultantLastName,
    this.consultantNickName,

  );


final Consultant marco = Consultant(
    id: 1,
    consultantFirstName: 'Marco',
    consultantLastName: 'Marcello',
    
);
final Consultant carmela = Consultant(
    id: 2,
    consultantFirstName: 'Carmela',
    consultantLastName: 'Maiocchi',
    consultantNickName: 'Mariz Safe',


List<Consultant> consultant = [
  marco,
  carmela,

];

如果我将此列表调用到 ListviewBuilder 中,一切都很好,因为 INDEX 到 Listviewbuilder 中, 问题是,如果我不在 ListViewbuilder 之外,我将无法获取索引并且我收到错误消息,因为如果我调用 consultant: consultant[index]; 将数据传递给新的小部件,则没有索引 这是我调用 Listview.builder 并获得价值的方式:

ListView.builder(
                padding: EdgeInsets.all(5),
                itemCount: consultant.length,
                itemBuilder: (BuildContext context, int index) 
                  return Column(
                    mainAxisAlignment: MainAxisAlignment.center,
                    children: [
                      GestureDetector(
                        onTap: () => Navigator.push(
                          context,
                          MaterialPageRoute(
                            builder: (_) => ConsultantProfile(
                              consultant: consultant[index],
                            ),
                          ),
                        ),

但是,如果我从 Listview.builder 小部件中出去,我尝试调用另一个小部件来传递数据,如下所示:

appBar: AppBar(
          title: Text(
            'Desteeno',
            style: TextStyle(fontWeight: FontWeight.w300, color: Colors.white),
          ),
          backgroundColor: Colors.purple,
          centerTitle: true,
          elevation: 15,
          shadowColor: Colors.black,
          actions: [
            IconButton(
              onPressed: () 
                Navigator.pop(context);
                showDialog(
                  context: context,
                  builder: (context) => ContactForm(
                    consultant: consultant[index],
                  ),
                );
              ,

我得到红色下划线的索引和错误: The getter 'index' isn't defined for the class '_ConsultantProfileState' 我知道我需要从我的列表中定义索引,但我不知道如何

【问题讨论】:

添加更多代码,例如您将如何使用它... 我编辑了代码并添加了一些内容。 您从哪里获得此代码中出现的顾问索引?? 索引来自班级顾问 我的意思是您如何获得前 1,2,3 或 4 的索引,无论如何您从顾问那里获得想要使用的项目 【参考方案1】:

试试这个,应该会有帮助:

appBar: AppBar(
          title: Text(
            'Desteeno',
            style: TextStyle(fontWeight: FontWeight.w300, color: Colors.white),
          ),
          backgroundColor: Colors.purple,
          centerTitle: true,
          elevation: 15,
          shadowColor: Colors.black,
          actions: [
            IconButton(
              onPressed: () 
                Navigator.pop(context);
                showDialog(
                  context: context,
                  builder: (context) => ContactForm(
                    consultant: widget.consultant,
                  ),
                );

【讨论】:

以上是关于如何从 Listview.builder 中获取模型类 Flutter 的列表索引的主要内容,如果未能解决你的问题,请参考以下文章

如何为 ListView.builder 加载数据以从提供者的数据构建

如何从http POST请求结果颤振在listview builder上显示数据

如何使用 StreamBuilder 将数据从 firebase firestore 检索到颤振中,并使用 ListView.builder 显示值?

从 ListView.builder 中返回自定义卡片和关闭(添加和删除到列表视图)

在 Flutter 中构建列表项时如何更新 ListView.builder 的 itemCount?

无法在 Flutter 的 listview.builder 中获取长度