Flutter
💡
앱 작성을 하면서 필요한 개념 정리
변수
var (default)
var name = 'name';
Object name = 'name';
String name = 'name';
late
- null 이 되지 않는 변수를 선언하고 나중에 초기화 할 때 사용
late String description;
void main() {
description = 'Feijoada!';
print(description);
}
final, const
- final
runtime 에 초기화되는 값 설정 가능
- const
compile 때 초기화 가능 즉
const DateTime now1 = new DateTime.now(); // error
Types
- int, double
num ⇒ int, double 모두 설정 가능
// String -> int
var one = int.parse('1');
assert(one == 1);
// String -> double
var onePointOne = double.parse('1.1');
assert(onePointOne == 1.1);
// int -> String
String oneAsString = 1.toString();
assert(oneAsString == '1');
// double -> String
String piAsString = 3.14159.toStringAsFixed(2);
assert(piAsString == '3.14');
- String
다음 줄에 넘겨쓰기, + 로 문자열 붙이기 가능
var s = 'string interpolation';
assert('Dart has $s, which is very handy.' ==
'Dart has string interpolation, '
'which is very handy.');
assert('That deserves all caps. '
'${s.toUpperCase()} is very handy!' ==
'That deserves all caps. '
'STRING INTERPOLATION is very handy!');
// These work in a const string.
const aConstNum = 0;
const aConstBool = true;
const aConstString = 'a constant string';
// These do NOT work in a const string.
var aNum = 0;
var aBool = true;
var aString = 'a string';
const aConstList = [1, 2, 3];
const validConstString = '$aConstNum $aConstBool $aConstString';
// const invalidConstString = '$aNum $aBool $aString $aConstList';
- bool
- List
var list = [1, 2, 3];
var list2 = [0, ...list];
assert(list2.length == 4);
var list;
var list2 = [0, ...?list];
assert(list2.length == 1);
var nav = [
'Home',
'Furniture',
'Plants',
if (promoActive) 'Outlet'
];
var listOfInts = [1, 2, 3];
var listOfStrings = [
'#0',
for (var i in listOfInts) '#$i'
];
assert(listOfStrings[1] == '#1');
- Set
var elements = <String>{};
elements.add('fluorine');
elements.addAll(halogens);
assert(elements.length == 5);
- Map
var gifts = Map<String, String>();
gifts['first'] = 'partridge';
gifts['second'] = 'turtledoves';
gifts['fifth'] = 'golden rings';
var nobleGases = Map<int, String>();
nobleGases[2] = 'helium';
nobleGases[10] = 'neon';
nobleGases[18] = 'argon';
- Runes
- Symbol
- Null
Function
Lamda
isNoble(atomicNumber) {
return _nobleGases[atomicNumber] != null;
}
bool isNoble(int atomicNumber) => _nobleGases[atomicNumber] != null;
//윗줄과 같음
Parameters
💡
parameter는 선택하여 넘길 수 있지만 null이 될 수 없다.
Optional positional parameters
String say(String from, String msg, [String? device]) {
var result = '$from says $msg';
if (device != null) {
result = '$result with a $device';
}
return result;
}
Functions as first-class objects
void printElement(int element) {
print(element);
}
var list = [1, 2, 3];
// Pass printElement as a parameter.
list.forEach(printElement);
Null safety
- non-nullable by default
기본적으로 null을 사용하지 않는것을 규칙으로 함 즉 변수를 선언시 초기화 필요
자료형 뒤에 ? 를 붙여 Null 사용 가능
int? nullableVar;