我想将 2 个参数传递给我的 MainPage() 这是我的代码:
final String NumID = ModalRoute.of(context).settings.arguments.toString();
final IDNum = NumID.toString();
final SmsCode = _controller.text;
final url = 'https://*******/api/User/$IDNum?sms=$SmsCode';
Future fetchSMS() async {
final response = await http.get(url);
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else {
throw Exception('Failed');
}
}
fetchSMS().then((resaultOfFeture) {
if(resaultOfFeture == true){
final snackBar = SnackBar(content: Text('با موفقیت وارد شدید',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontFamily: "IranSans",
fontSize: 18
),
),
);
ScaffoldMessenger.of(context).showSnackBar(snackBar);
Navigator.of(context).push(MaterialPageRoute(
builder: (context) => MainPage(),
settings: RouteSettings(
arguments: resaultOfFeture,
),
));
除了 resaultOfFeture,我也想传递 NumID。 有什么想法吗?
答案 0 :(得分:0)
您可以将地图作为参数传递:
var args= {'resaultOfFeture': resaultOfFeture ,'anotherThing':'otherValue'};
settings: RouteSettings(arguments: args),
在另一个屏幕上,您可以获取值:
var data = ModalRoute.of(context).settings.arguments;
var result = data['resaultOfFeture'];
答案 1 :(得分:0)
Navigator 的 'arguments' 参数接受一个对象,因此您可以传递一个包含 resaultOfFeture 和 NumID 的对象,例如,
arguments: {'res': resaultOfFeture, id: NumID ,}
或者你也可以定义一个包含这两个字段的类作为它的成员,然后传递这个对象。
在 MainPage 中,您可以使用 ModalRoute.of(context)!.settings.arguments