在 firestore 中获取 uid 的 null 安全 "required" 的其他解决方案是什么?
what is other solution for "required" in null safety to get uid in firestore?
我正在使用新版本从旧版本学习 flutter。所以,我多次遇到空安全问题。
我在 database.dart
文件中有这样的代码:
import 'package:cloud_firestore/cloud_firestore.dart';
class DatabaseService {
final String uid;
DatabaseService({required this.uid});
}
它有效,当我添加“必需”时没有出现错误,但我不能在 home.dart
文件中使用 DatabaseService()
参数:
class Home extends StatelessWidget {
Home({Key? key}) : super(key: key);
final AuthService _auth = AuthService();
@override
Widget build(BuildContext context) {
return StreamProvider<QuerySnapshot?>.value(
initialData: null,
value: DatabaseService().brews,
child: Scaffold(),
}
}
home.dart
中的错误是
The named parameter 'uid' is required, but there's no corresponding argument.
Try adding the required argument.
而且,如果我不在 DatabaseService({this.uid})
中添加 required 那么错误将出现在 database.dart
The parameter 'uid' can't have a value of 'null' because of its type, but the implicit default value is 'null'.
Try adding either an explicit non-'null' default value or the 'required' modifier.
那我如何在其他文件中使用 DatabaseService()
?
如果不需要 uid,则使用 null 安全运算符
import 'package:cloud_firestore/cloud_firestore.dart';
class DatabaseService {
final String? uid;
DatabaseService({this.uid});
}
在 nullsafety 中有 2 种类型,称为 non-null 和 nullable
- 非空是指你的变量不能为空,所以你必须给它赋值
- Nullable 是你的变量可以为空的地方,它可以 运行 没有任何值(基本上它不需要任何值)
在你的情况下,你可以尝试使用这个 '?'使其可为空的符号
就像这样:
class DatabaseService {
final String? uid;
DatabaseService({this.uid});
}
并且你不需要在它前面放required,因为它允许为空
希望对您有所帮助!抱歉我的解释不当
我正在使用新版本从旧版本学习 flutter。所以,我多次遇到空安全问题。
我在 database.dart
文件中有这样的代码:
import 'package:cloud_firestore/cloud_firestore.dart';
class DatabaseService {
final String uid;
DatabaseService({required this.uid});
}
它有效,当我添加“必需”时没有出现错误,但我不能在 home.dart
文件中使用 DatabaseService()
参数:
class Home extends StatelessWidget {
Home({Key? key}) : super(key: key);
final AuthService _auth = AuthService();
@override
Widget build(BuildContext context) {
return StreamProvider<QuerySnapshot?>.value(
initialData: null,
value: DatabaseService().brews,
child: Scaffold(),
}
}
home.dart
中的错误是
The named parameter 'uid' is required, but there's no corresponding argument.
Try adding the required argument.
而且,如果我不在 DatabaseService({this.uid})
中添加 required 那么错误将出现在 database.dart
The parameter 'uid' can't have a value of 'null' because of its type, but the implicit default value is 'null'.
Try adding either an explicit non-'null' default value or the 'required' modifier.
那我如何在其他文件中使用 DatabaseService()
?
如果不需要 uid,则使用 null 安全运算符
import 'package:cloud_firestore/cloud_firestore.dart';
class DatabaseService {
final String? uid;
DatabaseService({this.uid});
}
在 nullsafety 中有 2 种类型,称为 non-null 和 nullable
- 非空是指你的变量不能为空,所以你必须给它赋值
- Nullable 是你的变量可以为空的地方,它可以 运行 没有任何值(基本上它不需要任何值)
在你的情况下,你可以尝试使用这个 '?'使其可为空的符号
就像这样:
class DatabaseService {
final String? uid;
DatabaseService({this.uid});
}
并且你不需要在它前面放required,因为它允许为空
希望对您有所帮助!抱歉我的解释不当