전체 글
-
Flutter에는 많은 상태관리 패키지들이 존재한다. 그 중 Riverpod에 대해서 알아보자. Riverpod는 Provider의 anagram(철자 바꾸기)이다. Riverpod는 Flutter/Dart의 반응형 캐싱 프래임워크로 선언적 프로그래밍과 반응형 프로그래밍을 사용하여 애플리케이션 로직의 상당 부분을 처리한다. https://riverpod.dev/ko/docs/introduction/getting_started Getting started | Riverpod Try Riverpod online riverpod.dev 설치 공식문서 상 아래와 같은 의존성들을 주입해주어야한다는데, 굳이? 다 필요한가 싶긴하다. 예측일뿐 아직 뭐가 뭔지 모르니 우선 다 설치해주자. flutter pub add ..
[Riverpod] Riverpod 상태관리Flutter에는 많은 상태관리 패키지들이 존재한다. 그 중 Riverpod에 대해서 알아보자. Riverpod는 Provider의 anagram(철자 바꾸기)이다. Riverpod는 Flutter/Dart의 반응형 캐싱 프래임워크로 선언적 프로그래밍과 반응형 프로그래밍을 사용하여 애플리케이션 로직의 상당 부분을 처리한다. https://riverpod.dev/ko/docs/introduction/getting_started Getting started | Riverpod Try Riverpod online riverpod.dev 설치 공식문서 상 아래와 같은 의존성들을 주입해주어야한다는데, 굳이? 다 필요한가 싶긴하다. 예측일뿐 아직 뭐가 뭔지 모르니 우선 다 설치해주자. flutter pub add ..
2024.01.04 -
Firebase란? Firebase는 Google의 모바일 앱 개발 플랫폼이다. 여러가지 개발 시간 단축 및 확장 가능한 인프라가 포함되는 웹 및 모바일 애플리케이션 구축을 위한 백엔드 플랫폼이다. Firebase는 간편한 애플리케이션 구축, 애플리케이션 릴리즈 및 모니터링, 사용자 참여 및 애플리케이션 프로모션을 쉽게 추적을 제공한다. 여러가지 인프라 중 Firebase에서 제공하는 Firebase Cloud Massage(이하 FCM)을 알아보자. FCM이란? FCM은 메시지를 안정적으로 무료 전송할 수 있는 크로스 플랫폼 메시징 솔루션이다. FCM을 사용하면 새 이메일이나 기타 데이터를 동귀화할 수 있음을 클라이언트 앱에 알릴 수 있다. 이런 알림 메시지를 통해 사용자를 유지하고 재참여를 유도할 수..
[Firebase] FCM이란 ?Firebase란? Firebase는 Google의 모바일 앱 개발 플랫폼이다. 여러가지 개발 시간 단축 및 확장 가능한 인프라가 포함되는 웹 및 모바일 애플리케이션 구축을 위한 백엔드 플랫폼이다. Firebase는 간편한 애플리케이션 구축, 애플리케이션 릴리즈 및 모니터링, 사용자 참여 및 애플리케이션 프로모션을 쉽게 추적을 제공한다. 여러가지 인프라 중 Firebase에서 제공하는 Firebase Cloud Massage(이하 FCM)을 알아보자. FCM이란? FCM은 메시지를 안정적으로 무료 전송할 수 있는 크로스 플랫폼 메시징 솔루션이다. FCM을 사용하면 새 이메일이나 기타 데이터를 동귀화할 수 있음을 클라이언트 앱에 알릴 수 있다. 이런 알림 메시지를 통해 사용자를 유지하고 재참여를 유도할 수..
2024.01.02 -
Dart는 Class와 Mixin 기반 상속을 지원하는 객체지향언어다. 모든 객체는 클래스의 인스턴스이고, Null을 제외한 클래스는 모두 Object에서 비롯한다. Mixin 기반 상속이란 말은, 모든 클래스가 하나의 부모 클래스를 가지고 있지만 (최상위 클래스인 Object 제외) 클래스의 바디는 다양한 클래스 계층에서 재사용 될 수 있음을 의미한다. Dart는 extension-methods(확장 메소드)라는 것도 제공하는데, 이는 서브 클래스를 생성하거나, 클래스를 바꾸지 않고 클래스에 기능을 추가하는 방법이다. 아래의 예시로 클래스에 대해 알아보자. import 'dart:math'; class Point { double x; double y; double z = 0; Point(this.x, ..
[Dart] Dart Docs - Classes(1)Dart는 Class와 Mixin 기반 상속을 지원하는 객체지향언어다. 모든 객체는 클래스의 인스턴스이고, Null을 제외한 클래스는 모두 Object에서 비롯한다. Mixin 기반 상속이란 말은, 모든 클래스가 하나의 부모 클래스를 가지고 있지만 (최상위 클래스인 Object 제외) 클래스의 바디는 다양한 클래스 계층에서 재사용 될 수 있음을 의미한다. Dart는 extension-methods(확장 메소드)라는 것도 제공하는데, 이는 서브 클래스를 생성하거나, 클래스를 바꾸지 않고 클래스에 기능을 추가하는 방법이다. 아래의 예시로 클래스에 대해 알아보자. import 'dart:math'; class Point { double x; double y; double z = 0; Point(this.x, ..
2023.11.30 -
다른 언어에도(JAVA, Typescript, ...) 존재하는 제네릭이 Dart에도 존재한다. 일반적인 제네릭의 정의는 아래와 같다. 제네릭은 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 방식이다. Why use generics? 제네릭은 자주 타입보장이 필요할 때 사용되지만 코드가 실행가능하도록 많은 이점을 가지고 있다. 제네릭타입을 적절하게 지정하면 코드가 더 잘 생성된다. 제네릭을 사용하여 코드 중복을 줄일 수 있다. 예를들어 객체에 대한 캐시용 인터페이스를 생성해보자. abstract class ObjectCache { Object getByKey(String key); void setByKey(String ke..
[Dart] Dart Docs - Generics다른 언어에도(JAVA, Typescript, ...) 존재하는 제네릭이 Dart에도 존재한다. 일반적인 제네릭의 정의는 아래와 같다. 제네릭은 데이터 형식에 의존하지 않고, 하나의 값이 여러 다른 데이터 타입들을 가질 수 있는 기술에 중점을 두어 재사용성을 높일 수 있는 방식이다. Why use generics? 제네릭은 자주 타입보장이 필요할 때 사용되지만 코드가 실행가능하도록 많은 이점을 가지고 있다. 제네릭타입을 적절하게 지정하면 코드가 더 잘 생성된다. 제네릭을 사용하여 코드 중복을 줄일 수 있다. 예를들어 객체에 대한 캐시용 인터페이스를 생성해보자. abstract class ObjectCache { Object getByKey(String key); void setByKey(String ke..
2023.11.29 -
Dart는 아래 표의 연산자들을 지원한다. 설명 연산자 결합법칙 unary postfix expr++ expr-- () [] ?[] . ?. ! None unary prefix -expr !expr ~expr ++expr --expr await expr None multiplicative * / % ~/ Left additive + - Left shift >>> Left bitwise AND & Left bitwise XOR ^ Left bitwise OR | Left relational and type test >= > >= ^= += /= = 논리 연산자 연산자 설명 !expr 뒤따르는 식을 반전합니다 (false -> true, true -> false) || 논리 OR && 논리 AND 비트, 쉬..
[Dart] Dart Docs - OperatorsDart는 아래 표의 연산자들을 지원한다. 설명 연산자 결합법칙 unary postfix expr++ expr-- () [] ?[] . ?. ! None unary prefix -expr !expr ~expr ++expr --expr await expr None multiplicative * / % ~/ Left additive + - Left shift >>> Left bitwise AND & Left bitwise XOR ^ Left bitwise OR | Left relational and type test >= > >= ^= += /= = 논리 연산자 연산자 설명 !expr 뒤따르는 식을 반전합니다 (false -> true, true -> false) || 논리 OR && 논리 AND 비트, 쉬..
2023.11.29 -
Dart는 function이 존재하지만 객체 지향 언어이므로 함수도 Function이라는 타입을 가지는 객체로 존재한다. 기본적으로 아래와 같이 사용할 수 있다. (c/c++과 비슷한 느낌) 반환타입 함수이름(매개변수 ...) { ... 작업 return 반환할 표현식 } 하나의 표현식만을 가지는 함수를 선언할 때 한 줄 코딩도 가능하다. 반환타입 함수명(매개변수 ...) => 매개변수 + 1; Parameter Named Parameter 함수를 정의할 때 매개변수에 이름을 부여하는 것을 Named Parameter라고 한다. Named 매개변수는 required로 표시되지 않는 이상 선택적인 매개변수이다. Named Parameter를 정의하려면 아래와 같이 정의할 수 있다. String func1..
[Dart] Dart Docs - FunctionDart는 function이 존재하지만 객체 지향 언어이므로 함수도 Function이라는 타입을 가지는 객체로 존재한다. 기본적으로 아래와 같이 사용할 수 있다. (c/c++과 비슷한 느낌) 반환타입 함수이름(매개변수 ...) { ... 작업 return 반환할 표현식 } 하나의 표현식만을 가지는 함수를 선언할 때 한 줄 코딩도 가능하다. 반환타입 함수명(매개변수 ...) => 매개변수 + 1; Parameter Named Parameter 함수를 정의할 때 매개변수에 이름을 부여하는 것을 Named Parameter라고 한다. Named 매개변수는 required로 표시되지 않는 이상 선택적인 매개변수이다. Named Parameter를 정의하려면 아래와 같이 정의할 수 있다. String func1..
2023.11.24 -
Records Record는 이름있는 필드(named fields)를 갖는 불변 객체를 생성하는데 사용된다. 이는 데이터 모델의 생성 및 사용을 단순화하고 가독성을 향상시키는데 도움이 된다. 다른 컬렉션 유형(List, Set, Map...등)과 마찬가지로 여러 개체를 하나의 개체로 묶을 수 있지만 다른 컬렉션 유형과 달리 Record는 크기와 유형이 고정되어있다. Record는 Record라는 클래스가 추상클래스로 존재하지만 사용되지 않으며, 타입 선언에는 괄호 안에 들어간 인수 목록을 런타임에서 갖는 '익명' 타입이다. 또한 필드의 길이, 위치, 이름이 저장되며 코드 값과 레코드 유형은 인수 목록 및 단순화된 함수 유형 매개변수 목록과 유사하게 작성된다. 사용법 positional 필드에 기록된 이름..
[Dart] Dart Docs - Types (Records, Collections)Records Record는 이름있는 필드(named fields)를 갖는 불변 객체를 생성하는데 사용된다. 이는 데이터 모델의 생성 및 사용을 단순화하고 가독성을 향상시키는데 도움이 된다. 다른 컬렉션 유형(List, Set, Map...등)과 마찬가지로 여러 개체를 하나의 개체로 묶을 수 있지만 다른 컬렉션 유형과 달리 Record는 크기와 유형이 고정되어있다. Record는 Record라는 클래스가 추상클래스로 존재하지만 사용되지 않으며, 타입 선언에는 괄호 안에 들어간 인수 목록을 런타임에서 갖는 '익명' 타입이다. 또한 필드의 길이, 위치, 이름이 저장되며 코드 값과 레코드 유형은 인수 목록 및 단순화된 함수 유형 매개변수 목록과 유사하게 작성된다. 사용법 positional 필드에 기록된 이름..
2023.11.23 -
변수 선언 var 키워드를 사용한다면, Dart 역시 Javascript/Typescript와 같이 타입추론을 통해 변수를 선언할 수 있다. 또한, String이라던지 구체적으로 타입을 명시하여 선언할 수도 있다. 만약 객체가 단일 타입으로 제한되지 않는다면, Object 타입으로 명시할 수 도 있다. var name = "Wonil" String name = "WONILLISM" Object name = "WONIL" 변수 타입 그렇다면 어떤 종류의 변수들을 제공하는지 알아보자. Built-in types Numbers (int, double) String (String) Booleans (bool) Records ((value1, value2)) Lists (List, 배열) Sets (Set) Ma..
[Dart] Dart Docs - Variables변수 선언 var 키워드를 사용한다면, Dart 역시 Javascript/Typescript와 같이 타입추론을 통해 변수를 선언할 수 있다. 또한, String이라던지 구체적으로 타입을 명시하여 선언할 수도 있다. 만약 객체가 단일 타입으로 제한되지 않는다면, Object 타입으로 명시할 수 도 있다. var name = "Wonil" String name = "WONILLISM" Object name = "WONIL" 변수 타입 그렇다면 어떤 종류의 변수들을 제공하는지 알아보자. Built-in types Numbers (int, double) String (String) Booleans (bool) Records ((value1, value2)) Lists (List, 배열) Sets (Set) Ma..
2023.11.22