본문 바로가기

Flutter/Dart

Dart 핵심 개념 한눈에 정리! (변수, 타입, Nullable, Enum, Loop 등)

 

 

1️⃣ 문자열 내 변수 삽입

Dart에서 문자열에 변수를 넣고 싶다면 변수명을 사용하면 된다.

void main() { String name = '홍길동'; print('안녕하세요, $name님!'); // 결과: 안녕하세요, 홍길동님! }
 

만약 중괄호 {}를 사용하면 표현식을 사용 가능

void main() { int a = 5; int b = 3; print('두 수의 합: ${a + b}'); // 결과: 두 수의 합: 8 }
 

2️⃣ var vs dynamic

void main() {
  dynamic value = 'Hello'; // dynamic은 타입이 자유롭게 변할 수 있음
  value = 10; // int로 변경 가능
  print(value); // 결과: 10

  var text = 'Dart'; // var은 처음 선언된 타입이 고정됨
  // text = 10; // ❌ 오류 발생! (처음에 String으로 선언되었기 때문)
}
 

 


3️⃣ Null Safety (널 안정성)

Dart에서는 변수가 null을 가질 수 있는지 여부를 지정할 수 있다.

void main() {
  String? name = '블랙핑크'; // nullable 변수
  name = null; // ✅ 오류 없음 (null을 가질 수 있는 변수)

  // print(name!); // ❌ 오류 발생! (null일 수도 있기 때문에)
}

만약 null이 아닐 거라고 확신한다면 !를 붙여서 사용

void main() {
  String? name = 'Dart';
  print(name!); // ✅ null이 아니므로 정상 출력
}

4️⃣ final vs const

  • final: 실행 중에 값이 결정될 수 있음.
  • const: 컴파일 시점에 값이 결정되어야 함.
void main() {
  final DateTime now1 = DateTime.now(); // ✅ 실행 중에 값이 결정됨 (OK)
  
  // const DateTime now2 = DateTime.now(); // ❌ 오류 발생! (컴파일 시점에 값을 알 수 없음)
}

5️⃣ ??= 연산자 (널 병합 할당)

변수가 null이면 값을 할당하는 연산자야!

void main() {
  double? number = 4.0;
  number ??= 3.0; // number가 null이면 3.0을 할당 (지금은 null이 아니므로 그대로 유지)
  print(number); // 결과: 4.0
}

6️⃣ 타입 비교 (is, is!)

Dart에서는 is와 is! 키워드를 사용하여 타입을 확인할 수 있다.

void main() {
  int number = 1;

  print(number is int); // ✅ true (number는 int 타입)
  print(number is String); // ❌ false (number는 String이 아님)
  print(number is! double); // ✅ true (number는 double이 아님)
}

7️⃣ 반복문 (Loop)

Dart에서 for-in 문을 사용하여 리스트를 순회할 수 있다.

void main() {
  List<int> numbers = [1, 2, 3, 4, 5];
  int total = 0;

  for (int number in numbers) {
    total += number;
  }

  print(total); // 결과: 15
}

8️⃣ enum (열거형)

enum은 한정된 값만 사용할 수 있도록 도와줌

enum Status { approved, pending, rejected }

void main() {
  Status status = Status.pending;

  if (status == Status.approved) {
    print('승인됨');
  } else if (status == Status.pending) {
    print('대기 중');
  } else {
    print('거절됨');
  }
}
// 결과: 대기 중

9️⃣ 함수의 옵셔널 & 네임드 파라미터

✅ 옵셔널 파라미터 ([] 사용)

void greet(String name, [String? message]) {
  print('안녕하세요, $name님! ${message ?? ''}');
}

void main() {
  greet('철수'); // 결과: 안녕하세요, 철수님! // message 는 옵션이라 오류 안남
  greet('영희', '반가워요!'); // 결과: 안녕하세요, 영희님! 반가워요!
}

✅ 네임드 파라미터 ({} 사용)

void introduce({required String name, int age = 20}) {
  print('이름: $name, 나이: $age');
}

void main() {
  introduce(name: '지수', age: 25); // 결과: 이름: 지수, 나이: 25
  introduce(name: '로제'); // 결과: 이름: 로제, 나이: 20 (기본값 사용)
}

🔟 void (반환값 없는 함수)

void는 결과값을 반환하지 않는 함수

void sayHello() {
  print('안녕하세요!');
}

void main() {
  sayHello(); // 결과: 안녕하세요!
}

1️⃣1️⃣ typedef (타입 별칭)

typedef를 사용하면 함수 타입에 별칭을 붙인다.

typedef IntFunction = int Function(int, int);

int add(int a, int b) => a + b;

void main() {
  IntFunction myFunction = add;
  print(myFunction(3, 5)); // 결과: 8
}

 

계산기 사용시 유용

반응형

'Flutter > Dart' 카테고리의 다른 글

Dart의 Functional Programming 활용  (0) 2025.03.27
Dart OOP (Object Oriented Programming)  (0) 2025.03.27
Dart 클래스 classes (2)  (0) 2025.02.03
Dart 클래스 classes (1)  (0) 2025.02.03
함수 | Function  (0) 2025.02.03