Flutter/Flutter FAQ

Flutter 미래 빌더에서 여러 가지 방법을 사용할 수 있을까요?, Can I use multiple method on a future builder?

독학코딩 2023. 12. 18. 09:23
반응형

질문


     @override
      Widget build(BuildContext context) {
        widget.groupid;
        widget.event_id;
        var futureBuilder = new FutureBuilder(
          future: _getAllTickets(),

          builder: (BuildContext context, AsyncSnapshot snapshot) {
            print(snapshot.connectionState);
            switch (snapshot.connectionState) {
              case ConnectionState.none:
              case ConnectionState.waiting:
                return new Text('...');
              default:
                if (snapshot.hasError)
                  return new Text('오류: ${snapshot.error}');
                else
                  return createListTickets(context, snapshot);
            }
          },
        );



    return new Scaffold(

      body: futureBuilder,

    );
  }

  Widget createListTickets(BuildContext context, AsyncSnapshot snapshot) {
    List values = snapshot.data;

     child: new Card(

                child:
                new Column(mainAxisSize: MainAxisSize.min, children: <Widget>[
                  new Text(
                      values[index]["티켓_유형_아이디"].toString(), style:
                  const TextStyle(
                      fontFamily: 'Poppins',
                      fontWeight: FontWeight.w600,
                      fontSize: 25.0)),
}


  _getAllTickets() async {
    final response = await http.get(
        "https...}"
        , headers: {
      HttpHeaders.AUTHORIZATION: access_token
    });

    returnTickets = json.decode(response.body);
    return returnTickets;
  }


  _getTicketType() async {
    for (i = 0; i < (returnTickets?.length ?? 0); i++) {
      /*print("https....);*/
     final responseType = await http.get(
          "https...}"
          , headers: {
        HttpHeaders.AUTHORIZATION: access_token
      });

      Map<String, dynamic> hey = json.decode(responseType.body);


    }

안녕하세요 여러분, 질문이 있습니다. 여러 개의 API 요청을 보내고 반환된 응답을 사용하여 동적으로 카드를 생성하려고하는데, _getAllTickets()에 여러 개의 메소드를 포함할 수 있을까요? 또한 values[index]["ticket_type_id"]를 values[index]["name"]으로 대체하고 싶은데, name은 _getTicketType() 메소드를 통해 얻은 새로운 인덱스 응답입니다. 미리 감사드립니다!


답변


다음과 같은 HTML을 한국어로 번역하되, HTML 태그와 태그를 사용하여 영어 텍스트를 보존합니다.

Future.wait(Future[])를 사용하여 future 목록을 반환할 수 있습니다.

Future<String> foo;
Future<int> bar;
FutureBuilder(
  future: Future.wait([bar, foo]),
  builder: (context, AsyncSnapshot<List<dynamic>> snapshot) {
    snapshot.data[0]; //bar
    snapshot.data[1]; //foo
  },
);
반응형