将表单传递给多个小部件

时间:2019-12-16 17:12:06

标签: flutter

我正在构建一个包含长格式的应用。因此,我决定将其分为几个步骤。 每个步骤都是一个包含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的输入字段,该如何在表单级别使用它?

谢谢您的帮助。

1 个答案:

答案 0 :(得分:0)

每当您希望父窗口小部件从子窗口小部件获取输入时,请始终在父窗口使用NotificationListener并传递Notification,其中包含来自子窗口的数据。

当用户滑动到最后一页并且仍在尝试滑动时,许多{@ {1}}这样的颤动小部件都会使用此技术。

在用例中,您可以将值通知从子Widget传递到Form Widget。

以下是一个演示,供您参考Run on dartpad

以下是一个有效的代码,演示了此小部件的使用:

DefaultTabController

我希望这会有所帮助,如有任何疑问,请发表评论。