【发布时间】:2021-07-12 08:16:13
【问题描述】:
“我的应用”中有一个注册部分,其中包含一个主页和 3 个小部件表单。表格 1 和表格 2 包含一些 TextFormField,在最后一页,我从用户那里得到了一些图片。用户,输入数据并点击主页上的下一步按钮,现在应该验证输入的数据,如果数据没有任何问题,最后将输入数据的请求发送到服务器和step++并转到下一个表格。
我的问题是如何完成这项工作并在主页上获取子表单数据?
【问题讨论】:
“我的应用”中有一个注册部分,其中包含一个主页和 3 个小部件表单。表格 1 和表格 2 包含一些 TextFormField,在最后一页,我从用户那里得到了一些图片。用户,输入数据并点击主页上的下一步按钮,现在应该验证输入的数据,如果数据没有任何问题,最后将输入数据的请求发送到服务器和step++并转到下一个表格。
我的问题是如何完成这项工作并在主页上获取子表单数据?
【问题讨论】:
您可以使用回调函数。例如 void 函数(字符串)
class MainScreen extends StatelessWidget {
const MainScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
body: Column(
children: [
YourFormWidget(
onFirstNameChanged: (String firstName) {
print(firstName);
},
onLastNameChanged: (String lastName) {
print(lastName);
},
),
TextButton(
onPressed: () {},
child: Text("Submit"),
)
],
),
);
}
}
class YourFormWidget extends StatelessWidget {
const YourFormWidget({
Key? key,
required this.onFirstNameChanged,
required this.onLastNameChanged,
}) : super(key: key);
final void Function(String) onFirstNameChanged;
final void Function(String) onLastNameChanged;
@override
Widget build(BuildContext context) {
return Column(
children: [
TextField(onChanged: onFirstNameChanged),
TextField(onChanged: onFirstNameChanged),
],
);
}
}
【讨论】:
这称为状态管理。 https://flutter.dev/docs/development/data-and-backend/state-mgmt/options
我建议提供者。在主页中创建对象并在其中一个子 Widget 中更新。
提供者https://flutter.dev/docs/development/data-and-backend/state-mgmt/simple的示例
【讨论】: