개요
FutureBuilder Future 객체를 활용 코드 템플릿입니다.
코드
* Future 객체 생성
객체를 초기화 해줍니다.
Future<List> fruitListFuture = Future.value([]);
* 객체에 담을 데이터 Fetching 함수 작성
아래와 같은 형태로 데이터 패칭을 담당할 함수를 작성합니다.
// 유저의 리뷰 목록을 가져오는 함수
Future<List> getFruit() async {
// 여기에 각 상황에 적합한 fetch 함수 추가
if (response['code'] == 200) {
return response['data']['list'];
}
return [];
}
* FutureBuilder 작성
return FutureBuilder(
future: fruitListFuture,
builder: (BuildContext context, AsyncSnapshot<List> snapshot) {
if (snapshot.connectionState == ConnectionState.waiting) {
return const Center(child: CircularProgressIndicator());
} else if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data!.length,
itemBuilder: (context, index) {
final fruit = snapshot.data![index];
return Text(fruit['name'] ?? 'no fruit name available');
},
);
} else {
return const Center(child: Text("No data available"));
}
});
발전
* after WidgetBinding in initState
만약 Provider 전역 변수를 활용하고자 하는 경우 아래와 같이 작성합니다.
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
// 이 구간부터 Provider 전역 변수를 활용할 수 있습니다.
setState(() {
fruitListFuture = getFruit();
});
});
}
'프로그래밍 > Flutter <Dart>' 카테고리의 다른 글
[Flutter] Android Studio LadyBug Unsupported class file major version 65 빌드 에러 해결 (0) | 2024.11.10 |
---|---|
[Flutter] flutter_native_splash 사용하여 Splash Screen 구현하기 (3) | 2024.10.06 |
[Flutter] Deprecated imperative apply of Flutter's Gradle plugins (2) | 2024.09.25 |
[Flutter] Futurebuilder Future 객체 리로드 중일 때의 상태 표현하기 (2) | 2024.09.22 |
[Flutter] Incorrect use of ParentDataWidget 에러 해결 (0) | 2024.09.18 |