[英]how to solve this problem for passing arguments in flutter?
我想將 2 arguments 從 'getCodePage' 傳遞到 'MainPage' 然后我有這個錯誤。 這是我的 getCodePage 我通過 arguments 的部分:
onTap: (){
final String NumID = ModalRoute.of(context).settings.arguments.toString();
final SmsCode = _controller.text;
final IDNum = NumID.toString();
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) {
final args = {
'rof' : resaultOfFeture,
'idNum' : IDNum,
};
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: args
),
));
}else{
final snackBar1 = SnackBar(content: Text('کد اشتباه وارد شده',
textAlign: TextAlign.center,
style: TextStyle(
color: Colors.white,
fontFamily: "IranSans",
fontSize: 18
),
),
);
ScaffoldMessenger.of(context).showSnackBar(snackBar1);
}
});
},
當我想將我的 arguments 作為 object 時,這是我的主頁:
final logedUser = ModalRoute.of(context).settings.arguments;
final data = logedUser['rof'];
然后我在這里有那個錯誤: 運算符'[]'沒有為類型'對象'定義 flutter 錯誤
嘗試在didChangeDependencies
中初始化您傳遞給MainPage
的 arguments
像這樣的東西
MainPage.dart
class MainPage extends StatefulWidget {
static const route = "/main-page";
@override
_MainPageState createState() => _MainPageState();
}
class _MainPageState extends State<MainPage> {
var args;
var data;
@override
void didChangeDependencies() async {
if (args != ModalRoute.of(context).settings.arguments) {
args = ModalRoute.of(context).settings.arguments;
data = args["rof"];
}
super.didChangeDependencies();
}
@override
Widget build(BuildContext context) {
...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.