기술은 나의 도구

[노마드코더 플러터] 플러터 소개

Why Flutter?

  • 진정한 의미의 크로스플랫폼 프레임워크
  • iOS, Android, Web, MacOS, Windows, Linux 에서 동작하는 어플리케이션 & Embedded
  • 하나의 언어와 프레임워크로 원하는 모든 것을 만들 수 있다.

How Flutter Works

  • Architectural Layer

flutter-architectural-layer.png

  • 타 프레임워크들은 운영체제와 직접 소통하는 반면 플러터에서 작성한 코드는 운영체제와 직접적인 소통을 하지 않는다.
  • 크로스플랫폼이 되기 위해서 다른 방식의 소통이 필요하여 Engine 을 도입
  • Engine 이 화면 상에 UI 를 그리는 역할을 하게 됨 (비디오 게임 엔진처럼)
  • Flutter 어플리케이션은 운영체제의 Native Widget 을 사용하지 않음
  • 어플리케이션의 호스트에 의존할 필요없이 (크로스플랫폼) 화면상의 모든 픽셀을 조절함으로써 모든 걸 통제할 수 있음
  • Embedder
    • 엔진을 가동시키는 runner 프로젝트를 지칭
  • 실행 순서 : Start Application → Runner → Engine → UI Rendering
  • 정리) 플러터의 역할
    • 단순히 Engine 을 어플리케이션 내부에 집어넣고 우리가 작성한 Dart 코드를 컴파일
    • 사용자가 어플리케이션을 실행시킬 때 Engine 을 가동시키는 runner 프로젝트 (Embedder) 를 실행
    • 이후 Engine 이 UI 를 렌더링
  • FAQ
  • 단점
    • 네이티브에서 가능한 위젯을 사용할 수 없어 부자연스럽다. (사람들이 Flutter 를 싫어하는 이유) → 자연스럽게 만드는 법이 존재함

Flutter vs React Native

  • React Native
    • 네이티브 앱 운영체제 상에서 가능한 위젯을 사용하고 싶은 경우
    • 예를 들어 버튼을 하나 만들면 iOS 와 안드로이드에서 서로 다른 UI 로 렌더링
    • 자바스크립트를 통해 운영체제와 소통
  • Flutter
    • 아주 세밀한 디자인 요구사항이 들어가 있고 요소들이나 애니메이션들을 전부 커스터마이징해야 하는 경우
    • 운영체제에서 제공해주는 위젯을 사용할 필요가 없는 경우
  • #노마드코더
  • #플러터