В настоящее время в моем приложении есть страница сброса пароля.
Виджет вызывает функцию сброса пароля при нажатии кнопки. У меня есть кнопка сброса внутри Builder
. У меня есть тестовая закусочная внутри onPressed
, и она работает нормально. Но я хочу иметь возможность использовать ошибку аутентификации Firebase внутри закусочной, если пароль содержит ошибку. но при попытке вызвать закусочную по-прежнему возникает ошибка контекста эшафота. мой код ниже. Я не помещаю полное дерево виджетов, так как оно довольно длинное, но я записал то, что я считаю важной частью. Код для обновления пароля работает нормально, поэтому я не думаю, что там есть какой-либо блокировщик.
class _PasswordBuyerState extends State<PasswordBuyer> {
final newpassword = TextEditingController();
final confirmpassword = TextEditingController();
final _PasswordformKey = GlobalKey<FormState>();
void SubmitBuyerPassword(password) async{
var user = await FirebaseAuth.instance.currentUser();
user.updatePassword(password).then((_){
print("Succesfully changed password");
final snackbar = SnackBar(content: Text("Password changes Successfully"));
Scaffold.of(context).showSnackBar(snackbar);
// this is not showing
Navigator.push(context,MaterialPageRoute(builder: (context) => EditProfileBuyer()));
}).catchError((error){
final snackbar = SnackBar(content: Text("Password can't be changed" + error.toString()));
Scaffold.of(context).showSnackBar(snackbar); // If the form is valid, display a Snackbar.
// this is not showing
print("Password can't be changed" + error.toString());
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
Далее в коде находится Builder
с кнопкой:
child:Builder(
builder: (context) => RaisedButton(
onPressed: (){
if (_PasswordformKey.currentState.validate()) {
if(newpassword.text == confirmpassword.text){
print('matching');
setState(() {
final snackbar = SnackBar(content: Text('password changing'));
Scaffold.of(context).showSnackBar(snackbar);
// the above snackbar works when tested
SubmitBuyerPassword(newpassword.text.toString());
});
} else if(newpassword.text != confirmpassword.text){
print('not matching');
}
};
},
color: Colors.blue[500],
child: Text('Submit',textAlign: TextAlign.center,style: TextStyle(color:Colors.white),),
),
),