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 |