[Flutter] main 함수에서 async 활용하기
2023. 2. 23. 21:34ㆍDevelopers 공간 [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
반응형
'Developers 공간 [Shorts] > Frontend' 카테고리의 다른 글
[Flutter] android 폴더에서 Cannot resolve symbol (0) | 2023.02.23 |
---|---|
[Flutter] 카메라 권한 추가해주기 (0) | 2023.02.23 |
[Web] Invalid left-hand side in assignment 에러 (0) | 2023.01.27 |
[Web] CSS 적용시 상하좌우 순서 (0) | 2023.01.27 |
[Web] z-index 적용 안될 때 (0) | 2023.01.25 |