Flutter는 Dart언어 기반의 프레임워크로 앱,웹 개발을 할 수 있는 Google에서 만든 프레임워크이다.
즉 Flutter로 Android,IOS,Window,MacOS,Linux App , Web, IoT와 같은 임베디드 어플리케이션 등을 만들 수 있다.
Flutter를 쓰는기업으로는 Google, 알리바바, 바이트댄스(틱톡), 텐센트, 도요타 등이 있다.
예시 앱) Wonderous, IO 포토 부스, Flokk, pinball.flutter.dev
Swift로 IOS 혹은 JAVA로 안드로이드를 만드는 네이티브 앱 개발을 할 때 운영체제와 직접적으로 대화를 하게된다. (버튼이나 text Input 등 모든 요소들을 만들어달라고 운영체제에게 얘기하게 된다.)
하지만 Flutter 혹은 Dart 코드는 운영체제와 직접적으로 소통하게 되진 않는다. Flutter에선 실제 IOS혹은 안드로이드 버튼을 만들어내는 기능은 존재하지 않는다. (다른 크로스 플랫폼 프레임워크처럼 동작하지 않는다.)
Flutter 어플리케이션은 플랫폼의 Native Widget을 사용하지 않는다. (바다위에 조개가 있고 그 조개안에 진주가 있다고 생각해보자 바다는 플랫폼(Android,IOS 등)이 되고 조개속의 진주가 Flutter 코드라면 조개의 껍데기는 엔진이다. 엔진이 Dart,Flutter 코드를 동작시키면 비로소 화면에 UI를 그려준다.)
유저가 어플리케이션을 다운로드 받은 후 실행시키면 엔진이 여는 것은 “runner” iOS 프로젝트(Embedder)이다. “runner” iOS 프로젝트는 엔진을 실행시키고 엔진이 UI를 렌더링 한다. (게임 엔진들의 동작 원리와도 비슷하다.)