当用户在 Flutter 中输入凭据时,如何显示有效或无效的小吃栏?



当用户输入错误的凭据时,小吃栏应显示登录失败,右侧页面应显示已成功登录的小吃栏。 我已使用火力进行身份验证。

final _formKey = GlobalKey<FormState>();
TextEditingController _emailLoginFormTextEditingController = new TextEditingController();
TextEditingController _passwordLoginFormTextEditingController = new TextEditingController();
void initState() {
super.initState();
}
_signInUsingFirebase(String email, String password) {
FirebaseAuth firebaseAuth = FirebaseAuth.instance;
firebaseAuth.signInWithEmailAndPassword(email: email, password: password)
.then((AuthResult authResult) {
FirebaseUser user = authResult.user;
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => HomePage(email: email, userid: user.uid,),
));
}).catchError((error) {
debugPrint(error);
});
}
Widget _loginPageSaffoldBody(BuildContext context) {
return Form(
key: _formKey,
child: ListView(
padding: EdgeInsets.all(32),
children: <Widget>[
TextFormField(
controller: _emailLoginFormTextEditingController,
),
TextFormField(
controller: _passwordLoginFormTextEditingController,
),
RaisedButton(
onPressed: () {
// If statement is validating the input fields.
if (_formKey.currentState.validate()) {
_signInUsingFirebase(_emailLoginFormTextEditingController.text,
_passwordLoginFormTextEditingController.text);
Scaffold.of(context).showSnackBar(                          //Snackbar for Succesfull
SnackBar(
content: Text(
"Succesfull",
),
),
);
}
else{
Scaffold.of(context).showSnackBar(                        //Snackbar for unsuccesfull
SnackBar(
content: Text(
"Unsuccesfull",
),
),
);
}
},
child: Row(
mainAxisSize: MainAxisSize.min,
children: <Widget>[
Icon(
Icons.lock_open,
),
SizedBox(width: 4),
Text(
"Submit",
),
],
),
), // Submit Button
],
),
);
}

有点断章取义的问题我还想在用户输入凭据后保持登录状态,直到他们登录我想使用共享首选项,但无法理解是否可以提供任何链接可能会有所帮助 谢谢!

首先,请查看官方文档,其中Google本身提供了一些基本示例。

在您的情况下,请检索 Firebase 登录帐户的响应并将其推送到单独的服务,这将创建所需的小吃店。

对于保存登录 - 是的,您可以使用shared_preferences并保存两个单独的字符串 - 一个用于登录,一个用于密码。最初登录时,保存这些,当用户再次打开应用程序时,首先检查shared_preferences是否需要数据,如果存在 - 只需将其推送即可运行

随意问任何事情:3

声明一个键:- 在脚手架中key:_scaffoldKey,

声明final _scaffoldKey = GlobalKey<ScaffoldState>();

然后只需在.catchError((error)中初始化它并.then((AuthResult authResult)

final snackBar = SnackBar(content: Text("Succesfully LoggedIn"));
_scaffoldKey.currentState.showSnackBar(snackBar);