[Flutter] main 함수에서 async 활용하기

2023. 2. 23. 21:34Developers 공간 [Shorts]/Frontend

728x90
반응형
<분류>
A. 수단
- OS/Platform/Tool : Linux, Kubernetes(k8s), Docker, AWS
- Package Manager : node.js, yarn, brew, 
- Compiler/Transpillar : React, Nvcc, gcc/g++, Babel, Flutter

- Module Bundler  : React, Webpack, Parcel

B. 언어
- C/C++, python, Javacsript, Typescript, Go-Lang, CUDA, Dart, HTML/CSS

C. 라이브러리 및 프레임워크 및 SDK
- OpenCV, OpenCL, FastAPI, PyTorch, Tensorflow, Nsight

 


1. What? (현상)

void main(){
	var status = await Permission.camera.status;
    if(status.isDenied){
    	print("ERROR");
    }
}
The await expression can only be used in an async function

main 함수에서 초기화 과정에 await함수를 사용하니, 에러가 납니다.


2. Why? (원인)

  • await는 async한 함수에서만 사용할 수 있습니다.
  • 비동기(async)란 이후에 종료되기 까지 시간이 걸리는 작업을 끝날때까지 기다리지 않고, 이후 다른 작업들을 먼저 처리할 수 있도록 해주는 것을 의미합니다.

3. How? (해결책)

  • main 함수에 async를 붙여 비동기 처리를 하도록 바꿔줍니다.
  • 또한 이 경우, Flutter 엔진이 초기화 된것을 보장하기 위해 WidgetsFlutterBinding.ensureInitialized(); 함수가 꼭 입력되어 있어야 합니다.
void main() async{
	WidgetsFlutterBinding.ensureInitialized();
    
	var status = await Permission.camera.status;
	...
}

 


 

728x90
반응형