티스토리 뷰
변수
선언 [ var, dynamic ]
void main() {
/// int num1 = 1;
var num2 = 2;
dynamic num3 = 3;
}
var과 dynamic 둘다 타입을 추론을 하는 방식입니다. 둘다 자료형을 명시 해주지 않아도 됩니다.
기본적으로 var을 사용할 하고, dynamic은 함수와 같이 사용합니다. ( dynamic은 object 느낌 )
선언을 하지 않으면 기본 값으로 null이 들어갑니다.
num
num은 int형과 double형 입니다.
void main() {
num number1 = 1;
num number2 = 1.1;
}
문자열 [ ' ', " " ]
void main() {
var str1 = "Flutter";
var str2 = 'Flutter';
}
문자열은 ' '와 " "로 나타낼 수 있습니다.
void main() {
var str3 = '1번''2번''3번';
var str4 = '1번'+'2번'+'3번';
var str5 = '''
1번
2번
3번
''';
}
그리고 위와 같은 방법으로 문자를 합칠 수 있습니다.
final과 상수 [ final, const, static ]
void main() {
final name = '리프';
const age = 19;
static const email = "itggood2420@gmail.com"
}
final과 const는 둘다 한번 선언하면 값을 변경할 수 없다는 특징을 가지고 있습니다.
다른 점이라면 const는 메모리에 값을 저장합니다.
static은 클래스의 멤버 변수에 바로 참조할 수 있게 합니다.
is, as
is는 왼쪽의 자료형이 오른쪽과 같은지 확인을 하여 Boolean을 반환하고, as는 타입 캐스팅을 해줍니다.
void main() {
const num = 1;
print(num is int);
print(num is! int);
print(num as int);
}
Collection
List
void main() {
List<String> list1 = ['1', '2', '3'];
var list2 = ['1', '2', '3'];
}
Set
void main() {
var set = {'1', '2', '3'};
}
set은 list와 다르게 {}를 사용합니다.
Map
void main() {
var map = {
'key1': '1',
'key2': '2',
'key3': '3'
};
}
NULL 처리
void main() {
String name;
print(name ?? 'Null');
print(name?.toUpperCase());
}
print(name ?? 'Null');
??은 null이면 기본 값을 넘겨줍니다.
print(name?.toUpperCase());
?.은 null이 아닐 경우에만 실행을 해줍니다.
함수
void main() {
}
기본적인 함수의 구조입니다.
반환형 이름() {}
Async, Await
Async는 비동기 함수를 선언할 때 사용하고 Await은 함수의 결과를 기다리는데 사용합니다.
async는 await을 만나면 실행을 하고, Future 객체를 반환합니다.
예외 처리는 try-catch를 사용합니다.
Future<String> string() async => 'Hello, World';
Future getString() async {
var str = await string();
}
void main() {
getString();
}
Class
다트언어에는 private가 없기 때문에 private로 만들고 싶으면 변수 이름 앞에 _를 붙이면 됩니다.
class Example {
String _name;
}
class Example {
String _name;
void setName(String name) => _name = name;
void getName() => print(_name);
}
void main() {
var ex1 = Example();
ex1.setName('리프');
ex1.getName();
var ex2 = Example()
..setName('리프')
..getName();
}
implements
다트에는 interface가 없습니다. 하지만 implements를 통해 interface로 사용 가능합니다.
implements는 강제로 전부 override 해야됩니다.
import 'classExample.dart';
class Person implements Example {
@override
void getName() {
}
@override
void setName(String name) {
}
}
with
만약 부분만 override 하고 싶으면 with를 사용하면 됩니다.
import 'classExample.dart';
class Person with Example {
@override
void getName() {
}
}
'알려주는 이야기 > Flutter' 카테고리의 다른 글
Flutter - RaisedButton 위젯 (0) | 2020.07.21 |
---|---|
Flutter - Text, Image 위젯 (0) | 2020.07.18 |
Flutter - 위젯 개념과 생명주기 (0) | 2020.07.17 |
Flutter - 앱 구조 확인하기 (0) | 2020.07.17 |
Flutter - 플러터 시작하기 (1) | 2020.07.06 |