티스토리 뷰

 

 

Dart가 뭘까?

 

  • Google에서 만들었어요! 그래서 크롬과 안드로이드에서 잘 작동합니다!
  • Flutter 프레임워크의 핵심 언어입니다!

 

 

 

0. 정말 기본

주석

// 코드를 컴퓨터이 인식하지 못하게 합니다.

문자열 표시

'안녕'

프로그램 실행 및 글자 출력

void main() {
  print('안녕, 친구들!');
}

// 화면 출력
안녕, 친구들!

 

 

 

 

1. 변수 선언

 

  • 변수 = 값을 담는 상자라고 생각해야 합니다.

자료형

void main() {
  int age = 30;        // 나이 30
  String name = 'zi존코딩맨';   // 이름 (글자)
  bool isDeveloper = true;   // 참/거짓
 
  // 값을 보여줄 땐 $ 표시를 써요.
  print('내 이름은 $name이고 나이는 $age이야, 나는 개발자일까? $isDeveloper');
}

// 화면 출력
내 이름은 zi존코딩맨이고 나이는 30이야, 나는 개발자일까? true
  • var : Dart가 알아서 변수의 종류를 정해줍니다.
  • int : 정수 (소수점 없는 숫자)
  • double : 실수 (소수점 있는 숫자)
  • String : 글자
  • bool : 참(true) 또는 거짓(false)

 

심화 자료형

void main () {
    final today = DateTime.now();   // 실행할 때 정해짐
    const pi = 3.14;                // 변하지 않는 값
    
    final now = DateTime.now(); // ✅ 가능 (런타임에 결정)
    const later = DateTime.now(); // ❌ 오류 발생
}
  • final : [런타임 시점] 실행 중에 딱 한 번만 담고 사용하는 자료형
  • const : [컴파일 시점] 코드가 실행되기 전부터 확정이되어 있는 상수 (변수의 반대말)

 

런타임 자료형

  • 어플리케이션 실행 도중에 타입을 확인하고 싶을 때 현제 객체의 실제 타입을 확인할 수 있습니다.
void main () {
  var name = 'Dart 언어';
  var number = 42;
  var list = [1, 2, 3];
  
  print('name의 타입: ${name.runtimeType}');
  print('number의 타입: ${number.runtimeType}');
  print('list의 타입: ${list.runtimeType}');
}

// 화면 출력
String
int
List<int>

 

is와 is!

  • is : 객체가 해당 타입인지 확인
  • is! : 객체가 해당 타입이 아닌지 확인
void main() {
  dynamic value = 'Hello';

  if (value is String) {
    print('문자열입니다. 길이: ${value.length}');
  }

  if (value is! int) {
    print('정수는 아닙니다.');
  }
}

// 화면 출력
문자열입니다. 길이: 5
정수는 아닙니다.

 

 

 

2. 연산

 

정수 숫자 계산

void main() {
  var a = 10;
  var b = 3;

  print(a + b);   // 13
  print(a - b);   // 7
  print(a * b);   // 30
  print(a / b);   // 3.333...
  print(a ~/ b);  // 3  (소수점 버림)
  print(a % b);   // 1  (나머지)
}

 

실수 숫자 계산

void main() {
  double x = 5.5;
  double y = 2.0;

  print(x + y);    // 7.5
  print(x - y);    // 3.5
  print(x * y);    // 11.0
  print(x / y);    // 2.75 (실수 나눗셈)
  print(x % y);    // 1.5  (나머지)

  // 다음은 정수로 버림하고 싶을 때
  print((x / y).floor());    // 2 (내림)
  print((x / y).ceil());     // 3 (올림)
  print((x / y).round());    // 3 (반올림)
  print((x / y).truncate()); // 2 (소수점 버림)
}

 

 

 

 

3. 분기처리 조건문!

 

  • 만약에~ 라면? 하는 코드입니다.
  • 특정조건이 맞으면 해당하는 코드 블럭을 실행합니다.
void main() {
  int score = 85;

  if (score >= 90) {
    print('A 학점!');
  } else if (score >= 80) {
    print('B 학점!');
  } else {
    print('좀 더 힘내자!');
  }
}

// 화면 출력 
B 학점!

 

 

 

 

4. 똑같은 일 반복문!

 

  • 정해진 횟수만큼 또는 특정 조건이 만족될 때까지 코드를 반복합니다.
