■ Future<T> 클래스의 then 메소드를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
import 'dart:async'; void main() async { print('begin main'); await GetVersionName().then((value) => {print(value)}); print('end main'); } Future<String> GetVersionName() async { String versionName = await 'Android Q'; return versionName; } |
■ Future 클래스에서 async/await 키워드를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
import 'dart:async'; void main() async { print('begin main'); await checkVersion(); print('end main'); } Future checkVersion() async { print('begin checkVersion'); var version = await getVersion(); print(version); print('end checkVersion'); } int getVersion() { try { print('begin getVersion'); return 12; } finally { print('end getVersion'); } } |
■ Future<T> 클래스에서 async/await 키워드를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
import 'dart:async'; void main() async { print('begin main'); await printVersionName(); print('end main'); } Future<String> printVersionName() async { String versionName = await getVersionName(); print(versionName); return versionName; } String getVersionName() { return 'Android Q'; } |
■ import 키워드를 사용해 입출력 패키지를 임포트하는 방법을 보여준다. ▶ 예제 코드 (DART)
■ import 키워드를 사용해 비동기 패키지를 임포트하는 방법을 보여준다. ▶ 예제 코드 (DART)
■ Random 클래스의 nextInt 메소드를 사용해 정수 난수를 구하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
import 'dart:math'; double size = random.nextInt(200).toDouble() + 100; |
■ List<T> 클래스의 generate 정적 메소드를 사용해 리스트를 생성하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
void main() { List<int> list = List.generate(100, (i) => i).toList(); list.forEach(print); } |
■ DateTime 클래스의 difference 메소드를 사용해 차이 기간을 구하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
void main() { DateTime dateTime1 = DateTime(2021, 1, 12); DateTime dateTime2 = DateTime(2021, 4, 18); Duration duration = dateTime2.difference(dateTime1); print(duration.inDays); } |
■ DateTime 클래스의 add 메소드를 사용해 기간을 더하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
void main() { DateTime dateTime1 = DateTime.now(); DateTime dateTime2 = dateTime1.add(const Duration(days: 60)); print(dateTime1); print(dateTime2); } |
■ DateTime 클래스의 parse 정적 메소드를 사용해 날짜/시간 문자열을 파싱하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
void main() { DateTime dateTime1 = DateTime.parse("2021-04-18 20:18:04" ); // 지역시 DateTime dateTime2 = DateTime.parse("2021-04-18 20:18:04Z"); // 표준시 print('$dateTime1, ${dateTime1.isUtc}'); print('$dateTime2, ${dateTime2.isUtc}'); } |
■ factory 키워드를 사용해 싱글톤(singleton) 팩터리 생성자를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
class Logger { static Logger? _logger; factory Logger() { if (_logger == null) { _logger = new Logger._create(); } return _logger as Logger; } Logger._create(); log(String msg) { print(msg); } } main() { Logger logger1 = new Logger(); logger1.log("로거가 초기화되었습니다."); Logger logger2 = new Logger(); logger2.log("로거 객체가 재사용되었습니다."); } |
■ DateTime 클래스의 now 정적 속성을 사용해 현재 날짜/시간을 구하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
void main() { DateTime currentTime = DateTime.now(); print(currentTime); } |
■ factory 키워드를 사용해 단순 팩토리 생성자를 만드는 방법을 보여준다. ▶ 예제 코드 (DART)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
class Name { final String first; final String last; factory Name(String name) { List<String> partList = name.split(' '); return new Name._(partList[0], partList[1]); } Name._(this.first, this.last); } void main() { Name name = new Name("Fred Flinstone"); print("${name.first} ${name.last}"); } |
■ 지정 생성자(named constructor)를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
class Player { String name = ''; int color = 0; Player(this.name, this.color); Player.fromPlayer(Player another) { this.name = another.name; this.color = another.color; } } void main() { Player player1 = Player('홍길동', 20); Player player2 = Player.fromPlayer(player1); print(player1.name); print(player2.name); } |
■ [ ] 기호를 사용해 선택형 위치 지정 매개 변수를 만드는 방법을 보여준다. ▶ 예제 코드 (DART)
|
int addValue(int x, int y, [int? z]) { int result = x + y; if (z != null) { result += z; } return result; } void main() { print(addValue(5, 10)); print(addValue(5, 10, 20)); } |
■ 화살표 함수(arrow function)를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
String getHello(String name) => 'Hello, $name!'; void main() { print(getHello('홍길동')); } |
■ for 명령문에서 continue/break 키워드를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
void main() { for (var i = 0; i < 55; i++) { if (i == 5) { continue; } if (i == 10) { break; } print(i); } } |
■ for문을 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
void main() { List<String> petList = ['Odyn', 'Buck', 'Yeti']; for (String pet in petList) { print(pet); } } |
■ switch 명령문에서 continue 키워드를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
void main() { String animal = 'tiger'; switch (animal) { case 'tiger': print('호랑이'); continue alsoCat; case 'lion': print('사자'); continue alsoCat; alsoCat: case 'cat': print('고양이'); break; default: print('해당 무'); } } |
■ ??= 연산자를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
void main() { int? x = null; x = 5; print(x); x = null; print(x); x ??= 3; print(x); } |
※ ??= 연산자는 객체가 null이면 백업값을 할당하고 아니면 객체를 그대로 반환한다.
■ ?. 연산자를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
void main() { String? name = null; print(name?.length); } |
※ ?. 연산자를 사용하면 객체가 null인 경우 에러를 발생하는 대신 null을
더 읽기
■ ?? 연산자를 사용하는 방법을 보여준다. ▶ 예제 코드 (DART)
|
void main() { String? name = null; print(name?.length ?? 0); } |
■ stdin.readLineSync 메소드를 사용해 표준 입력 스트림에서 문자열 한 줄을 입력받는 방법을 보여준다. ▶ 예제 코드 (DART)
|
import 'dart:io'; void main() { String? message = stdin.readLineSync(); print('메시지 : $message'); } |
■ stdout.writeln 메소드를 사용해 표준 출력 스트림에 문자열 한 줄을 쓰는 방법을 보여준다. ▶ 예제 코드 (DART)
|
import 'dart:io'; void main() { stdout.writeln('안녕하세요.'); } |
■ dart.exe 프로그램을 사용해 다트 파일을 실행하는 방법을 보여준다. 1. [명령 프롬프트]를 실행한다. 2. [명령 프롬프트]에서 아래 명령을 실행한다. ▶ 실행 명령
더 읽기