具有自定义列表的IndexOfFlutter-Dart

问题描述

我想在此列表中获得名称为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,因为它们不是同一对象。

您可以尝试以下操作之一:

  1. 保留对您使用的第一个ListA的引用,然后调用indexOf并在其中传递相同的引用
  2. 使用const的{​​{1}}实例(将ListA字段标记为name,将final添加到构造函数定义及其调用中)
  3. li>
  4. 在您的const类上覆盖== operatorhashCode,如果它们的字段/项目相同,则认为ListA的两个不同实例相同
  5. 使用ListA而不是indexOf并检查名称(indexWhere

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...