我想在此列表中获得名称为test 的 ListA的索引
头等舱
第二类class ListA {
String name;
ListA({this.name});
}
之后,我得到了一个带有按钮的无状态Wiget,List<ListA> abc = [
ListA(name: 'test'),
];
那就是onPressed方法
我找不到任何错误,但不幸的是它总是返回-1,这意味着找不到它onPressed: () {
i = abc.indexOf(ListA(name: 'test'));
print(i);
},
我在做什么错?
最佳答案
发生这种情况是因为您在调用ListA
时正在创建一个新的indexOf
,这意味着您有两个不同的ListA
。这类似于这样做:
print(ListA(name: 'test') == ListA(name: 'test'));
这将打印false
,因为它们不是同一对象。您可以尝试以下方法之一:
ListA
的引用,并调用indexOf
在const
的ListA
实例(将name
字段标记为final
,将const
添加到构造函数定义及其调用中)==
类上的 hashCode
operator和 ListA
,因此,如果两个不同的ListA
实例的字段/项相同,则认为它们是相同的indexOf
,使用indexWhere
并检查名称(indexWhere((l) => l.name == 'test')
)关于list - 具有自定义列表的IndexOf(Flutter-Dart),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63535244/