Flutter: Future value 사용하기

박경찬·2021년 8월 18일
0

Flutter 이모저모

목록 보기
1/1

플러터에서 Future로 되어있는 값을 가져와서 사용하는 방법


  • 플러터를 사용하면서 영문을 모른체 헤매던 것 중 하나이다

    보통 DB에서 http get 으로 다음과 같이 Future 함수를 통해 Info라는 정보를 가져온다고 해보자

  class Info {
    final int id;
    final String name;

    Info(
        {this.id,
        this.name,
  });

    factory Info.fromJson(Map<String, dynamic> json) {
      return Info(
        id: json['id'],
        name: json['name'],
      );
    }
  }
  Future<List<Info>> getInfoList() async {
    final response =
        await http.get(Uri.parse("$serverAddr/getInfo.php"));
    final items = json.decode(response.body).cast<Map<String, dynamic>>();

    List<Info> infos = items.map<Info>((json) {
      return Info.fromJson(json);
    }).toList();

    return infos;
  }

  • 반환되는 값의 type은 Future<List<Info>>가 되어서 그냥 사용하려고 하면
 String name= infos[0].name;
  • type이 Future여서 안된다고 한다.
int id;
infos.then((val){
   val.id=2
   id=val.id
});
  • 이렇게 then을 이용하면 infos 내의 값을 수정은 가능하지만 외부 변수에 값을 넣는것은 불가능 한 것 같다


  • 그래서 List< Info>를 그대로 사용하려면
    infos = await getInfoList();
    => await을 붙여주면 된다
profile
안녕하세요

0개의 댓글