我正在构建一个包含长格式的应用。因此,我决定将其分为几个步骤。 每个步骤都是一个包含formFields的小部件。
所以我会有这样的东西:
int _currentStep = 0;
final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
String _firstname;
String _lastname;
String _city;
List<Widget> formGroups = [
FormGroup1(),
FormGroup2(),
FormGroup3(),
];
表单将绑定到这样的状态
Form(
key: _formKey,
child: formGroups[_currentStep],
),
我的想法是能够导航到下一个这样的小部件
void goToNext() {
setState(() {
if (_currentStep < formGroups.length - 1) {
_currentStep += 1;
}
});
}
首先,这是一个好习惯吗? 如何获取主窗口小部件以从子窗口小部件获取输入? 例如,如果FormGroup2包含用于设置_lastname的输入字段,该如何在表单级别使用它?
谢谢您的帮助。
答案 0 :(得分:0)
每当您希望父窗口小部件从子窗口小部件获取输入时,请始终在父窗口使用NotificationListener
并传递Notification
,其中包含来自子窗口的数据。
当用户滑动到最后一页并且仍在尝试滑动时,许多{@ {1}}这样的颤动小部件都会使用此技术。
在用例中,您可以将值通知从子Widget传递到Form Widget。
以下是一个演示,供您参考Run on dartpad
以下是一个有效的代码,演示了此小部件的使用:
DefaultTabController
我希望这会有所帮助,如有任何疑问,请发表评论。