如果我使用:
uid: user!.uid,
并尝试单击我的应用程序中的发布按钮,发生了此错误:
Exception has occurred. _TypeError (Null check operator used on a null value)
如果我尝试他们在调试控制台中所说的内容
: Error: Property 'uid' cannot be accessed on 'UserModel?' because it is potentially null.
lib/…/controller/post_controller.dart:106
- 'UserModel' is from 'package:studyv/models/user_model.dart' ('lib/models/user_model.dart').
package:studyv/models/user_model.dart:1
Try accessing using ?. instead.
uid: user.uid,
^^^
并写下来
uid: user?.uid,
发生了这个错误?:
The argument type 'String?' can't be assigned to the parameter type 'String'.
我会哭!!当我尝试解决它时我应该做什么我最终会在我的应用程序中犯更多错误如果有人知道该怎么做请帮忙!!!!!
我认为你需要了解 Dart 的空安全性是如何工作的,为此我建议你阅读 docs。
您遇到的第一个错误是因为您试图从空 UserModel 对象中读取“uid”属性。
发生第二个错误是因为您尝试使用 UserModel 的 String 类型的“uid”设置“uid”(其类型为“String” - 意味着它不能为空)? (可以为空)。
String? canBeNull;
String cannotBeNull;
// This works because String? let's you take null values
canBeNull = null;
// This WILL FAIL because: A value of type 'Null' can't be assigned to a variable of type 'String'.
cannotBeNull = null;
// This will work because if 'canBeNull' is not null, its value will be used, otherwise it will get 'defaultValue'
cannotBeNull = canBeNull ?? 'defaultValue';
您能做的最好的事情就是在进行归因之前检查“user.uid!= null”是否为空;
其他选择(不理想)是这样做:
uid: user?.uid ?? 'some fallback value'
这只会让你的编译错误消失,但它不会解决你的问题,因为显然你的 UserModel 正在获取空值。