Class 颤振中两类变量的传递
我在flatter中创建注册和登录页面,并且面临一个问题,因为我想使用main.dart文件中class\u MyHomePage中声明的相同变量“email”和“password” 转到signup.dart文件中的另一个类SignupPage 我已经导入了这些文件,但无法在两个类中使用这些值Class 颤振中两类变量的传递,class,variables,flutter,dart,Class,Variables,Flutter,Dart,我在flatter中创建注册和登录页面,并且面临一个问题,因为我想使用main.dart文件中class\u MyHomePage中声明的相同变量“email”和“password” 转到signup.dart文件中的另一个类SignupPage 我已经导入了这些文件,但无法在两个类中使用这些值 class _MyHomePageState extends State<MyHomePage> { int _counter = 0; String _email = ''; Stri
class _MyHomePageState extends State<MyHomePage> {
int _counter = 0;
String _email = '';
String _password = '';
final formKey = new GlobalKey<FormState>();
FormType _formType = FormType.login;
bool validateAndSave() {
final form = formKey.currentState;
if (form.validate()) {
form.save();
return true;
// print('Form is Valid Email: $_email, Password: $_password');
}
return false;
}
class\u MyHomePageState扩展状态{
int _计数器=0;
字符串_email='';
字符串_password='';
final formKey=new GlobalKey();
FormType _FormType=FormType.login;
bool validateAndSave(){
最终形式=formKey.currentState;
if(form.validate()){
form.save();
返回true;
//打印('表格为有效电子邮件:$\\电子邮件,密码:$\\密码');
}
返回false;
}
您可以通过以下方式在屏幕上导航时传递数据
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SignUp(email: emailvariable,pass: passvariable),
),
通过以下方式,您可以接收数据
class SignUp extends StatefulWidget {
final email;
final pass;
SignUp({Key key,this.email,this.pass}) : super(key: key);
@override
_SignUpState createState() => _SignUpState();
}
现在,在状态小部件中,您可以访问电子邮件并将变量作为
widget.pass and widget.email
您可以通过以下方式在屏幕上导航时传递数据
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => SignUp(email: emailvariable,pass: passvariable),
),
通过以下方式,您可以接收数据
class SignUp extends StatefulWidget {
final email;
final pass;
SignUp({Key key,this.email,this.pass}) : super(key: key);
@override
_SignUpState createState() => _SignUpState();
}
现在,在状态小部件中,您可以访问电子邮件并将变量作为
widget.pass and widget.email
这有两种方法
通过类构造函数传递值
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Register(email: email, pass: pass),
),
如果你不想来回走动,你可以用这个
就在第二页中,像这样使用
class Register extends StatefulWidget {
Register({Key key, this.email, this.pass});
final String email;
final String pass;
@override
_RegisterState createState() => _RegisterState();
}
class _RegisterState extends State<Register> {
@override
Widget build(BuildContext context) {
print(widget.email);
print(widget.pass);
// to use state class values you need to use the widget as the parent class object
return Container(
);
}
}
在路由到另一页之前,将值存储在全局范围中
如果必须多次路由,甚至需要进一步使用这些值,则在路由到另一个页面并访问该页面之前,将这些值存储在全局文件中
归档
环球飞镖
要访问这些值
这有两种方法
通过类构造函数传递值
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => Register(email: email, pass: pass),
),
如果你不想来回走动,你可以用这个
就在第二页中,像这样使用
class Register extends StatefulWidget {
Register({Key key, this.email, this.pass});
final String email;
final String pass;
@override
_RegisterState createState() => _RegisterState();
}
class _RegisterState extends State<Register> {
@override
Widget build(BuildContext context) {
print(widget.email);
print(widget.pass);
// to use state class values you need to use the widget as the parent class object
return Container(
);
}
}
在路由到另一页之前,将值存储在全局范围中
如果必须多次路由,甚至需要进一步使用这些值,则在路由到另一个页面并访问该页面之前,将这些值存储在全局文件中
归档
环球飞镖
要访问这些值
如果其他答案不能解决您的问题,您可以使用Flitter提供的InheritedModel小部件。它允许您在深度嵌套的小部件之间共享数据。文档很好,甚至有来自Flitter团队的视频解释如何使用它:如果其他答案不能解决您的问题,您可以使用Inherit由Flatter提供的edModel widget。它允许您在深度嵌套的widget之间共享数据。文档很好,甚至有来自Flatter团队的视频解释如何使用它:第一个解决方案将产生相同的问题,即多次定义相同的变量,因此我选择第二个解决方案,但我得到了此错误:错误:名称“\u emailTest”正通过前缀“global”引用,但未在使用该前缀导入的任何库中定义。(未定义的\u前缀位于[flatter\u app\u service]lib/main.dart:136)设置全局变量不是一个好的做法。您可以通过类构造函数发送它们,或者使用状态管理的形式(ScopedModel、Redux、BLoC等)这使您可以轻松地在整个应用程序中共享值,而无需太多混乱。变量名称不应包括u因为它使dart中的值变为私有,请尝试删除下划线@Alexalit。第一个解决方案将产生相同的问题,即多次定义相同的变量,因此我选择第二个解决方案,但我得到以下错误:错误:名称_“emailTest”是通过前缀“global”引用的,但没有在使用该前缀导入的任何库中定义。(在[flatter_app_service]lib/main.dart:136处未定义的_prefixed_name)设置全局变量不是一个好做法。您可以通过类构造函数或使用状态管理的形式发送它们(ScopedModel、Redux、BLoC等)这让你可以轻松地在整个应用程序中共享价值,而无需太多混乱。变量名称不应包括u,因为它会使dart中的值变为私有,请尝试删除下划线@AlexAliI我猜这些小部件是独立的,但如果这是首选方式,请尝试一下!我猜这些小部件是独立的,但如果这是首选方式,请给出这是一次机会!