flutter - 颤振:GetX。使用 GetxController 将表单输入数据传递到下一页
问题描述
我有这 3 个屏幕注册表单,第一个屏幕请求电子邮件、密码和确认密码,然后第二个屏幕请求其他用户信息,包括姓名、电话号码和地址,而最后一个屏幕是 OTP 确认页面
现在我想将所有输入的数据调用到第一个屏幕到第二个屏幕上,我将在将数据保存到数据库之前确认 otp 是否正确。
这是注册模型:
class Registration {
int id;
String firstNmae;
String lastName;
String email;
String password;
int phone;
String address;
Registration({
this.id,
this.firstNmae,
this.lastName,
this.email,
this.password,
this.phone,
this.address,
});
}
这是我的控制器:
import 'package:get/get_state_manager/get_state_manager.dart';
import 'package:signuptest/models/RegistrationModel.dart';
class RegistrationController extends GetxController {
var registration = [];
}
在第一个注册屏幕上:
class SignUpForm extends StatefulWidget {
@override
_SignUpFormState createState() => _SignUpFormState();
}
class _SignUpFormState extends State<SignUpForm> {
final RegistrationController registrationController =
Get.find<RegistrationController>();
TextEditingController emailTextEditingController = TextEditingController();
TextEditingController passwordTextEditingController = TextEditingController();
TextEditingController cPasswordTextEditingController =
TextEditingController();
...
//First Screen Onpressed Function:
onpress: () {
if (_formKey.currentState.validate()) {
registrationController.registration.add(Registration(
email: emailTextEditingController.text,
password: passwordTextEditingController.text,
));
Navigator.pushNamed(context, CompleteProfileScreen.routeName);
}
现在在完整的配置文件屏幕“第二个屏幕”上,我尝试显示在第一个屏幕上填充的数据“电子邮件地址”,以确保它实际上保存了用户输入,但是当输入名称“电子邮件或 emailTextEditingController”时,我的 VScode 没有建议我的名字,当我直接输入它时,它下面会显示红线
我尝试将“电子邮件”作为 Text() 小部件的值传递:
class CompleteProfileForm extends StatefulWidget {
@override
_CompleteProfileFormState createState() => _CompleteProfileFormState();
}
class _CompleteProfileFormState extends State<CompleteProfileForm> {
final RegistrationController registrationController =
Get.put(RegistrationController());
...
@override
Widget build(BuildContext context) {
return Form(
child: Column(
children: [
Text(registrationController.registration.email), //I get a red line under the email which says..
...
我得到的错误是:
没有为“列表”类型定义吸气剂“电子邮件”。尝试导入定义“email”的库,将名称更正为现有 getter 的名称,或定义名为“email”的 getter 或字段
我想我叫错了什么。
我已经看到很多关于相同问题的问题,但其中大多数都没有确定的答案,其次我不想将数据作为论据传递
解决方案
您在控制器中声明对象错误。它应该是这样的:
Registration registration;
然后在第一个注册页面上:
registrationController.registration.email = emailTextEditingController.text;
registrationController.registration.password = passwordTextEditingController.text;
您的错误是您声明了一个空数组而不是该类的对象。
推荐阅读
- java - 即使指定的文件具有 ID3 信息,程序也无法从 MP3 文件中找到任何 ID3 信息
- xml - XPath 3.1(不是 XQuery)中有没有办法对结果进行排序?
- bluetooth - 如何在 Linux/Ubuntu 上关闭蓝牙配对?
- c# - 序列化和反序列化不适用于字典作为支持字段
- kubernetes - Kubernetes 更改挂载卷的权限
- algorithm - 该算法的复杂度如何为 O(n^2)?
- pandas - 根据时间戳删除几乎重复的行
- python - 如何解决 spyder 中 pyttsx3 模块的问题?
- javascript - 如何将事件监听器添加到 redux 表单
- asp.net-core - 如何查看 EntityFramework Core 生成的 SQL?