| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
- riverpid
- FutureProvider
- Happy moment
- StreamProvider
- 정리
- flutter
- flutter_secure_storage
- Flutter 상태관리
- StateProvider
- StateNotifierProvider
- 가공
- fetch
- 데이터
- Today
- Total
This Week's Record
[Flutter] Dart 문법 요약 본문
<목차>
I 변수
II 자료형
III 흐름 제어문
IV 함수
V 클래스
들어가기 전
main(){} : main은 Dart에서 처음 시작 시 호출하는 약속된 함수
// : 주석
print() : print의 소괄호 안쪽에 값을 넣으면 console에 값이 출력
; : Dart에서는 마지막에 세미콜론을 찍어줌
I 변수
변수 만들기

1. 자료형(상자가 담을 수 있는 재료의 종류)
- var : 처음 담긴 값으로 타입지정
- String : 문자만
- String? : 문자 또는 null상태
- final String : 문자를 한 번 담은 뒤 재할당 불가
2. 변수명(상자의 이름)
- Dart의 변수명 만드는 규칙
- 영문, _, $, 숫자 만 사용!
- 숫자로 시작불가
- 카멜케이스(camelCase)사용
3. 변수에 담으려는 값(상자에 담기는 것)

II 자료형
| 자료형 | 설명 | 예시 |
| String | ''와 ""로 이루어진 문자열 | "안녕", '집' |
| int double |
int = 정수 double = 실수 |
1, -1 1.5, -1.5 |
| bool | 참 거짓을 나타내는 자료형 비교 연산시 bool을 반환 |
true false |
| List<T> | 데이터를 가진 여러가지 배열 | [1, 2, 3] |
| Map<K, V> | 마치 사전처럼 {key : value}의 형태 key와 value에 모든 자료형이 올 수 있음 |
{ 'name':'철수', 'age':20 } |
| dynamic | 모든 자료형을 담을 수 있음 | dynamic name = "hi"; name = 1; |
예제들





Map<key값이 어떤 자료형을 받을지, value값이 어떤 자료형을 받을지>

III 흐름 제어문
조건문
1. if문
: 조건에 따라 실행하고 싶은 코드를 분기할 때 사용한다.
if (bool1) {
// bool1이 true면 실행
} else {
// bool1이 false면 실행
}
조건문은 else if 형태로 계속 꼬리를 물 수 있다. 앞에서 부터 하나씩 비교해서 진행하면서 하나라도 true가 되어 실행되면, 뒤에 있는 조건문은 실행되지 않는다.

2. AND 와 OR 연산자
AND = && : 두 값이 모두 참일때 true 반환
OR = || : 두 값중에 하나라도 참이라면 true 반환

반복문
1. 반복문
: 반복문은 특정한 코드를 반복해서 흐름을 제어하는 방법. (=for문)
2. 반복문 구성

- int i = 0 : i라는 변수가 0으로 시작합니다. (한 번만 실행됩니다)
- i < 5 : i 의 값이 5보다 작은지 조건 확인 -> true일때는 계속진행, false일때 반복문 종료
- print('hello ${i+1}') : 반복해 실행하는 코드영역
- i++ : 코드가 1번 반복될 때마다, 1만큼 1값을 증가시키고 다음흐름으로 넘어감

3. 배열과 반복문
반복문은 배역의 원소를 꺼내는 index에 적용하면 배열의 모든 원소를 쉽게 꺼낼 수 있음

IV 함수(function)
함수는 여러 코드를 묶어둔 상자
1. 함수의 호출 & 실행 순서

- say : 함수의 이름
- 카멜케이스 규칙(:getName 이런식으로 문자사이 첫글자 대문자쓰는 규칙)
- getAge, say, print 와 같이 일반적으로 동사로 시작!
- 중괄호 안{} : 함수가 가진 실행코드
- 함수 호출 방법 : say()
2. 함수의 입력
2-1. 함수에 값 입력받기

2-2. 함수에 입력 값 여러개 받기

2-3. 함수에 입력 값을 이름과 함께 전달하는 방법
함수를 호출하는 과정에서 from에 "영희"를 넣을래! 도 가능-

2-4. 이름지정 매개변수의 값을 필수로 전달하도록 만드는 방법

2-5. 이름지정 매개변수도 값을 여러개 전달할 수 있음

3. 함수의 출력


4. 입출력 예제

