通过导航中的数据传递? [英] Passing data through navigation in flutter?
问题描述
我想传递一个手机号码以及一个字符串数据,以检查流是来自寄存器还是来自登录.那我该怎么办呢?请给我一些帮助!
I want to pass a mobile number as well as a string data to check that whether the flow is from register or it is from login. So how can I do that? please provide me some help!
register.dart
class _RegisterPageState extends State<RegisterPage> {
String execute_from = 'Register';
UserData _data = UserData();
submit() async {
if (this._formKey.currentState.validate()) {
_formKey.currentState.save();
print(_data.mobileNo);
// Navigator.pushNamed(context, '/otp', arguments: '${_data.mobileNo}'); /* here I want to pass
execute_from */
}
}
route.dart
class RouteGenerator {
static Route<dynamic> generateRoute(RouteSettings settings) {
switch (settings.name) {
case '/':
return MaterialPageRoute(builder: (_) => SplashScreenPage());
case '/register':
return MaterialPageRoute(builder: (_) => RegisterPage());
case '/login':
return MaterialPageRoute(builder: (_) => LoginPage());
case '/otp':
var mobNumber = settings.arguments as String; /* Is this right way to pass? */
var execute_from = settings.arguments as String;
return MaterialPageRoute(builder: (_) => OtpPage(mobNumber, execute_from));
case '/home':
return MaterialPageRoute(builder: (_) => HomePage());
default:
return MaterialPageRoute(
builder: (_) => Scaffold(
body: Center(
child: Text('No route defined for ${settings.name}')),
));
}
}
}
otp.dart
class OtpPage extends StatefulWidget {
final String mobNumber;
final String execute_from;
String formattedMobNo;
OtpPage(this.mobNumber, this.execute_from) {
formattedMobNo = this.mobNumber.replaceRange(2, 8, 'XXXXXX');
print(execute_from);
}
//........
}
请告诉我如何在otp页面上接收这些信息.
Please tell me how can I receive those on my otp page.
推荐答案
首先,您需要将参数
传递为如下数组,
First, you need to pass arguments
as array like below,
Navigator.pushNamed(context, '/otp', arguments: [
_data.mobileNo.toString(),
execute_from.toString()
]);
,然后在您的 RouteGenerator
类中,将接收格式转换为这样的List
and then in your RouteGenerator
class convert the receiving format to List like this
var mobNumber = settings.arguments as List;
然后简单地打印并检查您的值
and then simply print and check your value
print("==========>>mobile_number${mobNumber[0].toString()}");
print("==========>>mobile_number${mobNumber[1].toString()}");
在这里,您像这样导航到 OtpPage
and here you navigate to OtpPage
like this
MaterialPageRoute(builder: (_) => OtpPage(mobNumber: mobNumber[0].toString(), execute_from: mobNumber[1].toString()));
您的OTP页面应该是这样的
And your OTP page should be like this
class OtpPage extends StatefulWidget {
var mobNumber;
var execute_from;
OtpPage({this.mobNumber, this.execute_from});
@override
State<StatefulWidget> createState() {
// TODO: implement createState
return _selectionScreen();
}
}
class _selectionScreen extends State<OtpPage> {
@override
void initState() {
// TODO: implement initState
super.initState();
print("===================>>${widget.mobNumber}");
print("===================>>${widget.execute_from}");
}
@override
Widget build(BuildContext context) {
// TODO: implement build
return Scaffold();
}
}
我希望这会对您有所帮助
I hope this will help for you
这篇关于通过导航中的数据传递?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!