簡體   English   中英

我的“If”語句在 dart/flutter 中不起作用

[英]My "If" statement doesn't work in dart/flutter

我在 futureBuilder 中有一個 if 語句,它沒有返回任何東西。 另外,我的 futureBuilder 沒有 model 並且您不應該為它定義 model 。 當我的代碼為真時,它會發送一個手機號碼的代碼,然后它不會導航到另一個頁面。 這里是:

onTap: () {
                                      final ID = _controller.text;
                                      final url = "https://************/api/User/CheckHasUser?id=$ID";
                                      Future fetchLogin() async {
                                        final response = await http.get(url);
                                        if (response.statusCode == 200) {
                                          return jsonDecode(response.body);
                                        } else {
                                          throw Exception('Failed');
                                        }
                                      }
                                      var Id = ID != null ? true : false;
                                      FutureBuilder(
                                        future: fetchLogin(),
                                        builder: (context, snapshot){
                                          if(Id == true){
                                            Navigator.of(context).push(MaterialPageRoute(
                                              builder: (context) => getCodePage(),
                                            ));
                                          }else{
                                            print('s');
                                          }
                                        },
                                      );
                                    },

FutureBuilder 是一個小部件,用於對未來結果做出反應或在等待時顯示加載 animation。 它的 builder-Function 應該根據快照返回一個 Widget。 但是您的 FutureBuilder 不在 Widget 樹中的任何位置,因此它沒有被構建並且什么也不做。 如果您只想對 Future 的完成及其結果做出反應,請改用fetchLogin().then(...)

編輯:您沒有 FutureBuilder 的代碼:

    final ID = _controller.text;
    final url = "https://************/api/User/CheckHasUser?id=$ID";
    Future fetchLogin() async {
        final response = await http.get(url);
        if (response.statusCode == 200) {
           return jsonDecode(response.body);
        } else {
           throw Exception('Failed');
        }
   }
   var Id = ID != null;
   fetchLogin().then((resultOfFuture){
     if(Id){
        Navigator.of(context).push(
           MaterialPageRoute(
              builder: (context) => getCodePage(),
           ));
        }else{
           print('s');
        }
     }
   );

我希望這可以進一步幫助你:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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