我有点卡住了。我想将数据从控制器传递到要在其他类中使用的电子邮件字符串。如何从控制器获取数据并将其传递给有状态的小部件?
import 'package:jptapp/core/constants/colors.dart';
class LoginPageEmail extends StatefulWidget {
String email;
@override
_LoginPageEmailState createState() => _LoginPageEmailState();
}
class _LoginPageEmailState extends State<LoginPageEmail> {
final myController = TextEditingController();
@override
void initState() {
super.initState();
}
@override
void dispose() {
myController.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return TextField(
controller: myController,
keyboardType: TextInputType.emailAddress,
decoration: InputDecoration(
fillColor: MyColors.loginFieldColor,
hintText: 'Email',
contentPadding: EdgeInsets.fromLTRB(20.0, 10.0, 20.0, 10.0),
border: OutlineInputBorder(borderRadius: BorderRadius.circular(32.0)),
),
);
}
}
答案 0 :(得分:1)
有多种方法可以在小部件之间传递数据,一种方法是在按下页面时在构造函数中接受数据。如果要将数据向下传递到堆栈,另一种方法是调用Navigator.of(context).pop()
时,它们是将数据传递到的可选参数结果。
选项1
Navigator.push(
context,
MaterialPageRoute(builder: (context) => ExamplePage(myController.text)),
);
//On the page that is accepting the data
class ExamplePage extends StatefulWidget {
String email;
ExamplePage(this.email)
@override
_CheckBoxPageState createState() => _CheckBoxPageState();
}
选项2
Navigator.pop(context, 'Data');
final result = await Navigator.push(
context,
MaterialPageRoute(builder: (context) => ExamplePage()),
);
希望您发现这对我有帮助,如果我有其他需要帮助的地方,也请注意处理状态管理的Provider Package软件包。