flutter InitState에서 async 함수 사용하기

flutter에서 InitState안에 초기화 하는 코드를 작성하는데요. aysnc 함수를 사용해야 하는 경우가 있는데 await 키워드를 사용하려고 하면 오류가 나와요. InitState에서 async 사용하는 방법들이 여러가지 있는데 분리해야 사용하는 방법을 가장 많이 사용하고 있어요.

_loadData 함수를 만들어서 그 안에 await 사용해야 하는 코드를 넣습니다. 여기서도 다시 함수를 분리해도 좋습니다.

Future<void> _loadData() async {
  // Load the data asynchronously
  final data = await someAsyncDataLoadingFunction();

  // Return the loaded data
  return data;
}

이제 InitState를 사용 할 때 패턴처럼 _loadData를 불러와요. then 안에 그 동안 initState로 작성했던 코드를 넣어서 사용합니다. 이런 패턴 자주 사용하게 될 것 같네요. GPS를 가져오거나 모델명 한번만 가져오고 싶을 때 이렇게 사용하고 있어요.

@override
void initState() {
  super.initState();
  _loadData().then((value) {
    setState(() {
      // Update the state with the loaded data
    });
  });
}

Leave a Comment