我有这三屏注册表格,第一屏要求填写邮箱、密码和确认密码,第二屏要求提供其他用户信息,包括姓名、电话号码和地址,最后一个是一次性密码确认页面
现在我想将输入到第一个屏幕的所有数据调用到第二个屏幕上,我将在将数据保存到数据库之前确认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,
});
}
Bellow 是我的控制器:
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);
}
现在在完整的个人资料屏幕“第二屏幕”上,我尝试显示在第一个屏幕上填充的数据“电子邮件地址”以确保它实际上保存了用户输入,但是当输入名称“电子邮件或电子邮件文本编辑控制器”时,我的 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..
...
我得到的错误:
<块引用>getter 'email' 没有为类型 'List' 定义。尝试 导入定义“电子邮件”的库,将名称更正为 现有 getter 的名称,或定义名为的 getter 或字段 “电子邮件”。
我想我叫错了或者什么
我已经看到很多关于相同问题的问题,但大多数都没有确定的答案,其次我不想将数据作为参数传递
答案 0 :(得分:1)
您在控制器中声明了错误的对象。 应该是这样的:
Registration registration;
然后在第一个注册页面上:
registrationController.registration.email = emailTextEditingController.text;
registrationController.registration.password = passwordTextEditingController.text;
您的错误是您声明了一个空数组,而不是该类的对象。