gpt4 book ai didi

flutter |未处理的异常 : Bad state: No element using 'firstWhere' and 'orElse'

转载 作者:行者123 更新时间:2023-12-03 08:00:11 28 4
gpt4 key购买 nike

我无法理解如何使用以下方法返回 null:orElse: () => null我的方法如下:

@override
Future<People> searchPeople({required String email}) async {
var user = auth.FirebaseAuth.instance.currentUser;
final docs = await FirebaseFirestore.instance
.collection('users')
.doc(user!.email)
.collection('people')
.where('hunting', isEqualTo: email)
.get();

final docData = docs.docs.map((doc) {
return People.fromSnapshot(doc);
});

var res = docData.firstWhere(
(element) => element.hunting == email,
orElse: () => null, // The return type 'Null' isn't a 'People', as required by the closure's
);
print(res);
return res;
}

问题是它抛出错误:“返回类型“Null”不是“People”,如闭包的要求

我已经在这里阅读了很多答案,但所有示例和答案仅适用于返回类型 string、int 等...当类型是对象(People)时如何处理 null?已经尝试使用集合:firstWhereOrNull但错误仍然存​​在......

我的模型中是否应该更改某些内容?

class People extends Equatable {
String? hunting;
String? username;
String? persona;

People({
this.hunting,
this.username,
this.persona,
});

@override
List<Object?> get props => [hunting, username, persona];
static People fromSnapshot(DocumentSnapshot snapshot) {
People people = People(
hunting: snapshot['hunting'],
username: snapshot['username'],
persona: snapshot['persona'],
);
return people;
}

Map<String, dynamic> toMap() {
return {
'hunter': hunting,
'username': username,
'persona': persona,
};
}
}

感谢您的帮助!

最佳答案

Iterable<E>.firstWhere 的签名是:

E firstWhere(bool test(E element), {E orElse()?})

Iterable<E>.firstWhere必须返回E 。它无法返回 E? 。如果E不可为 null,则 .firstWhere无法返回null 。正如 Dart Null Safety FAQ 所解释的,如果你想返回null来自.firstWhere ,您应该使用 firstWhereOrNull extension method来自 package:collection .

但是,您的searchPeople方法被声明返回 Future<People>不是 Future<People?> 。即使您使用 firstWhereOrNull ,你的searchPeople函数无法合法返回 null反正。因此,您需要另外执行以下操作之一:

  • 更改 searchPeople 的返回类型(以及所有基类中)。
  • 选择一些非空值来返回而不是 null .
  • 引发异常。

关于 flutter |未处理的异常 : Bad state: No element using 'firstWhere' and 'orElse' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74586347/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com