V 클래스(Class)
클래스는 변수와 함수를 모아둔 틀
1. 클래스 생김새
class 클래스이름 {
}
클래스 이름 : 파스칼케이스(PascalCase)를 따름 (카멜케이스에서 첫 문자도 대문자로!)
ThisIsClass
2. 클래스의 구성 요소
- 속성(Property) : 클래스 내의 변수
- 메소드(Method) : 클래스 내의 함수
- 생성자(Constructor) : 클래스 명과 동일한 함수
- 즉, 변수와 함수로 이루어져 있음!
- 클래스는 미리 코드들, 속성들을 미리 묶어두고 쉽게쉽게 복제하고 쓸 수 있게 하는 것. (개인적으로 약간 템플릿 느낌!)
2-1. 속성(Property) : 클래스 내의 변수를 속성이라 부릅니다.
class Bread {
// Bread 클래스가 가진 content 속성
String content = "팥";
}
-> 왜 속성일까요? :
2-2. 메소드(Method) : 클래스 내의 함수를 메소드라 부릅니다.
class Bread {
String content = "팥";
// Bread 클래스가 가진 getDescription 메소드
String getDescription() {
return "맛있는 $content빵입니다."; // 맛있는 팥빵입니다.
}
}
2-3. 생성자(Constructor) : 클래스명과 동일한 함수를 생성자(constructor)라 부릅니다.
class Bread {
// 생성자
Bread() {
}
}
//------------------------ 중괄호 생략가능(아래) ------------------------
class Bread {
// 생성자
Bread();
}
//----------------- 생성자 함수에 입력값을 전달 받아 속성에 넣을 수 있음 -----------------
class Bread {
String? content;
// 생성자 호출시 core를 전달 받습니다.
Bread(String core) {
content = core; // 전달 받은 core를 content에 넣어줍니다.
}
}
3. 인스턴스(Istance)

/// Copyright 2022. ⓒ DevStory.co.kr All rights reserved.
void main() {
// 인스턴스(instance) 만들기
Bread bread1 = Bread('팥'); // 클래스의 생성자를 호출하여 인스턴스(instance)를 만듭니다.
Bread bread2 = Bread('크림');
// 속성 호출
print(bread1.content); // 팥
print(bread2.content); // 크림
// 메소드 호출
print(bread1.getDescription()); // 맛있는 팥빵입니다.
print(bread2.getDescription()); // 맛있는 크림빵입니다.
}
class Bread {
String? content; // 클래스 속 변수를 속성(property)라고 부릅니다.
Bread(String core) { // 클래스명과 동일한 이 함수를 생성자(constructor)라고 부릅니다.
content = core;
}
String getDescription() { // 클래스 속 함수를 메소드(method)라고 부릅니다.
return "맛있는 $content빵입니다.";
}
}
Bread라는 클래스가 있음 - 이 클래스는 content라는 속성이 있음
(이 속성은 언제 정해지냐? : 생성자가 호출될 때 정해짐,) -> content
(생성자는? 이 클래스를 통해서 인스턴스를 만들어낼때 호출되는 함수) -> 위의 함수에서는 Bread(String core)
4. 상속(extends)
/// Copyright 2022. ⓒ DevStory.co.kr All rights reserved.
void main() {
Bread bread = Bread();
Cookie cookie = Cookie();
print(bread.madeBy); // TousLesJours
print(cookie.madeBy); // TousLesJours
}
// 빵 : TousLesJours를 상속받음(=변수와 함수를 그대로 전달받음)
class Bread extends TousLesJours {
}
// 쿠키 : TousLesJours를 상속받음(=변수와 함수를 그대로 전달받음)
class Cookie extends TousLesJours {
}
// 뚜레쥬르
class TousLesJours {
String madeBy = "TousLesJours";
}
- class 클래스A extends 클래스B : 클래스B의 변수와 함수를 클래스A에서 그대로 사용 가능 (=클래스A 가 클래스B를 상속함)
- 변수와 함수를 물려받은 클래스A : 자식(child)
- 기능을 물려준 클래스B : 부모(super)
- extends <클래스> -> "아 저 클래스가 가진 변수와 함수를 물려받아 그대로 쓸 수 있구나!"
5. Dart의 모든 것은 Class
자료형도 모두 Class로 구성되어있다!
공식문서에 Constructor(생성자) / Properties(속성) / Methods(메소드)가 뭘 의미하는지 이제는 알 수 있을거다~