728x90

전체 글 85

[Flutter] Flutter와 MVVM 아키텍처

모바일 앱 개발을 하게되면 필요한 구조와 패턴이 있습니다. Andriod, iOS, Flutter 모두 최종 기능은 같습니다. 앱을 개발한다면 앱의 확장성과 유지보수의 편의성을 고려해 적용하는 아키텍처는 다양하지만 많이 쓰이는 아키텍처 MVVM을 소개하려합니다. Flutter 특성에 맞는 MVVM 디자인 패턴을 적용하여 사용하는 것이 목적입니다. Flutter MVVM (Model View ViewModel) 3가지 레이어로 구성된 패턴입니다. 각 레이어별 역활을 파악하고 Data와 Action의 흐름을 일관되게 구현한다면 확장성있고 이해하기 쉬워지며 유지보수의 편의성이 좋은 앱을 만들 수 있게 됩니다. View Layer UI/UX요소로 구성된 다양한 위젯으로 화면을 구성하는 레이어입니다. (시각적인 ..

[Flutter] Flutter Widget의 생명주기를 알아보자! ( LifeCycle )

이번 포스팅에서는 Flutter에서의 Widget의 LifeCycle에 대해 알아보겠습니다. Flutter에서 위젯 종류인 Stateless Widget과 Stateful Widget은 서로 다른 LifeCycle을 가지고 있습니다. 소스 코드와 함께 알아보겠습니다. Stateless Widget LifeCycle Stateless Widget은 단순히 화면을 구성하는 위젯이므로 단순한 생명주기를 가지고 있습니다. Stateless Widget의 Constructor flutter에서 위젯은 기본적으로 클래스를 사용하여 생성합니다. 위젯은 기본적으로 클래스로 구성이 되어있기 때문에 클래스의 생성자를 사용할 수 있습니다. 위젯의 생성자와 클래스의 생성자는 동일한 역할을 가지며 마찬가지로 해당 위젯 안에서 ..

[Flutter] 자주 사용하는 UI Widget을 알아보자!

이번 포스팅에서 알아볼 내용은 Flutter 프레임워크에서 자주 사용되는 UI Widget입니다. Stack Widget 하나의 위젯 위에 다른 위젯을 쌓아올릴 때 사용하는 위젯입니다. (겹쳐 사용할 수 있습니다.) Stack API를 이용해 화면의 경계에서 정확히 원하는 위치에 위젯을 추가할 수 있습니다. 주로 Stack Widget을 이용해 Background, 배경화면, 현재 시간 등을 그릴 수 있습니다. 위치를 지정하지 않은 child Widget을 Column이나 Row가 자식을 취급하는 것 처럼 처리합니다. (자식 위젯을 왼쪽 위 모서리로 정렬하여 나란히 놓습니다.) alignment Property로 정렬 방향을 설정합니다. ( align-content : 방향 설정과 유사합니다. ) Pos..

[Flutter] Flutter의 위젯을 알아보자! ( Widget )

이번 포스팅에서 알아볼 내용은 Flutter의 Widget입니다. Flutter의 모든 위젯은 다루지는 않습니다. 하지만 필요한 위젯을 찾는 방법에 대해 학습하고 주로 사용하는 위젯을 알아볼 수 있습니다. Flutter는 위젯으로 시작하고 위젯으로 끝나는 프레임워크이며 Flutter의 위젯은 웹에서의 HTML Element로 취급한다면 간단히 이해할 수 있습니다. Widget?? Flutter는 위젯이 전부다라고 말해도 될 정도의 중요도를 가지고 있습니다. 화면에 표시되는 모든 요소가 위젯이며 눈에 보이지 않지만 화면을 구성하는 Layout도 위젯입니다. 위젯은 크게 두가지로 분류할 수 있습니다. Stateful Widget Stateles Widget 각각의 위젯을 살펴보겠습니다. Stateful Wi..

[Dart] Dart의 factory 키워드를 알아보자!

이번 포스팅에서는 Dart Factory Constructor에 대해 알아보겠습니다. factory dart의 factory 키워드는 flutter에서 모델 클래스를 만들 때 자주 사용되는 예약어입니다. JSON 직렬화 예제 코드와 함께 factory를 알아보겠습니다. // build runner에게 Human 클래스가 JSON 직렬화 로직이 구성되어야 한다고 미리 선언하는 어노테이션입니다. @JsonSerializable Class Human { final String gender; final String age; final String name; Human({required this.gender, required this.age, required this.name}); // Map에서 새로운 Huma..

[Clean Code] 17장 냄새와 휴리스틱

17장 냄새와 휴리스틱 Refactoring의 저자 마틴 파울러는 다양한 코드 냄새를 거론한다. 이번 챕터에서는 마틴 파울러가 맡은 냄새에 저자가 맡은 냄새를 추가헀다. 이번에 나올 목차들을 다양하게 검토하고 리팩터링 하는 챕터. 프로그램을 수정할 때마다 나는 왜?라는 자문한 다음 그 답을 기록했다. 목차 주석 환경 함수 일반 자바 이름 테스트 17-1. 주석 부적절한 정보 변경 이력, 이슈 추적 등 다른 시스템에 저장할 정보는 주석으로 적절하지 못하다. 작성자, 최종 수정일, SRP 번호와 같은 정보만 주석으로 남긴다. 주석은 코드와 설계에 기술적인 설명을 부연하는 수단이기 때문에 필수적인 정보만 넣어준다. 쓸모없는 주석 쓸모 없는 주석은 넣지 않는게 가장 좋다. 무의미한 주석은 삭제하는 것이 좋다. ..

[Clean Code] 16장 SerialDate 리펙터링

16장 SerialDate 리펙터링 JCommon 라이브러리와 SerialDate 클래스를 알아보며 전문가의 입장에서 깨끗한 코드 작성 방법을 알아볼 수 있는 챕터. 이 챕터( 책 )에서 수행하는 분석은 악의나 자만과는 거리가 멀다는 것을 명심하자. 비판이 있어야 발전이 가능하다. 다른 직업들도 하고있는 것들이다. 프로그래머들도 알아야한다. 코드 리뷰는 우리 모두가 편안하게 여겨야할 행동이고 다른 사람이 내게 해준다면 감사히 반겨야 할 행동이다. 목차 첫째, 돌려보자 둘째, 돌려보자 16-1. 첫째, 돌려보자 SerialDateTests는 단위 테스트 케이스 몇개를 포함하지만 모든 경우를 점검하지 않고 있다. 테스트 코드에서 전혀 실행하지 않는 코드도 존재한다. 테스트 커버리지는 대략 50% 정도이다. ..

[Flutter] Flutter 3.0 변경사항을 알아보자!

이번 포스팅에서 알아볼 내용은 Flutter 3.0 버전의 변경 사항입니다. 5월 13일 Google I/O를 통해 Flutter 3.0 버전이 릴리즈 되었습니다. ( Dart도 버전업이 되었습니다. ) Flutter 3.0 버전 변경 사항 1. Apple Silicon의 Fully Native 지원 기존 Flutter에서는 Rosetta등을 통해 간접적으로 Fully 지원하였습니다. Flutter 3.0버전에서 부터는 빌드 할 때 ARM칩을 지원하는 빌드를 별도로 추가 지원하며 Flutter 프레임워크가 애플 실리콘에서 작동되기 때문에 속도도 이전 버전보다 빨라지게 되었습니다. 2. Yaru Ubuntu를 만드는 회사 Canonial에서 Yaru Design Language를 Pub.dev를 통하여 지..

728x90