android - 颤振吸气剂问题
问题描述
我的代码有问题
import 'package:cloud_firestore/cloud_firestore.dart';
class UserModel {
static const NAME = 'name';
static const EMAIL = 'email';
static const ID = 'id';
String _name;
String _email;
String _id;
//getters
String get name => _name;
String get email => _email;
String get id => _id;
UserModel.fromSnapshot(DocumentSnapshot snapshot){
_name = snapshot.data[NAME];
_email = snapshot.data[EMAIL];
_id = snapshot.data[ID];
}
}
我收到了这个错误。
必须初始化不可为空的实例字段“_email”。尝试添加初始化表达式,或在此构造函数中添加字段初始化程序,或将其标记为“延迟”。dartnot_initialized_non_nullable_instance_field 必须初始化不可为空的实例字段“_name”。尝试添加初始化表达式,或在此构造函数中添加字段初始化程序,或将其标记为“延迟”。dartnot_initialized_non_nullable_instance_field 必须初始化不可为空的实例字段“_id”。尝试添加初始化表达式,或在此构造函数中添加字段初始化程序,或将其标记为“延迟”。dartnot_initialized_non_nullable_instance_field
错误请有人帮忙。
解决方案
您可以通过 2 种方式修复错误:
选项1:
确保字段不被分配到null
import 'package:cloud_firestore/cloud_firestore.dart';
class UserModel {
static const NAME = 'name';
static const EMAIL = 'email';
static const ID = 'id';
String _name = NAME;
String _email = EMAIL;
String _id = ID;
//getters
String get name => _name;
String get email => _email;
String get id => _id;
UserModel.fromSnapshot(DocumentSnapshot snapshot){
_name = snapshot?.data[NAME] ?? "Predefined Name";
_email = snapshot?.data[EMAIL] ?? "Predefined email";
_id = snapshot?.data[ID] ?? "Predefined Data";
}
}
选项 2:
将字段声明为可为空,以便将来可以将它们分配为空
import 'package:cloud_firestore/cloud_firestore.dart';
class UserModel {
static const NAME = 'name';
static const EMAIL = 'email';
static const ID = 'id';
String? _name = NAME;
String? _email = EMAIL;
String? _id = ID;
//getters
String? get name => _name;
String? get email => _email;
String? get id => _id;
UserModel.fromSnapshot(DocumentSnapshot snapshot){
_name = snapshot?.data[NAME]; //snapshot or snapshot.data[NAME] may be null
_email = snapshot?.data[EMAIL];
_id = snapshot?.data[ID];
}
}
在您的代码中,_name
是不可为空的字段,这意味着它需要使用某个值进行初始化,并且将来也不能将其分配给 null 或任何可以为 null 的变量。否则_name
应明确声明为空。修复可以确保满足此规则
推荐阅读
- c - 如何确定结构的成员是否已设置?
- c# - 如何将 IConfiguration 绑定到在构造函数中具有参数的类
- azure-devops - 使用 Azure DevOps 恢复 EfCore 迁移
- javascript - 为什么 querySelectorAll 不选择所有(“li”)元素?
- django - 如何只允许管理员(或某些用户)在 Django 中编辑页面?
- node.js - 为什么要在 node/express 中的 websocket 服务器中挂接 httpserver?
- java - 如何在通用列表中读取 JSON
- javascript - 如何获取函数中单元格的先前值
- android - Android Accessibility 服务同时与多个开关交互
- azure - 如何自动将数据从 CSV 文件加载到 Azure SQL