我需要在app上有一个注册表,它是相当长的,所以我如何将注册分成2个屏幕,这样一旦你完成了第一个屏幕,你就会进入下一个屏幕,当你点击下一步按钮。在下一个屏幕上,所有的表单变量都应该在上一页中可用。在第二页上,我想将所有变量保存到Google Firebase。
有什么建议可以实现这一点吗?
提前谢谢。
发布于 2020-01-13 02:45:48
这是一个非常简单的示例,说明了如何将TextFormFields中的数据从一个视图传递到下一个视图:
class FirstFormPage extends StatefulWidget {
@override
_FirstFormPageState createState() => _FirstFormPageState();
}
class _FirstFormPageState extends State<FirstFormPage> {
TextEditingController _firstFormFieldController = TextEditingController();
TextEditingController _secondFormFieldController = TextEditingController();
TextEditingController _thirdFormFieldController = TextEditingController();
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
TextFormField(
controller: _firstFormFieldController,
),
TextFormField(
controller: _secondFormFieldController,
),
TextFormField(
controller: _thirdFormFieldController,
),
RaisedButton(
child: Text('Next'),
onPressed: () => Navigator.of(context).push(MaterialPageRoute(
builder: (context) {
return SecondFormPage([
_firstFormFieldController.text,
_secondFormFieldController.text,
_thirdFormFieldController.text,
]);
}
)),
)
],
);
}
}
class SecondFormPage extends StatefulWidget {
final List<String> previousFields;
SecondFormPage(this.previousFields);
@override
_SecondFormPageState createState() => _SecondFormPageState();
}
class _SecondFormPageState extends State<SecondFormPage> {
TextEditingController _firstFormFieldController = TextEditingController();
TextEditingController _secondFormFieldController = TextEditingController();
TextEditingController _thirdFormFieldController = TextEditingController();
List<String> allData = [];
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
TextFormField(
controller: _firstFormFieldController,
),
TextFormField(
controller: _secondFormFieldController,
),
TextFormField(
controller: _thirdFormFieldController,
),
RaisedButton(
child: Text('Next'),
onPressed: submitData,
)
],
);
}
void submitData(){
allData.addAll(widget.previousFields);
allData.addAll([
_firstFormFieldController.text,
_secondFormFieldController.text,
_thirdFormFieldController.text,
]);
// Submit your data
}
}https://stackoverflow.com/questions/59706862
复制相似问题