플러터 공식문서를 번역하여 정리한 글입니다.
플러터 어플리케이션은 임베더를 통해서 네이티브 어플리케이션과 같은 방식으로 각 플랫폼에 맞게 패키징된다.
우리가 flutter build apk를 실행할때 임베더가 우리의 코드를 apk로 패키징해준다.
그리고 어플리케이션이 os와 상호작용이 필요한 부분을 임베더가 담당해준다.
플러터의 핵심 API들이 구현되어 있는 부분으로 임펠러 또는 스키아를 통해 그래픽 작업을 수행하고,
임베더를 통해 os와 상호작용이 필요한 기능들을 제공한다.
플러터 엔진은 dart 클래스로 래핑되어 플러터에서 그래픽, 텍스트 렌더링, 입력 등 low-level의 기능들을 사용할 수 있도록
dart:ui로 플러터 프레임워크에 제공된다.
플러터의 textfield 같은 위젯이 dart:ui의 low-level 기능을 추상화하여 제공하는 예시이다.
개발자들은 플러터 프레임워크를 통해 작업을 수행한다.
Foundation에서 Material, Cupertino로 갈수록 추상화 단계가 높아진다.
프레임워크는 상대적으로 작은 부분이며, 개발자들이 사용하는 많은 기능들을 제공한다.
여러가지 위젯과 카메라, 웹뷰, http, 애니메이션 등이 포함된다.
Dart App
개발자가 생성한 어플리케이션
Framework
high-level의 API를 제공
Engine
플러터의 핵심 API를 제공
Framework에 dart:ui로 API 제공
Embedder
플랫폼에 따른 고유 기능과 서비스 API를 제공
Runner
MainActivity.java, AppDelegate.swift 처럼
플랫폼에 특화된 코드와 Flutter를 연결하는 부분