首页 > 解决方案 > 如何从 Listview.builder 中获取模型类 Flutter 的列表索引

问题描述

我有一堂课

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' 我知道我需要从我的列表中定义索引,但我不知道如何

标签: flutter

解决方案


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

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,
                  ),
                );

推荐阅读