반응형
Flutter의 기본 언어는 Dart 이다.
Dart 의 기초 지식을 간단하게 잡아보도록 하자.
각 부분에서 간단하게 예제에 주석으로 설명을 덧붙였다.
자료형 ( Variable )
1 ) Dart 의 자료형 타입.
// 문자 타입
String strVal;
// 정수 타입
int intVal;
// 실수 타입
double dobVal;
// 참, 거짓
bool boolVal;
2 ) var 와 dynamic 의 차이
var 는 자료형 타입이 고정되어 변경이 불가하지만 dynamic 은 자료형 타입이 고정되지 않아 변경이 가능하다.
// [불가] - 문자 타입의 var 에 1 을 집어넣지 못함
var userName = 'aeco';
userName = 1;
// [가능] - 문자 타입의 dynamic 에 1 을 넣어 숫자 타입으로 변경 됨
dynamic userName = 'aeco';
userName = 1;
3 ) 상수 변수
상수 변수는 값이 변경 되지 않는 변수이다.
final 변수와 const 변수가 있는데 final 은 런타임 때, const 는 컴파일 때 변수가 생성이 된다.
final String userName1 = 'aeco';
const String userName2 - 'aeco';
반응형
컬렉션 ( Collection )
1 ) List
List 는 Java 의 List 와 별 차이가 없다.
List<String> strList = ['aeco1', 'aeco2', 'aeco3'];
print(strList); // > [aeco1, aeco2, aeco3]
print(strList[0]); // > aeco1
print(strList.length); // > 3
2 ) Map
Key 와 Value 형태의 컬렉션이다.
Map<String, String> testMap = {};
testMap['userName'] = 'aeco'; // java의 map.put() 형태
testMap['userAge'] = '31';
print(testMap); // > {userName: aeco, userAge: 31}
print(testMap.keys); // > (userName, userAge)
print(testMap.values); // > (aeco, 31)
print(testMap['userName']); // > aeco
testMap.remove('userAge'); // remove()
print(testMap); // > {userName: aeco}
testMap.clear(); // clear()
print(testMap); // > {}
3 ) Set
Key 와 Value 형태로 이루어져 있어 Map 과 유사하지만 중복 값을 허용하지 않는다.
Set<String> testSet = {'aeco1', 'aeco2', 'aeco1'};
// aeco1는 중복되어 한번만 출력
print(testSet); // > {aeco1, aeco2}
// 값이 있으면 true, 없으면 false 리턴
print(testSet.contains('aeco1')); // > true
// Set -> List
print(testSet.toList()); // > [aeco1,aeco2]
컬렉션 탐색 함수
1 ) where 함수
final whereVal = strList.where((val) => val == 'aeco1' || val == 'aeco2');
print(whereVal); // > (aeco1, aeco2)
print(whereVal.toList()); // > [aeco1, aeco2]
2 ) map 함수
final mapVal = strList.map((data) => 'map $data');
print(mapVal); // > (map aeco1, map aeco2, map aeco3)
3 ) reduce 함수
// 순회할 때 마다 값이 쌓임 (return 되는 값이 다음 value로 들어감)
// ex ) 순회 순서
// 1 ) value: aeco1 element: aeco2 => aeco1,aeco2
// 2 ) value: aeco1,aeco2 element: aeco3 => aeco1,aeco2,aeco3
final reduceVal = strList.reduce((value, element) => value + ',' + element);
print(reduceVal);
4 ) fold 함수
// reduce 함수와 순회하며 값이 쌓이는 건 같음
// => reduce와 차이점은 초기값을 설정가능하고, 초기값이 첫 순회때 value에 들어감.
// ex ) 순회 순서
// 1 ) value: @, element: aeco1 => @aeco1
// 2 ) value: @aeco1, element: aeco2 => @aeco1aeco2
// 3 ) value: @aeco1aeco2, element: aeco3 => @aeco1aeco2aeco3
final foldVal = strList.fold<String>("@", (value, element) => value + element);
print(foldVal);
물음표 연산자
Dart의 연산자는 Java의 연산자와 거의 대부분이 동일하다.
눈여겨 볼 것은 물음표 연산자가 있는데 이 연산자만 살펴보도록 하자.
자료형 타입 뒤에 ? 를 붙이면 해당 변수는 null 을 가질 수 있게 된다.
// 타입 뒤에 ?를 명시해서 null값을 가질 수 있음
double? number1 = null;
// 타입 뒤에 ?를 명시하지 않아 에러가 남
double number2 = null;
연산자에 물음표를 사용하게 되면 null 일 때만 값을 대입한다던지가 가능해진다.
double? number; // 자동으로 null값 지정
print(number);
number ??= 3; // ??를 사용하면 기존 값이 null일 때만 저장
print(number);
number ??= 4; // null이 아니기 때문에 기존 3이 그대로 유지
print(number);
반응형
'Coding Story > FLUTTER' 카테고리의 다른 글
[Flutter] 플러터 설치 및 환경변수 설정(안드로이드, vsCode) (0) | 2023.02.11 |
---|