void main() {
  // '안녕'을 3번 말하기
  for (int i = 0; i < 3; i = i + 1) {
    print('안녕!');
  }

  List<String> foods = ['피자', '치킨', '떡볶이'];
  // 내가 좋아하는 음식들 하나씩 말하기
  for (String food in foods) {
    print('나는 $food를 좋아해!');
  }
}

// 화면 출력
안녕!
안녕!
안녕!
나는 피자를 좋아해!
나는 치킨를 좋아해!
나는 떡볶이를 좋아해!

 

향상된 반복문

void main() {
  List<String> fruits = ['Apple', 'Banana', 'Mango'];

  for (var fruit in fruits) {
    print('과일: $fruit');
  }
}

// 화면 출력
과일: Apple
과일: Banana
과일: Mango

 

 

 

 

5. 여러 줄의 코드를 한 번에 묶어서 실행하는 함수 (메서드)

 

  • 코드가 지지고 볶고 실행한 다음 결과를 돌려줍니다.
// 두 숫자를 더해주는 함수 만들기
int add(int a, int b) {
  return a + b;
}

void main() {
  int result = add(5, 3); // add 함수를 불러서 사용!
  print(result); // 8
}

 

변수 내 함수 사용

void main() {
  // 함수 선언 후 변수에 할당
  void greet() => print('안녕하세요!');
  Function sayHello = greet;
  sayHello(); // 안녕하세요!

  // 인자와 리턴이 있는 함수도 변수에 담을 수 있음
  int add(int a, int b) => a + b;
  var operation = add;
  print('2 + 3 = ${operation(2, 3)}'); // 5
}

# 화면 출력
안녕하세요!
5

 

함수 파라미터 순서 및 required

void greet({required String name, int age = 0}) {
  print('안녕하세요, $name님. 나이: $age');
}

void main() {
  greet(name: 'aox');
  greet(age: 25, name: '지존');
}

// 화면 출력
안녕하세요, aox님. 나이: 0
안녕하세요, 지존님. 나이: 25

 

Operation 시그니처 선언  : typedef

typedef Operation = int Function(int a, int b);

int multiply(int a, int b) => a * b;

void calculate(Operation op) {
  print('결과: ${op(3, 4)}');
}

void main() {
  calculate(multiply);
}

// 화면 출력
결과: 12

 

 

 

 

6. 여러 개를 묶어서 처리하는 리스트 및 맵

 

void main() {
  // 리스트
  List<String> fruits = ['사과', '바나나', '딸기'];
  print(fruits); // [사과, 바나나, 딸기]

  print(fruits[0]); // 첫 번째 과일은? '사과' (컴퓨터는 0부터 숫자를 세요!)
  print(fruits.length); // 과일이 총 몇 개지? 3

  fruits.add('포도'); // 리스트에 '포도' 추가하기
  print(fruits); // [사과, 바나나, 딸기, 포도]
  
  // 맵
  var student = {'name': '민호', 'age': 10};
  print(student['name']); // 민호
}

// 화면 출력
[사과, 바나나, 딸기]
사과
3
[사과, 바나나, 딸기, 포도]
민호

 

 

 

 

7. Null Safety

 

  • Null 안전성을 키우기 위해 자료형? 을 사용하면 null 을 허용하며, !을 사용하면 절대 null이 아닌 것을 개발자가 보장할 때 사용하는 연산자 입니다.
void main() {
  String? name;
  print('이름 길이: ${name?.length}');

  name = 'Dart';
  print('이름 길이: ${name!.length}');
}

// 화면 출력
이름 길이: null
이름 길이: 4

 

??= 연산자

  • 변수가 null 일 때만 값을 할당하도록 도와주는 null 병합 할당 연산자로 사용합니다.
void main() {
  String? name;

  name ??= '익명';
  print('사용자 이름: $name');

  name ??= '홍길동';
  print('변경 안됨: $name');
}

// 화면 출력
사용자 이름: 익명
변경 안됨: 익명

 

 

 

 

 

마무리

 

지금 이걸 100% 다 알고 가야겠다는 것보단

이제 Flutter로 만들면서 언어와 익숙해지는 것을 추천합니다.

자 이제 어플을 만들어 보러 가볼까요

 

 

감사합니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/03   »
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 27 28
29 30 31
글 보관함