Getter 没有为 class 定义。我在这里做错了什么?
Getter isn't defined for the class. What am i doing wrong here?
我正在学习使用 Flutter 构建我的第一个登录系统的教程。我偶然发现了一个我无法解决的 getter 错误。
在我重构代码以将 auth 部分移动到它们自己的文件之前,一切正常。
这是有问题的代码:
abstract class BaseAuth {
Future<String> signInWithEmailAndPassword(String email, String password);
}
class Auth implements BaseAuth {
Future<String> signInWithEmailAndPassword(String email, String password) async {
FirebaseUser user = (await
FirebaseAuth.instance.signInWithEmailAndPassword(
email: email,
password: password
)).user;
return user.uid;
}
}
以下是我尝试使用它的方法:
class LoginPage extends StatefulWidget {
LoginPage({this.auth});
final BaseAuth auth;
@override
State<StatefulWidget> createState() => _LoginPageState();
}
enum FormType {
login,
register
}
...
class _LoginPageState extends State<StatefulWidget> {
final formKey = GlobalKey<FormState>();
String _email;
String _password;
FormType _formType = FormType.login;
void validateAndSubmit() async {
if (validateAndSave()) {
try {
if (_formType == FormType.login) {
String userID = await widget.auth.singInWithEmailAndPassword(_email,_password);
print('Signed in as $userID');
} ...
} catch(e) {
print('Error: $e');
}
}
}
...
}
这是我收到的错误信息:
"The getter 'auth' isn't defined for the class StatefulWidget".
教程中的代码运行良好。
我一直在寻找我们的代码库之间的差异,但对我来说没有什么不合适的地方。也许有人可以帮助改进者?
class _LoginPageState extends State<StatefulWidget> {
应该是
class _LoginPageState extends State<LoginPage> {
我正在学习使用 Flutter 构建我的第一个登录系统的教程。我偶然发现了一个我无法解决的 getter 错误。
在我重构代码以将 auth 部分移动到它们自己的文件之前,一切正常。
这是有问题的代码:
abstract class BaseAuth {
Future<String> signInWithEmailAndPassword(String email, String password);
}
class Auth implements BaseAuth {
Future<String> signInWithEmailAndPassword(String email, String password) async {
FirebaseUser user = (await
FirebaseAuth.instance.signInWithEmailAndPassword(
email: email,
password: password
)).user;
return user.uid;
}
}
以下是我尝试使用它的方法:
class LoginPage extends StatefulWidget {
LoginPage({this.auth});
final BaseAuth auth;
@override
State<StatefulWidget> createState() => _LoginPageState();
}
enum FormType {
login,
register
}
...
class _LoginPageState extends State<StatefulWidget> {
final formKey = GlobalKey<FormState>();
String _email;
String _password;
FormType _formType = FormType.login;
void validateAndSubmit() async {
if (validateAndSave()) {
try {
if (_formType == FormType.login) {
String userID = await widget.auth.singInWithEmailAndPassword(_email,_password);
print('Signed in as $userID');
} ...
} catch(e) {
print('Error: $e');
}
}
}
...
}
这是我收到的错误信息: "The getter 'auth' isn't defined for the class StatefulWidget".
教程中的代码运行良好。
我一直在寻找我们的代码库之间的差异,但对我来说没有什么不合适的地方。也许有人可以帮助改进者?
class _LoginPageState extends State<StatefulWidget> {
应该是
class _LoginPageState extends State<LoginPage> {