-
Dart 문법 정리Flutter 2023. 7. 28. 15:40728x90반응형SMALL
1. 변수 선언
// 정수 int variable1 = 10; // 소수 double variable2 = 2.5; // 참/거짓 bool variable3 = true, false; // 문자열 String varibale4 = "문자열"; // 타입 자동 유추 var variable5 = "var"; dynamic variable6 = "dynamic";
dynamic과 var의 차이
var
은 선언 시 지정한 타입으로 고정되어 다른 타입을 할당 할 수 없습니다.dynamic
은 선언 시 지정한 타입과 다른 타입으로 할당 할 수 있습니다.
dynamic variable1 = "dynamic"; var variable2 = "var"; variable1 = 10 variable2 = 10 // 오류
nullable & non-nullable
타입 뒤에
?
연산자를 붙여주면 null일 가능성이 있는 nullable 변수라는 뜻입니다.String? variable1 = "hi hi"; variable = null;
nullable한 변수 뒤에
!
를 넣어주면 이 nullable 변수가 null이 아니라는 것을 단언해주는 것입니다.final & const
final String name1 = "cotton"; const String name2 = "cotton";
두 키워드는 모두 선언된 변수를 변경 할 수 없도록 해줍니다.
두 키워드로 선언된 변수는 다시 변경 할 수 없으므로 타입을 생략해서 선언해주어도 됩니다.
두 키워드의 차이점
const
키워드는 빌드 타임 당시 할당 되는 값을 알고 있어야 합니다. (DateTime.now()
와 같이 런타임 당시에 정해지는 값은 지정 할 수 없습니다)final
키워드는 빌드 타임 당시 할당 되는 값을 알고 있지 않아도 됩니다.
연산자
int num1 = 1; int num2 = 2; // 더하기 print(num1+num2); // 3 // 빼기 print(num1-num2); // -1 // 나누기 print(num1/num2); // 0.5 // 곱하기 print(num1*num2); // 2 num1+=1; print(num1); //2 num1-=1; print(num1); // 1 num1*=2; print(num1); // 2 num/=2; print(num1); //1 // 단항 연산자 num1++; print(num1) // 2; bool bool1 = true; print(bool1!); // false // 논리 연산자 bool bool2 = true && true; // true bool bool3 = false && true; // false bool bool4 = true || false; // true bool bool5 = false || false; // false // null check int? num3 = 3; int? num4 = null; num3 ??= 4; //왼쪽 변수가 null 일 때만 오른쪽의 값을 할당해줍니다. num4 ??= 4; //왼쪽 변수가 null 일 때만 오른쪽의 값을 할당해줍니다. print(num3); // 3 print(num4); // 4 // 크기 비교 print(num1<num2); // true print(num1>num2); // false print(num1==num2); // false print(num1!=num2); // false print(num1<=num2); // true print(num1>=num2); // false // 타입 비교 print(num1 is int); // true print(num1 is! int); // false
리스트
List<T>
generic 타입으로 리스트 원소의 타입을 지정해줍니다.List<String> stringList = ['s1','s2','s3']; print(stringList[0]); // s1 print(stringList.length); // 3 stringList.add('s4'); print(stringList[3]); // s4 stringList.remove('s3'); print(stringList); // s1, s2, s4 print(stringList.indexOf('s2'); // 1
맵
Map<K,V>
키와 밸류 타입을 지정해줄 수 있습니다.Map<String, String> map1 = {'key1':'value1'}; // 값 추가 map1.addAll({'key2','value2'}); map1['key3'] = 'value3'; // value 반환 print(map1['key2']); // value2 // 값 제거 map1.remove('key2'); print(map1.keys) // key1, key3 print(map1.values) // value1, value2
셋
Set<T>
T타입의 집합입니다. 중복된 값이 없도록 저장해줍니다.Set<int> set1 = {1,2,3,4,5}; set1.add(6); set1.add(4); print(set1) // 1,2,3,4,5,6 print(set1.contains(4)); // true
if 문 for문 while 문
if(조건1){ 실행문1 ... } else if(조건2){ 실행문2 ... } else { 실행문3 ... } switch(변수) { case 조건1: 실행문1 break case 조건2: 실행문2 break default: 실행문3 break } for(반복 변수 선언; 반복 조건; 반복 변수 연산){ 실행문 } // 예시2 for(int i=0;i<10;i++){ 실행문 } // 예시2 List<int> numberList = [1,2,3,4,5]; for(int number in numberList){ 실행문 } while(반복 조건){ 실행문 } // break, continue for(int i=0; i<10; i++){ ... if(i==5){ break; } ... } // i가 4까지만 반복됩니다. int i=0 while(i<10){ i+=1; if(i==4){ continue; } print(i); } // 4는 출력되지 않습니다.
함수
<Type> <함수명>(<매개변수 타입> <매개변수 명>){ 실행문 } void add(int n1, int n2, int n3){ print(n1+n2+n3); } add(1,2,3); // 6
optional parameter
매개 변수 중 항상 필요한 매개 변수가 아닐 경우 optional parameter로 선언할 수 있습니다.
optional parameter는 미리 값을 할당해 줌으로써 인자를 받지 못해도 실행문 상에서 사용되도록 할 수 있습니다.
optional paramter에 새로운 값을 넣어주면 미리 할당해준 값들은 무시가 되고 새로 들어온 값이 매개변수에 할당됩니다.
void add(int n1, [int n2=2, int n3=3]){ print(n1+n2+n3); } add(1); // 6 add(1,5,10); // 16
named paramter
이전까지의 매개변수는 모두 순서를 통해 어떤 매개변수인지 구분하는 매개변수였습니다.
named paramter는 이름으로 매개변수들을 구분해줍니다.
매개 변수의 default는 optional parameter이고 꼭 필요한 매개변수인 경우 required 키워드를 지정해주어야만 합니다.
void add({ required int x, required int y, int z=10 // z는 optional parameter이므로 꼭 default 값을 넣어주어야 합니다. }){ print(x+y+z); } add(x: 1, y: 2); // 13 add(x: 1, y: 2, z: 3); // 6
arrow function
실행문이 한 줄로 짧고 반환되는 값이 있을 경우 사용됩니다.
int add(int num1, int num2) => num1+num2; print(add(4,5)) // 9
typedef
함수에 대한 타입을 가질 수 있습니다.
이로 인해 함수를 함수의 매개변수로 가질 수도 있고 반환 타입으로 설정 할 수 있습니다.
typedef Operation = int Function(int x,int y); int add(int x, int y) => x+y; int func(int x, int y, Operation f){ return f(x,y); } print(func(1,2,add)) // 3 typedef o1 = int Function(int x1, int x2); o1 func(int x4, int x5){ int v1(int x1, int x2){ return x4+x5+x1+x2; } return v1; } print(func(4,5)(1,2)) // 12
반응형LIST'Flutter' 카테고리의 다른 글
Flutter + Spring Boot 가족, 모임 서비스 구현하기 1 (Feat. 카카오 로그인) (2) 2023.08.11 Google Codelabs Flutter 앱 만들기 실습 2 (0) 2023.08.03 Google Codelabs Flutter 앱 만들기 실습 1 (0) 2023.08.02 Flutter 기본 위젯, 레이아웃 설정 방법 (0) 2023.07.26 Flutter 설치 (Mac M1 Pro) (0) 2023.07.25