White Cat's Paw

플러터/문법 및 설치 11

[플러터] MVVM 아키텍쳐

1. 앱 아키텍처란?앱 아키텍처는 애플리케이션의 전반적인 구조와 구성요소, 그리고 이러한 구성요소 간의 관계와 상호작용을 정의하는 청사진 또는 설계 원칙을 의미합니다. 쉽게 말해, 앱을 구축하는 데 필요한 구성요소와 이러한 구성요소들이 어떻게 함께 작동하고 연결되는지를 설명하는 방법론이라고 할 수 있습니다.MVC, MVP, MVVM, VIPER 등 너무나 많은 아키텍처가 존재 한다. 하지만 원리는 거의 동일 하다.역할 별로 레이어를 나눈다. 각 레이어는 각자의 역할에만 집중하게 설계하고 자신 밖에 업무에서 가능한 신경을 끈다. 각 레이어를 나누게 되면 수정 및 테스트 유지 보수가 용이하다.MVVM 패턴에 대해 알아 보자MVVM 패턴(Model-View-ViewModel)은 소프트웨어 아키텍처 패턴 중 하..

[플러터] 상태관리 -2 상태의 종류

상태의 종류 : 로컬, 공유상태는 공유 여부에 따라 로컬(Local State), 공유상태(Shared State)로 나눌 수 있다.로컬 상태(Local State) : 공유되지 않는 상태 BottomNavigationBar의 현재 선택한 탭 공유 상태(Shared State) : 여러 위젯에서 공유되어 표현되는 상태 로그인한 유저 정보 특정 게시글의 좋아요 표시 쇼핑 앱의 장바구니  따라서 공유상태는 상태가 변경될 경우, 동일한 상태를 보여주기 위해 동기화가 필요하다. 상태관리 - 상태관리 : 공유상태가 변경될 때 동기화 하는 것을 의미한다. 필요한 이유 ? 상태관리가 안되면 데이터 일관성을 잃게 됨 ex : 유저가 프로필을 변경해도 다른 화면에서는 이전 프로필이 보이는 문제ex : 쇼핑 카트에 표시된..

[플러터] 상태관리 -1 상태관리란?

Stateless 위젯?  Stateful위젯?Stateless 위젯을 "변화할 수 있는 요소가 없기 때문에 상태가 없다"라고 표현함 Stateless 위젯은 고정된 상태를 가지며, UI를 그릴 때마다 항상 동일하게 지는데 이러한 특성 때문에 데이터나 변수의 값이 변경되지 않는 경우에 적합하다.Statefull 위젯은 반대로 고정된 상태를 가지지 않으며 상태가 변할 수 있으며 그에 따라 UI가 변경 된다. 핵심 즉 Stateless vs StatefulStateless: 상태가 없고 UI가 항상 동일함. (예: 고정된 텍스트, 단순 버튼)Stateful: 상태가 변할 수 있으며, 그에 따라 UI가 변경됨. (예: 버튼 클릭 시 증가하는 카운터) 상태란?상태는 변수에 할당된 값임. Stateful 위젯에서..

[플러터] 추상클래스

추상클래스 | 추상클래스직접 인스턴스화할 수 없는 클래스 , 다른 클래스들이 상속하여 구현해야 하는 추상메서드를 가질 수 있다.단일 상속인터페이스와 달리 일반메서드도 가질 수 있다.자바와 달리 모든 클래스가 암묵적으로 인터페이스 역할을 하므로 implements로 모든 클래스 구현 가능// Animal 추상클래스를 구현해서 만들어 줘 라고 부탁했어야 했다.// 팀장이 먼저 설계를 했었어야 했다.abstract class Animal { void performAction();}// 추상클래스를 구현할 때 implements 를 사용한다.class Dog implements Animal { @override void performAction() { print('멍멍 배고파!'); }}class ..

[플러터] dart 연관관계와 믹스인

