Flutter의 아키텍처는 크게 세 부분으로 나뉜다.
- Framework
- Engine
- Embedder
Flutter architectural overview - Flutter

1. Flutter Framework
Flutter Framework는 Dart로 작성되었으며, 개발자가 UI를 구축하는 데 사용되는 라이브러리와 기능을 제공한다.
- Widget : Flutter 앱의 기본 빌딩 블록으로, UI의 모든 요소(텍스트, 버튼, 레이아웃 등)은 위젯으로 표현된다. 위젯은 선언적 방식으로 UI를 구성한다.
- Material/Cupertino 라이브러리 : Android와 iOS의 디자인 언어를 구현한 위젯 모음으로, 각각 Material Design과 Cupertino 디자인 시스템을 따른다.
- 렌더링 엔진 : 위젯을 그래픽 커맨드로 변환하여 화면에 표시
- 애니메이션 및 제스처 : 애니메이션과 사용자 인터랙션을 처리
2. Flutter Engine
Flutter Engine은 C++로 작성되었으며, Flutter Framework에 의해 생성된 UI를 실제로 화면에 렌더링하는 역할을 한다.
주요 구성 요소
- Skia : 고성능 2D 그래픽 라이브러리로, 모든 Flutter 위젯을 화면에 그리는 데 사용된다.
- Dart Runtime : Dart 코드를 실행하는 데 필요한 환경을 제공한다. Flutter 앱은 Dart VM 위에서 직접 실행된다.
- Text : 텍스트 렌더링을 담당한다.
- Platform Channels : Dart 코드와 플랫폼 네이티브 코드 간의 통신을 가능하게 한다.
3. Embedder
Embedder는 플랫폼별 코드로, Flutter Engine을 특정 플랫폼의 애플리케이션으로 통합하는 역할을 한다. 이를 통해 개발자는 특정 플랫폼에서 필요한 초기화, 메시지 루프 실행, 윈도우 생성 등을 처리할 수 있다.
각 플랫폼(Android, iOS, 웹 등)에는 자체 Embedder가 있어 Flutter 앱이 해당 플랫폼의 네이티브 애플리케이션처럼 작동하게 한다.