Flutter에서 대두되는 두가지 아키텍처 패러다임이 있다. 이 두가지 아키텍처에 대해서 기술한 글들을 리뷰해 어떤 아키텍처를 선택하는 것이 좋을지 알아보자. 기술할 글의 선정 기준은 구글에 feature first를 검색했을 때 상단에 위치한 글이다. https://codewithandrea.com/articles/flutter-project-structure/ Flutter Project Structure: Feature-first or Layer-first? An overview of the feature-first and layer-first approaches when choosing a project structure for medium/large Flutter apps, along with ..
App/Flutter
Flutter의 SafeArea에 대해서 실험적으로 잘 기술한 글이 있어 퍼오게 되었다. 들어가며 이번 글에서는 Flutter(이하 플러터)에서 가장 기본이 되는 위젯 "SafeArea"에 대해 살펴보고 사용법에 대해서 알아보도록 하겠습니다. 그런 후에 적용 예시를 통해 어떤 옵션이 있는지 또한 사용해야할 때의 유의점도 함께 살펴보겠습니다. SafeArea 이름만 들어서는 안전한 영역?은 대체 뭐까라는 의문점을 들게 하는 위젯입니다. 하지만 매우 중요하고 의미있는 위젯이기도 한데요. 바로 Widget of the week 에서 첫번째로 설명하고 있는 위젯이기 때문입니다. 플러터 공식문서에서는 이 위젯을 이렇게 표현하고 있습니다. A widget that insets its child by sufficie..
Flutter에는 GetIt이라는 의존성 주입 도구가 있다. GetIt은 서비스 로케이터 패턴으로 개발되었다. 서비스 로케이터 서비스나 의존성을 등록하고 필요할 때 코드의 어느 위치에서나 찾아 사용할 수 있는 패턴으로 인스턴스를 쉽게 등록하고 사용할 수 있는 장점이 있다. 인스턴스 사용 방법 Factory: 새 인스턴스를 생성해서 반환한다. Singleton: 싱글톤 패턴으로 같은 인스턴스를 반환한다. Lazy Singleton: 처음 호출될 때 인스턴스를 생성하여 반환한 후 해당 인스턴스를 재활용한다. 장점 쉬운 의존성 주입: 생성한 get_it 인스턴스 안에 API, Dao, HiveBox 등을 쉽게 넣어 주입할 수 있다. 분리된 인스턴스: 각각 다른 성격을 띄는 객체들을 다른 get_it 인스턴스에..
Flutter의 기초 개발에 대해서 잘 요약해둔 글을 발견해 클립한다. 플러터의 개념부터 Appbar, Fragment, BottomNavigation, 등 기본 UI, 화면에서 UI 개발하는 법 등 플러터의 기초적인 거의 모든 개발 방법을 기술한다. 해당 글은 저작권이 있기 때문에 글의 내용을 기술하진 않는다. 대신 위시켓에서 매우 잘 번역한 글이 있기에 함께 클립한다. https://yozm.wishket.com/magazine/detail/1566/ Flutter로 UI를 구현하는 방법 | 요즘IT 이 글에서는 이미지를 포함한 모든 종류의 UI를 Flutter 코드로 변환하는 방법에 대해 소개할 예정입니다. 미리 말하자면 이 글은 앱 개발 튜토리얼이 아니며, 다양한 UI의 기본적인 개념과 구현 방 ..
Flutter는 앱 데이터의 상태 관리를 위해 Bloc과 Cubit을 제공한다. Cubit은 Bloc의 6.0.0 버전부터 새롭게 제공된 Bloc의 경량화 버전이다. Bloc 호출 이벤트 및 상태 변경이 모두 Stream이다. 모든 과정이 Stream이기 때문에 Event sourcing을 할 수 있다. UI가 Bloc에 events를 보낸다. 호출 이벤트가 Stream이기 때문에 가능한 기능들이 추가되지만 보일러 플레이트가 상당하다. class CityBloc extends Bloc { CityBloc() : super(City()){ on( generateCity, transformer: debounce(const Duration(milliseconds: 300)) ); } FutureOr gener..
Equatable Equatable 플러그인은 한 인스턴스와 다른 인스턴스가 같은 인스턴스인지 판단을 쉽게 할 수 있게 해주는 라이브러리이다. 자바, 루비와 같은 객체 지향 언어를 사용해본 사람은 알겠지만, 객체의 비교는 기본적으로 메모리 베이스다. 같은 필드 값들을 가진 객체라도 할당된 메모리 값이 다르기 때문에 == 연산자로 비교하면 False가 나온다. 그렇기 때문에 객체 지향 언어에서는 비교를 할 때 비교의 기준을 제공해주는 함수를 override하고 hashMap을 정의해 각 객체 키의 해시 방법을 정한다. Operator 함수 override 하기 class Person { final int id; final String name; final int age; Person({ required t..