问题描述
我想在此列表中获得名称为test 的 ListA的索引
头等舱
class ListA {
String name;
ListA({this.name});
}
第二堂课
List<ListA> abc = [
ListA(name: 'test'),];
之后,我得到了一个带有按钮的无状态Wiget, 这就是onPressed方法
onPressed: () {
i = abc.indexOf(ListA(name: 'test'));
print(i);
},
我找不到任何错误,但不幸的是它总是返回-1,这意味着找不到它
我在做什么错了?
解决方法
发生这种情况是因为您在调用ListA
时正在创建一个新的indexOf
,这意味着您有两个不同的ListA
。这类似于:
print(ListA(name: 'test') == ListA(name: 'test'));
这将打印false
,因为它们不是同一对象。
您可以尝试以下操作之一:
- 保留对您使用的第一个
ListA
的引用,然后调用indexOf
并在其中传递相同的引用 - 使用
const
的{{1}}实例(将ListA
字段标记为name
,将final
添加到构造函数定义及其调用中) li>
- 在您的
const
类上覆盖==
operator和hashCode
,如果它们的字段/项目相同,则认为ListA
的两个不同实例相同 - 使用
ListA
而不是indexOf
并检查名称(indexWhere
)