如何解决在导航到登录页面之前加载SnackBar
我有一个注册表单,我试图使它先显示成功的SnackBar消息,然后再导航到登录页面。当我将其添加到if语句中时,它只会推送登录屏幕,而不会显示任何Snackbar消息
onPressed: () {
if (_formKey.currentState.validate()) {
Scaffold.of(context).showSnackBar(SnackBar(
content: Text('processing data'),));
User user = User(
fullName: fullName.text,phoneNumber: phoneNumber.text,password: password.text,);
final database = DatabaseProvider.db;
database.insert(user);
Scaffold.of(context).showSnackBar(SnackBar(
content: Text('registration successful'),));
Navigator.popAndPushNamed(context,Routes.home);
}
_formKey.currentState.save();
},
解决方法
您可以这样做:
onPressed: () async {
if (_formKey.currentState.validate()) {
await Scaffold.of(context).showSnackBar(SnackBar(
content: Text('processing data'),));
User user = User(
fullName: fullName.text,phoneNumber: phoneNumber.text,password: password.text,);
final database = DatabaseProvider.db;
await database.insert(user);
await Scaffold.of(context).showSnackBar(SnackBar(
content: Text('registration successful'),));
Navigator.popAndPushNamed(context,Routes.home);
}
_formKey.currentState.save();
},
,
此解决方案对我有用。将.closed
和.then
链接到小吃店
onPressed: () {
if (_formKey.currentState.validate()) {
Scaffold.of(context).showSnackBar(SnackBar(
content: Text('processing data'),));
User user = User(
fullName: fullName.text,);
final database = DatabaseProvider.db;
database.insert(user);
Scaffold.of(context)
.showSnackBar(SnackBar(
content: Text('registration successful'),))
.closed
.then((value) => Navigator.popAndPushNamed(
context,Routes.home));
}
_formKey.currentState.save();
},
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。