Flutter 실전으로 들어가기 전에 Dart 문법을 익혀보자!
간단하게 웹으로 Dart 를 실행 할 수 있는 DartPad 로 익혀보자
Dart 변수와 타입 확인
${} 를 사용하면 문자열에 변수를 바인딩 할 수 있다.
void main () {
int n1 = 1;
double d1 = 10.1;
bool b1 = true;
String s1 = "홍길동";
print("정수 : ${n1}");
print("실수 : ${d1}");
print("부울 : ${b1}");
print("스트링 : ${s1}");
print("-----------------------");
print("정수 : ${n1.runtimeType}");
print("실수 : ${d1.runtimeType}");
print("부울 : ${b1.runtimeType}");
print("스트링 : ${s1.runtimeType}");
}
결과

타입 추론
Dart 언어는 타입 추론을 지원
값이 들어올 때 타입을 추론하여 변수를 초기화한다
var 과 dynamic 의 차이
var 은 타입 변경이 불가능
dymanic 은 타입변경이 가능
var
void main () {
var n1 = 1;
var d1 = 10.1;
var b1 = true;
var s1 = "홍길동";
print("정수 : ${n1}");
print("실수 : ${d1}");
print("부울 : ${b1}");
print("스트링 : ${s1}");
print("-----------------------");
print("정수 : ${n1.runtimeType}");
print("실수 : ${d1.runtimeType}");
print("부울 : ${b1.runtimeType}");
print("스트링 : ${s1.runtimeType}");
}
결과

var 로 한 번 초기화 된 데이터 타입은 다른 타입 으로 변경이 불가능하다.
void main () {
var n1 = 1;
var d1 = 10.1;
var b1 = true;
var s1 = "홍길동";
print("정수 : ${n1}");
print("실수 : ${d1}");
print("부울 : ${b1}");
print("스트링 : ${s1}");
print("-----------------------");
print("정수 : ${n1.runtimeType}");
print("실수 : ${d1.runtimeType}");
print("부울 : ${b1.runtimeType}");
print("스트링 : ${s1.runtimeType}");
n1 = 10.5;
print("타입 추론 결과 : ${n1}");
}
결과

dynamic
dynamic 타입은 모든 타입을 받을 수 있고 다른 타입으로도 변경도 가능
void main () {
dynamic n1 = 1;
print("정수 : ${n1.runtimeType}");
// dynamic 타입은 모든 타입을 받을 수 있고 다른 타입으로도 변경도 가능
n1 = 0.5;
print("타입 변경 : ${n1.runtimeType}");
n1 = "안녕하세요?";
print("타입 변경 : ${n1.runtimeType}");
}
결과

연산자
산술연산자
수학에서 사용하는 사칙연산과 나머지 연산을 포함하는 연산자 몫을 구하는것도 포함
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("3~/2= ${3~/2}");
}
결과

비교 연산자
두 개의 값을 비교하여 결과를 참/거짓으로 반환하는 연산자
void main() {
// 같다
print("2=3 -> ${2 == 3}");
// 다르다
print("2!=3 -> ${2 != 3}");
// 왼쪽 값 보다 크다
print("2<3 -> ${2 < 3}");
// 왼쪽 값 보다 작다
print("2>3 -> ${2 > 3}");
// 왼쪽 값 보다 크거나 같다
print("2<=3 -> ${2 <= 3}");
// 왼쪽 값 보다 작거나 같다
print("2>=3 -> ${2 >= 3}");
}
결과

논리연산자
두 개의 참/거짓 값으로 새로운 참/거짓을 반환하는 연산자
void main() {
// 부정
print("!true -> ${!true}");
// 그리고
print("true && false -> ${true && false}");
print("true && true -> ${true && true}");
// 또는
print("true || true -> ${true || false}");
}
결과

조건문
조건이 참이면, 참이 아니면 구분
void main() {
int point = 90;
if (point >= 90) {
print("A");
} else if (point >= 80) {
print("B");
} else if (point >= 70) {
print("C");
} else if (point >= 60) {
print("D");
} else if (point >= 50) {
print("F");
}
}
결과

삼항연산자
조건식 ? 참이면 실행 : 거짓이면 실행
void main() {
int point = 90;
// 조건식 ? "참" : "거짓"
print(point >= 60 ? "합격ㅋ" : "불합격ㅋ");
}
결과

null 대체 연산자
변수의 값이 null 이면 ?? 뒤의 값 출력, null 이 아니면 변수의 값이 출력
void main() {
var username = null;
print(username);
// 변수 값이 null 이면 "김나무"
print(username ?? "김나무");
}
결과

함수
함수란 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 코드의 집합
함수를 사용하는 이유는 반복적인 프로그래밍을 피하고 코드를 재사용할 수 있게 해준다.
함수로 코드를 나누어 작성하면 모듈화가 되고 가독성이 좋아지면서 문제가 발생 했을 때 손쉽게 유지보수 할 수 있다.

void main() {
// add(2) => call function
// (2) => 함수 호출 시 전달 인수
// int result => 반환된 결과 값을 받는 변수
int result = add(2);
print("result = ${result}");
}
int add(int n) {
// int => return type
// add => function name
// (int n) => parameter
// retrun n+1 => retrun result
return n+1;
}
결과

구구단을 출력하는 함수
void main() {
gogodan(3);
}
void gogodan(int num) {
print("${num} * 1 = ${num*1}");
print("${num} * 2 = ${num*2}");
print("${num} * 3 = ${num*3}");
print("${num} * 4 = ${num*4}");
print("${num} * 5 = ${num*5}");
print("${num} * 6 = ${num*6}");
print("${num} * 7 = ${num*7}");
print("${num} * 8 = ${num*8}");
print("${num} * 9 = ${num*9}");
}
결과

익명함수와 람다식
익명함수와 람다식의 가장 큰 차이
익명함수 -> return 키워드 필수
람다식 ㄱㅊㅋ
익명함수 말 그대로 이름이 없다
(매개변수){동작 혹은 반환값}
1
// 함수를 매개변수로 전달 받을 때에는 Function 키워드를 사용
void magicBox(Function f) {
f();
}
void main() {
// 익명 함수를 인수로 전달할 수 있다.
magicBox(() {
print("Hello world!!");
});
}
결과

2
// 변수에 익명 함수를 대입할 수 있다
// 이때 Function 타입을 사용
Function add = (int n1, int n2) {
print(n1 + n2);
};
void main() {
add(1,3);
}
결과

람다식
함수를 하나의 식으로 표현
(매개변수) => 동작 혹은 반환 값
void main() {
// 람다 표현식
Function addOne = (n) => n + 1;
print(addOne(6));
// 익명함수
Function addTwo = (n) {
return n + 2;
};
print(addTwo(2));
}
결과

** function 은 클래스 외부에 존재하고 method 는 클래스 내부에 존재
'App > Flutter' 카테고리의 다른 글
| Flutter 이해하기 (0) | 2022.05.16 |
|---|