본문 바로가기
기초다지기/Flutter&Dart

Flutter에 대해 알아보자

by 김빵그 2023. 4. 10.

flutter는 크로스 플랫폼 프레임워크다

크로스 플랫폼? 

  • 특정 플랫폼에 묶이지 않고 자유롭게 사용한다 
  • 특정한 언어로 코딩시 나중에 이해 할 수 있는 코드로 변환 한다. ios나 안드로이드, 웹/ 맥OS/윈도우/리눅스 상에서 동작하는 웹 어플리케이션, 임베디드까지 다룬다
  • 하이브리드 앱 ? 웹사이트를 보여주는 웹 뷰. HTML CSS JS
  • 네이티브 앱 ? IOS만을 위한, Android만을 위한 스위프트, 자바 코틀린

프레임워크?

  • 누군가 미리 작성해 놓은 코드, 개발 속도를 빠르게 해준다
  • 코드 작성시 각 프레임워크 규칙을 따라야 하며 내가 제어할 수 없다 장고, 스프링 등
  • 라이브러리 ? 제이쿼리, 부트스트랩, 시멘틱UI, 테일윈드CSS 등 내가 필요시 불러와서 쓸 수 있다

 

그래서 어떻게 작동하는 가?

  • Swift로 ios를, java로 안드로이드를 만드는 네이티브 앱 개발을 할 때 운영체제와 직접적으로 연동하여 작성하는 형태로 진행
  • but ~! Flutter, dart 코드는 운영체제와 직접적으로 소통하진 않는다

  • 어플리케이션의 호스트에 의존할 필요 없이 엔진을 사용하여 어플리케이션의 실제 UI를 렌더링한다. > 네이티브 위젯을 사용하지 않는다
  • 엔진이 프레임워크를 동작시키고, 엔진이 그려주는 역할을 수행하게 된다. 
  • 그럼 어떻게 flutter가 ios상에서 코드를 동작시킬 수 있나? : 엔진의 C 및 C++ 코드가 컴파일 되고, Dart 코드는 네이티브 ARM 라이브러리로 컴파일 되는데 라이브러리는 runner ios 프로젝트에 포함된다. 이 모든게 .ipa라는 ios 어플리케이션 포맷으로 빌드된다. 그래서 유저가 앱을 실행시키면 앱은 flutter 라이브러리를 불러오고 모든 ui를 렌더링해준다
  • 단점 ? 네이티브 위젯을 사용할 수 없어서 앱이 부자연스러워 보일 수가 있다
  • Embedder? 특정 플랫폼에 특화된 걸 얘기한다. 호스트 플랫폼 상에서 엔진을 가동시키는 역할을 한다

React Native와의 차이?

  • 네이티브 앱 운영체제 상에서 가능한 위젯을 사용하고 싶을 때는 RN을 쓰는게 맞다 
  • RN에선 ui 하나를 만들면 ios와 안드로이드에서 서로 다르게 보이는데, RN에서는 js를 통해 운영체제와 대화를 하고 운영체제는 네이티브 앱처럼 보이는 컴포넌트와 위젯을 만들어낸다.
  • Flutter는 컴포넌트를 렌더링하기 위해 운영체제와 직접 소통하지 않고, 엔진을 통해 모든 컴포넌트를 렌더링 해준다

 

'기초다지기 > Flutter&Dart' 카테고리의 다른 글

Flutter Image 이미지 적용하는 법  (0) 2023.04.11
Flutter 설치 방법  (0) 2023.04.10
Dart Map에 대해 알아보자  (0) 2023.04.07
Dart Set에 대해 알아보자  (0) 2023.04.07
Dart List  (0) 2023.04.06