是否可以在颤动的函数中使用小吃店?
Posted
技术标签:
【中文标题】是否可以在颤动的函数中使用小吃店?【英文标题】: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),),
),
),
【问题讨论】:
我认为您应该只使用像 Flushbar 或 flash 这样的包,而不必担心脚手架上下文。 @hiwa,Flushbar 很棒而且很简单,作为答案,我会支持你的答案 我将其发布为答案here。 【参考方案1】:请参阅上面@Hiwa Jala 的回答。使用 Flushbar 或 Flash 扩展。
由于其简单性,我个人使用了 Flushbar。
【讨论】:
以上是关于是否可以在颤动的函数中使用小吃店?的主要内容,如果未能解决你的问题,请参考以下文章