Загрузите 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();
},
2 ответа
Решение
Это решение сработало для меня. Прикованный.closed
а также .then
в закусочную
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'),
))
.closed
.then((value) => 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();
},