Google에서 개발한 오픈 소스 UI 소프트웨어 개발 키트
Dart의 프레임워크이며 모바일 앱, 웹, Linux 등 여러 플랫폼에 대해 개발이 가능하다.
동작 원리
네이티브 앱은 운영체제가 렌더링에 관여한다.
그러나
Flutter 혹은 Dart는 운영체제와 직접적으로 소통하지 않는다.
Flutter에서는 실제로 버튼을 만들어내는 등과 같은 행위는 할 수 없다.
그렇다면 어떻게 UI를 만들어내는 것일까?
위 구조를 살펴보면 Framework 하단에 C/C++로 이루어진 엔진이 존재한다.
네이티브 앱은 운영체제(IOS, AOS 등)와 직접적인 상호작용을 통해 모바일 앱 상의 화면을 그려내지만 Flutter는 엔진이 렌더링을 한다.
그렇다. Dart/Flutter로 작성된 코드를 해당 화면을 그려주는 것은 바로 엔진이다.
그리고 운영체제와 엔진 사이에서 인터페이스 역할을 해주는 것이 Embedder이다.
Embedder는 각 플랫폼에 맞게 애플리케이션이 원활하게 실행될 수 있도록 지원하며,
플러터의 크로스 플랫폼 개발을 가능하게 한다.
이제 예시로 애플리케이션 동작 Flow를 살펴보면 아래와 같다.
https://flutter-ko.dev/resources/faq#run-android
- 사용자가 앱을 실행함
- C / C++로 구현된 엔진이 각각의 운영체제에서 이해할 수 있는 표현으로 컴파일됨
- 엔진이 Dart 코드를 실행시킴
단점
Native 자원을 사용하지 못해 실제 운영체제로부터 화면이 그려지는게 아니라 Flutter 엔진에 의해 렌더링됨.
즉, 네이티브에서 사용 가능한 위젯을 사용할 수 없음
마무리
포스팅이 단점으로 끝나는 것 같지만, Flutter 엔진은 실로 강력한 기능을 지원해서 네이티브 위젯의 필요성을 못느낄 정도라고 한다.
또한 각 운영체제에서 앱이 실행될 수 있게 해주는 Embedder의 존재로 인해 크로스 플랫폼이 가능하다는 것은 정말 강력한 장점이라고 생각한다.
현재 시점에 제대로 된 플러터 개발을 시작하지 않아서 느낌만 가지고 말할 수는 없지만 플러터로 개발된 다양한 웹앱을 보니 정말 자연스러운 것 같다.
이제부터 세부적인 사항에 대해 차차 알아보려고 한다.
'Mobile' 카테고리의 다른 글
[Flutter] Flutter 설치방법 (0) | 2023.10.12 |
---|---|
[Dart] Class 및 다양한 Class 속성에 대해 (0) | 2023.10.10 |
[Dart] Dart의 Function 사용법 (0) | 2023.10.10 |
[Dart] Dart의 Data Types (0) | 2023.10.09 |
[Dart] Dart의 변수 정의 (3) | 2023.10.09 |