Поэтому я хочу иметь возможность сохранить текст из текстового контроллера, который пользователь ввел в общие настройки. Однако я хочу одновременно перейти и на следующую страницу.
Так:
- Сохранить текст в общих настройках
Перейти на следующую страницу
final _text = TextEditingController(); _nameSaver() async { SharedPreferences prefs = await SharedPreferences.getInstance(); prefs.setString('my_string_key', _text.text); } FooterRaisedButton( "Next", () => (_text.text.isEmpty) ? null : Navigator.pushNamed(context, '/onboardMarket'), "#0087a8")
Я не знаю, как вызвать функцию, которая сохраняет имя в то же время, когда нажатая кнопка перейдет на следующую страницу
2 ответа
Удалите жирную стрелку (=>
) и примените ее следующим образом:
FooterRaisedButton(
"Next",
() async {
if (_text.text.isEmpty)
return; // return if it is empty
await nameSaver(); // else save it here
Navigator.pushNamed(context, '/onboardMarket'); // once done, navigate
}
);
Просто чтобы дать вам основную идею,
// only one statement can be executed using fat notation
RaisedButton(onPressed: () => _calculate(1));
// here you can perform as many as you need.
RaisedButton(onPressed: () {
_calculate(1);
_printScreen();
});
Попробуйте этот код, он должен работать:
Код:
final _text = TextEditingController();
_nameSaver() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('my_string_key', _text.text);
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: RaisedButton(
child: Text("Next"),
onPressed: (){
if(_text.text.isEmpty){
print("Cannot use empty text");
}
else {
_nameSaver();
Navigator.pushNamed(context, '/onboardMarket');
}
},
),
);
}
Похожие вопросы
Новые вопросы
flutter
Flutter - это набор средств разработки пользовательского интерфейса с открытым исходным кодом, созданный Google. Он используется для разработки приложений для Android, iOS, Linux, Mac, Windows, Google Fuchsia и Интернета из единой кодовой базы. Приложения Flutter написаны на языке Dart.