late Future<List<Map<String, dynamic>>> _futureItemList;

...

@override
void initState() {
  super.initState();

...
   _loadData();
...

}


void _loadData() {

  _futureItemList = () async {
    final newItemList = await selItemList();

    ...
    가공
    ...
    
    return newItemList;
  }();
}

 

위 소스에서 즉시 실행 익명 함수(IIFE) 패턴을 이용하여 동기 함수 내부에서 비동기 익명함수로 Future Type 데이터를 받고 있다.
_futureItemList = ( () async { ... } ) ();

 

참고로 dart는 async 키워드가 붙은 비동기 함수를 리턴타입을 명시하지 않았더라도 내부적으로 Future타임으로 Wrapping하여 반환한다.

즉 return이 없다면 Future<void>, T type return이라면 Future<T>로 반환한다.

 

참고 : https://dart.dev/language/async#declaring-async-functions