1

Flutter で FutureBuilder を使用する際に問題があります。

FutureBuilder を使用すると、ページは継続的に再構築されます。

質問を書くために詳細なコードを省略しました。追加のコードを見たい場合は、コメントを残してください。

これを止めるには、どうすればいいですか?

Future<bool> initLikes() async {
    var list = await ApiProvider().post('/RoomSalesInfo/Select/Like', jsonEncode(
        {
          "userID" : GlobalProfile.loggedInUser.userID,
        }
    ));
      return true;
    } else {
      return false;
    }
  }

//This is the Code that I use in Widget build
FutureBuilder(
                    future: initLikes(),
                    builder: (BuildContext context, AsyncSnapshot snapshot) {
                      //해당 부분은 data를 아직 받아 오지 못했을때 실행되는 부분을 의미한다.
                      if (snapshot.hasData == false) {
                        return SizedBox();
                      }
                      //error가 발생하게 될 경우 반환하게 되는 부분
                      // 데이터를 정상적으로 받아오게 되면 다음 부분을 실행하게 되는 것이다.
                      else {
                        return Expanded(
                          child: ListView.builder(
                              physics: ClampingScrollPhysics(),
                              shrinkWrap: true,
                              scrollDirection: Axis.vertical,
                              controller: _scrollController,
                              itemCount: GlobalProfile.listForMe.length +1,
                              itemBuilder: (BuildContext context, int index) {
                                if(index == GlobalProfile.listForMe.length){
                                  return CupertinoActivityIndicator();
                                }
                                else
                                  return  Column();
                              }


                          ),
                        );
                      }
                    })
4

1 に答える 1

0
future: initLikes(),

これを再計算しないでください。新しい呼び出しは古い呼び出しを上書きします。代わりに initState() を使用して、「future:..」から参照する変数に一度だけ計算します。

于 2021-01-06T03:29:43.860 に答える