簡體   English   中英

如何解決在 flutter 中通過 arguments 的問題?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM