Flutter Future

이건우·2024년 1월 25일
0

Flutter 개발

목록 보기
4/5

Future Builder는 미래에 완료될 비동기 작업에 대한 편리한 방법을 제공하는 Flutter 위젯이다.

자주 쓰이는 패턴

Widget Body(){
return FutureBuilder(
        future: loadContents(),
        builder: (BuildContext context, dynamic snapshot) {
          List<Map<String, String>> datas = snapshot.data;
          if (snapshot.connectionState != ConnectionState.done) {
            return const Center(child: CircularProgressIndicator());
          }
          if (snapshot.hasError) {
            return const Center(child: Text('데이터 오류'));
          }

          if (snapshot.hasData) {
            return makeDataList(datas);
          }
          return const Center(child: Text('해당지역에 데이터가 없습니다.'));
        });
}
  1. future : Future 타입의 객체를 받습니다. 현재 해야할 비동기 작업을 의미합니다. 여기선 loadContents() 메서드를 호출하여, contentsRepository 객체의 loadContentsFromLocation 메소드의 컨텐츠를 불러오는 역할을 합니다.
  loadContents() {
    return contentsRepository.loadContentsFromLocation(currentLocation);
  }
  1. Builder :
    future가 완료될때 호출되어 Ui를 빌드한다. BuildContextAsyncSnapshot를 매개변수로 받아서 비동기작업의 결과나 에러등을 가공하여 Ui를 구성하는 역할을 합니다.
    여기서는 List<Map<String, String>> 형태의 datas 라는 것을 받아 snapshot.data에 할당합니다.
  • 데이터의 형태는 future에서 호출하고 있는 메소드에서 확인할 수 있습니다. 그리고 snapshot을 받으면 데이터의 형태를 확인가능합니다.
...
future: loadContents(),
    builder: (BuildContext context, dynamic snapshot) {
      print(snapshot); // snapshot을 추가, 데이터 형태 확인
      List<Map<String, String>> datas = snapshot.data;
...

현재 데이터의 예외 처리로 snapshot.connectionState,snapshot.hasError,snapshot.hasData 각각 상황에 맞게 if구문과 함께 잘 쓰입니다.

profile
내가 느낌만알고 한줄도 설명할줄 모른다면 '모르는 것'이다.

0개의 댓글