Flutter란?
Flutter는 구글에서 개발한 모바일 어플리케이션 개발용 오픈소스 프레임워크다. Dart언어로 작성되었으며 안드로이드 및 iOS 모바일 앱 개발 뿐만 아니라 웹, 데스크톱 및 IoT 기기 등 다양한 플랫폼에서도 실행이 가능하다. Flutter는 빠른 개발 및 확장성을 지원하고, 다양한 애니메이션 및 사용자 인터페이스 요소를 포함하고 있다.
Flutter와 타 모바일 개발 플랫폼들과의 차이점
React Native와의 차이점
Flutter의 높은 성능
Flutter의 Dart언어는 네이티브 코드로 컴파일 될 수 있다. 허나 React Native는 네이티브 모듈과 통신하기 위해 JavaScript 브리지를 사용하기 때문에 성능이 Flutter에 비해 약간 낮을 수 있다.
응용 프로그램 크기
Flutter는 앱의 크기가 상당히 크다. 자체 렌더링 엔진을 가지고 있고 React Native와 같이 브리지를 통해 통신하는 방식이 아니기에 다른 플랫폼의 구성요소에 의존하지 않는다. 결과적으로 자체 렌더링 엔진까지 다 포함하여 컴파일하기에 앱의 크기가 상당히 커진다.
핫 리로드
Flutter는 핫 리로드 기능을 통해 어플리케이션을 다시 시작할 필요없이 변경사항을 실시간으로 확인할 수 있다. 이렇게 하면 컴파일 시간에 있어서 많은 시간을 절약할 수 있다.
커뮤니티
이는 조금은 나아진 내용이지만, React Native에 비해 커뮤니티의 지원이 상당히 부족했다. 허나 지금은 커뮤니티가 꽤 커져 이전과는 다르게 얻을 수 있는 정보가 많아졌다.
Widget이란?
위젯은 플러터 앱의 모든 시각적 요소를 표현하는 것을 말한다. 버튼, 텍스트, 이미지 등 사용자 인터페이스의 모든 요소는 위젯으로 표현된다. 플러터에서는 모든 것이 위젯이라고 할 수 있다.
크게 두 가지 종류의 위젯을 사용한다. Stateless Widget과 Stateful Widget의 두가지 종류를 사용한다.
Flutter의 레이아웃
Single-child layout widget, multi-child layout widget, sliver widget으로 나뉜다.
Single-child layout widget
텍스트나 이미지, 아이콘등의 단일 위젯을 배치하기 위한 레이아웃 위젯으로 Center, Container 등이 사용될 수 있다.
Multi-child layout widget
여러 개의 위젯들을 배치하기 위한 레이아웃 위젯으로 Row, Column 등이 사용될 수 있다.
Sliver widget
스크롤에 적합한 레이아웃 위젯이다.
Stateless와 Stateful의 차이점
Stateful Widget은 상태를 가지고 있는 위젯으로, 사용자 상호작용 또는 다른 이벤트에 따라 상태가 변경될 수 있다. 그와는 반대로 Stateless Widget은 상태가 없는 Widget으로, 한 번 생성되면 변경되지 않는다.
화면에 변경이 필요한 경우 Stateless가 아니라 Stateful을 적용해야한다.
Animation
Flutter에서 Animation은 애니메이션 효과를 생성하기 위한 프레임워크이다.
AnimationController, Tween 및 Curve 클래스를 사용하여 구현할 수 있다. Tween은 위치 보간을 위해 사용이 되고, Curve는 애니메이션의 감속 및 가속과 같은 시간적인 변화를 표현하기 위해 사용된다.
Flutter의 상태관리
상태를 관리하기 위해 Stateful Widget을 사용한다. 그리고 이를 위해 상태 관리 패턴도 제공이 된다. Provider 패키지를 사용하여 상태를 전역적으로 관리할 수 있고, BLoC 패턴을 사용하여 비즈니스 로직과 UI를 분리하여 관리할 수 있다. GetX 패턴은 Controller, Binding, View의 연결로 이루어져있다.
Flutter의 네트워크 요청
기본적으로 http 패키지를 사용하여 HTTP 요청을 처리할 수 있다. 대부분 Dio 패키지를 사용하여 HTTP 요청 및 응답을 쉽게 처리할 수 있다.
패키지 VS 플러그인
플러그인은 패키지에 속하기 때문에 넓게 보면 플러그인 또한 패키지라고 볼 수 있다. 하지만 굳이 구별하자면, Dart 코드로만 이루어진 패키지를 패키지라고 부르고, Java, Kotlin, Swift, JavaScript 등 다른 코드를 포함하고 있는 패키지를 플러그인이라고 부른다.
'스펙 업!' 카테고리의 다른 글
신입 개발자 포트폴리오 작성 - 2 (프로젝트 작성) (0) | 2024.06.08 |
---|---|
신입 개발자 포트폴리오 작성 - 1 (프로필 작성) (0) | 2024.06.02 |
[면접 질문] 프로그래밍 공통(그 외) 작성중 (0) | 2024.03.05 |
[면접 질문] 프로그래밍 공통(CS) 작성중 (0) | 2024.03.05 |
[면접 대비] 프로그래밍 공통 (0) | 2024.03.05 |