【问题标题】:Is it possible to use a snackbar inside a function in flutter?是否可以在颤动的函数中使用小吃店?
【发布时间】:2020-08-23 20:54:12
【问题描述】:

我的应用目前有一个密码重置页面。

按下按钮时,小部件会调用密码重置功能。我在Builder 中有重置按钮。我已经在onPressed 内测试了一个小吃店,它可以正常工作。但是,如果密码有错误,我希望能够在小吃栏中使用 Firebase 身份验证错误。但是当尝试调用snackbar 时仍然会出现脚手架上下文错误。我的代码如下。我没有放置完整的小部件树,因为它很长,但已经放下了我认为重要的部分。更新密码的代码运行良好,所以我认为那里没有任何拦截器。

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),),
                                ),
                              ),

【问题讨论】:

  • 我认为您应该只使用像 Flushbarflash 这样的包,而不必担心脚手架上下文。
  • @hiwa,Flushbar 很棒而且很简单,作为答案,我会支持你的答案
  • 我将其发布为答案here

标签: flutter dart snackbar


【解决方案1】:

请参阅上面@Hiwa Jala 的回答。使用 Flushbar 或 Flash 扩展。

由于其简单性,我个人使用了 Flushbar。

【讨论】:

    猜你喜欢
    • 2022-12-17
    • 2021-06-03
    • 2020-04-06
    • 2018-10-09
    • 2020-07-12
    • 2020-10-15
    • 2019-05-30
    • 2020-07-25
    • 1970-01-01
    相关资源
    最近更新 更多