연관관계 : 컴포지션 관계, 집합 관계| 컴포지션 관계  부분-전체 관계 중에서 생명주기가 밀접하게 연관된 강한 소유 관계를 의미  전체 객체가 소멸될 때 부분 객체도 함께 소멸되는 것이 특징  예시 : 차와 엔진, 인간과 심장을 생각하면 편함(하나 죽으면 망가지는 것과 동일)  [강한 소유 관계]예시)class Engine { final String type; Engine(this.type); void startEngine() { print('${type} 엔진이 시동됩니다'); }}//class Car { final Engine engine; // Car(this.engine); // 생성자 코드이다. 1. 축약버전 --> 생성자 바디부분을 생략 했다. // Car(String e..

[플러터] 기초 문법 익히기3) 연산자

연산자에는 여러가지가 있는데 그 중 산술연산자, 논리연산자, 비교연산자를 볼 것이다.산술 연산자- 기본적으로 더하기, 빼기, 곱하기 등등을 나타낸다. - %는 나누었을 때 나머지를 의미하고, ~/는 나누었을 때 그 몫을 의미한다.void main() { // 더하기 print('3 + 2 = ${3 + 2}'); print('3 - 2 = ${3 - 2}'); print('3 * 2 = ${3 * 2}'); print('3 / 2 = ${3 / 2}'); // 나머지 연산자 print('3 % 2 = ${3 % 2}'); // 몫 연산자 print('5 ~/ 2 = ${5 ~/ 2}');}비교 연산자- 두 개의 값을 비교하여 결과를 참/거짓을 판별할 때 사용한다.void main() { ..

[플러터] 기초 문법 익히기2) 상수,컴파일,런타임

상수1. 상수 : 한번 할당된 값이 변경되지 않는 변수- dart 문법에서는 final이라는 키워드와 const 키워드를 제공한다- 둘의 공통점은 값을 변경할 수는 없지만 컴파일 타임 시점인지 런타임 시점인지의 차이가 있다. 1-1 final : 런타임 상수(Run-time Constant)- 프로그램이 실행되는 도중에 값이 결정되며 이후에는 변경 불가 final int n1 = 10; //n1 = 100; 이렇게 사용시 컴파일 시점에서 오류 발생 1-2 const : 컴파일 타임 상수(Compile-time Constant)- 코드가 컴파일 될 때 값이 확정되어짐 const double d1 = 101.0; // d1 = 10.1; 변경 불가능 // 상수 사용시 데이터 타입도 역시 생략 가능함..

[플러터] 기초 문법 익히기) 데이터,변수,데이터타입이 무엇일까?

데이터,변수,데이터타입?1. 데이터 : 사물이나 현상에서 얻어진 사실 또는 값을 의미2. 변수 : 값을 저장할 수 있는 메모리 공간, 즉 값을 저장해 놓고 이후에 재사용하거나 변경할 수 있도록 메모리 공간을 이름으로 할당한 개념3. 데이터 타입 : 메모리 공간에 들어간 값의 형태  int n1 = 10; double d1 = 10.0; bool b1 = true; String name = '정마요'; //홑 따옴표 권장 사항 // dart 기본 메모리 공간 3가지 // 스택(stack) - 지역 변수, 매개 변수 // 힙(heap) - new / 리터럴로 선언된 값 // 정적 영역(Static) - 전역 변수, 클래스의 static 변수, 컴파일 시점 상수 등- 자바와 달리 boolean을..

[플러터] 플러터 설치2

1. android studio 설치https://developer.android.com/studio?hl=ko Android 스튜디오 및 앱 도구 다운로드 - Android 개발자  |  Android Studio  |  Android DevelopersAndroid Studio provides app builders with an integrated development environment (IDE) optimized for Android apps. Download Android Studio today.developer.android.com- 설치되면 다운로드 후 아래와 같이 Android 14.0 으로 클릭- 아래와 같이 선택-- 참고 : Android SDK Build_Tools : 앱을 빌드하..