Flutter (앱 개발)/Dart 코드 첨부 파일

[Dart 연산자 이해] Dart의 삼항 연산자 및 Null-aware 연산자 (??, ?. 등)(명령 프롬프트 첨부 파일 제공)

Ize𓆜 2025. 2. 24. 20:35
728x90
728x90

 

 

Dart의 삼항 연산자 및

Null-aware 연산자 (??, ?. 등)

이해하기 🚀

 

Dart에서는 코드를 간결하고

가독성 있게 작성할 수 있도록

삼항 연산자(ternary operator)와

Null-aware 연산자를 제공합니다.


이 연산자들은 특히

조건문을 간단하게 표현하거나,

Null 값으로 인해 발생하는

오류를 방지하는 데 유용합니다.

 

이번 포스팅에서는

삼항 연산자와

Null-aware 연산자의 개념과 활용법

예제와 함께 정리하겠습니다. 🎯

 


먼저

더 많은 정보, 혹은


순서대로 포스팅을 보고 싶다면


아래 노션을 확인해주세요. 

 



https://mongmung-i.notion.site/Flutter-1a39b1e2cdaa80319a0fc2a89281dc71?pvs=4

 

Flutter 어플 개발 일지 | Notion

Made with Notion, the all-in-one connected workspace with publishing capabilities.

mongmung-i.notion.site

https://mongmung-i.notion.site/19f9b1e2cdaa80a984ade6141a87fd29?pvs=4

 

창업 트랙 사전 캠프 𓆲 | Notion

이 곳은 창업 트랙 사전 캠프 진행 사항을 정리하는 곳입니다.

mongmung-i.notion.site

 

 

 


Ⅰ. 삼항 연산자 및 Null-aware 연산자가 중요한 이유 🤔

 

삼항 연산자와 Null-aware 연산자가 왜 필요한가?

 

코드를 간결하게 만들어 가독성을 높임


Dart에서

if-else 문을 반복적으로 사용하면

코드가 길어지고 복잡해질 수 있습니다.


삼항 연산자

(condition ? expr1 : expr2)를 사용하면

한 줄로 조건을 표현할 수 있어

가독성이 향상됩니다.


예를 들어,

로그인 상태에 따라

다른 메시지를 출력할 경우,

String message = isLoggedIn ? '환영합니다!' : '로그인이 필요합니다.';

이렇게 간결하게 표현할 수 있으며, UI에서 조건부 렌더링을 구현할 때도 활용됩니다.

 

 

Null 값을 안전하게 처리하여 NullPointerException 방지

 


Null-aware 연산자는

변수에 null이 할당될 가능성이 있는 경우,

이를 안전하게 처리하기 위해 사용됩니다.


예를 들어, API 응답에서

데이터가 누락되었을 때

이를 안전하게 처리하려면

다음과 같은 방법을 사용할 수 있습니다.

String? name;
String displayName = name ?? '이름 없음';
print(displayName); // 출력: 이름 없음

이렇게 하면 예외 없이

null 대신 기본값이 설정됩니다.

 

Flutter UI 개발에서 조건부 렌더링 및 데이터 검증에 활용

 


Flutter에서는

위젯을 동적으로 렌더링할 때

삼항 연산자와 Null-aware

연산자가 자주 사용됩니다.


예를 들어,

로그인 상태에 따라

다른 UI를 보여줄 때

다음과 같이 활용할 수 있습니다.

Widget build(BuildContext context) {
  return Text(isLoggedIn ? '환영합니다!' : '로그인이 필요합니다.');
}

 

또한, 사용자가 입력한 데이터가

null일 경우

기본값을 설정할 때도 활용됩니다.

 

if-else 구문을 간결하게 작성할 수 있음
- Null 값을 안전하게 처리하여 NullPointerException 방지
- Flutter UI 개발에서 조건부 위젯 표시 등에 활용 가능

코드의 가독성을 높이고, 예외 발생 가능성을 줄이는 데 필수적인 연산자들! 🚀


Null 안정성(Null Safety)을 강화하는 연산자들

 

Dart는

null 안전성(Null Safety)을

보장하는 언어입니다.


즉, 변수가

null인지 아닌지를

명확하게 구분해야 하며,


이를 위해

다양한 Null-aware 연산자가 제공됩니다.

 

💡 Null Safety를 강화하는 주요 연산자들

연산자 설명 사용 예제
?? (Null-aware operator) 왼쪽 값이 null이면 오른쪽 값을 반환 String name = userName ?? 'Guest';
?. (Null-aware access operator) null이면 속성 접근을 중단하고 null 반환 print(user?.name);
??= (Null-aware assignment operator) 변수가 null일 때만 값을 할당 userName ??= 'Guest';
! (Null assertion operator) 변수가 null이 아님을 보장 (null이면 예외 발생) print(userName!);

이 연산자들은 null로 인해 발생할 수 있는 오류를 예방하고, 안정적인 코드 작성을 가능하게 해줍니다.

 

📌 정리:

  • 삼항 연산자는 if-else를 간결하게 표현하는 데 유용
  • Null-aware 연산자는 null을 안전하게 처리하여 프로그램의 안정성을 높임
  • Flutter UI 및 API 응답 데이터 처리에서 필수적으로 사용됨

이제 본격적으로 삼항 연산자와 Null-aware 연산자의 활용법을 살펴보겠습니다! 🚀


Ⅱ. 삼항 연산자 및 Null-aware 연산자 활용법 🏗️

 

Step 1: 삼항 연산자 (condition ? expr1 : expr2) 활용하기

 

삼항 연산자는

 if-else 문을 한 줄로 표현하는 

간결한 연산자입니다.


이 연산자는 조건에 따라 

두 개의 다른 값을 선택할 때 유용하며,


특히 UI에서 

동적으로 상태를 변경하는 경우

 많이 사용됩니다.

 

 

삼항 연산자는 if-else 문을 한 줄로 표현할 수 있음

void main() {
  int age = 20;
  String result = (age >= 18) ? '성인' : '미성년자';
  
  print(result); // 성인
}

삼항연산자.txt
0.00MB

🚀 삼항 연산자를 사용하면 간단한 조건문을 더욱 짧고 읽기 쉽게 작성 가능! 🎯

 

 

Flutter UI에서 삼항 연산자 활용 예제

bool isLoggedIn = false;

Text showMessage() {
  return Text(isLoggedIn ? '환영합니다!' : '로그인이 필요합니다.');
}

🚀 Flutter에서 UI 조건부 렌더링에 자주 활용됨! 🎯

 

💡 언제 삼항 연산자를 사용해야 할까?

  • 조건에 따라 단순한 값을 반환할 때
  • Flutter UI에서 특정 조건에 따라 위젯을 다르게 렌더링할 때
  • 간결한 코드 작성을 원할 때 (if-else 블록이 길어질 경우 가독성 저하 가능)

 

📌 주의할 점:

  • 복잡한 조건문에는 사용하지 않는 것이 좋음 (가독성 저하)
  • 여러 개의 삼항 연산자를 중첩하는 것은 피하는 것이 좋음

삼항 연산자는 if-else 문을 간결하게 변환하는 데 유용하지만, 가독성을 유지해야 함! 🚀


Step 2: Null-aware 연산자 (??) 활용하기

 

?? 연산자는 

왼쪽 피연산자가 null이면 

오른쪽 값을 반환합니다.


즉, null 값을

 안전하게 처리할 수 있도록 

도와주는 연산자입니다.

 

?? 연산자는 왼쪽 값이 null이면 오른쪽 값을 반환

void main() {
  String? name;
  String displayName = name ?? '이름 없음';
  
  print(displayName); // 이름 없음
}

🚀 null 값을 처리할 때 매우 유용한 연산자! 🎯

 

💡 언제 ?? 연산자를 사용해야 할까?

  • 변수에 null이 포함될 가능성이 있을 때 기본값을 설정하고 싶을 때
  • 사용자로부터 입력을 받을 때 null 값이 입력될 수 있는 경우
  • API 응답에서 값이 없을 때 기본값을 적용하고 싶을 때

 

📌 주의할 점:

  • 변수가 null인지 확인하지 않고 !(null assertion 연산자)로 접근하면 예외 발생 가능
  • 불필요하게 ??를 남발하면 코드가 복잡해질 수 있음

?? 연산자는 안전한 기본값을 제공하는 가장 간단한 방법! 🎯


Step 3: Null-aware 연산자 (?.) 활용하기

 

 

?. 연산자는 객체가 null인지 확인한 후, 

null이 아니면 속성이나 메서드를 실행합니다.


즉, null 값이 발생했을 때 

프로그램이 중단되지 않도록 

방지하는 역할을 합니다.

 

 

?. 연산자는 객체가 null이면 null을 반환하고, 그렇지 않으면 속성이나 메서드를 실행함

class Person {
  String? name;
}

void main() {
  Person? p;
  print(p?.name); // null (오류 없이 실행됨)
}

🚀 객체가 null일 때도 안전하게 접근 가능하여 NullPointerException을 방지할 수 있음! 🎯

 

💡 언제 ?. 연산자를 사용해야 할까?

  • 객체가 null일 가능성이 있을 때 속성이나 메서드를 안전하게 호출하고 싶을 때
  • API 응답이 null일 가능성이 있는 경우 (예: JSON 데이터에서 필드 누락 가능성)
  • 객체가 존재하지 않을 경우에도 오류 없이 null을 반환하고 싶을 때

 

📌 주의할 점:

  • ?. 연산자를 너무 많이 사용하면 코드가 복잡해질 수 있음
  • null 값이 아니라 확실한 값이 필요한 경우에는 !를 사용해야 할 수도 있음

객체가 null일 가능성이 있을 때 ?.을 사용하면 NullPointerException을 방지할 수 있음! 🚀


Step 4: Null-aware 연산자 (??=) 활용하기

 

??= 연산자는 변수가

null일 때만 값을 할당합니다.

즉, 기본값을 설정하는데 

매우 유용한 연산자입니다.

 

??= 연산자는 변수가 null일 때만 값을 할당함

void main() {
  String? username;
  username ??= 'Guest';
  
  print(username); // Guest
}

🚀 값이 없을 때 기본값을 할당하는 데 유용함! 🎯

 

💡 언제 ??= 연산자를 사용해야 할까?

  • 변수가 null이면 특정 값을 할당하고 싶을 때
  • 설정값이 존재하지 않을 경우 기본값을 지정할 때 (예: 환경 변수, 설정 값 등)
  • 변수의 초기값을 한 번만 설정하고 이후 변경을 방지할 때

 

📌 주의할 점:

  • 이미 값이 있는 변수에는 영향을 주지 않음
  • ?? 연산자와 함께 사용하면 더욱 유용할 수 있음

Step 5: Null assertion 연산자 (!) 활용하기

 

! 연산자는 변수나 객체가

 null이 아님을 확신할 때 사용합니다.


즉, 개발자가

 "이 변수는 절대 null이 될 수 없다"고

 선언하는 역할을 합니다.

 

! 연산자는 null이 아님을 보장하는 연산자 (단, null이면 예외 발생)

void main() {
  String? name = 'Dart';
  print(name!); // Dart
}

🚀 확실하게 null이 아닐 때만 사용해야 함! 🎯

 

null인 경우 오류 발생 예제

void main() {
  String? name;
  print(name!); // ❌ 런타임 오류 발생!
}

🚀 ! 연산자는 신중하게 사용해야 하며, ??를 사용하는 것이 더 안전함! 🎯

💡 언제 ! 연산자를 사용해야 할까?

  • 변수가 null이 아님을 확신할 때
  • null safety를 강제하고 싶을 때 (예: API 응답에서 값이 반드시 존재하는 경우)
  • Dart의 late 키워드와 함께 사용하여 변수 초기화를 지연할 때

 

주의할 점:

  • 변수가 실제로 null이면 런타임 오류가 발생할 수 있음!
  • 불필요하게 남발하면 코드가 예외 발생에 취약해질 수 있음
  • 가능하면 ?? 또는 ?.을 사용하여 안전하게 처리하는 것이 좋음

! 연산자는 신중하게 사용해야 하며, 가능한 경우 ??를 활용하는 것이 더 안전함! 🚀


Ⅲ. 삼항 연산자 및 Null-aware 연산자를 효과적으로 활용하는 방법 ✅

 

삼항 연산자와 Null-aware 연산자를 사용할 때의 주의점

 

간단한 if-else 문은 삼항 연산자로 변환하면 코드가 더 가독성 좋아짐
객체가 null일 가능성이 있는 경우 ?. 연산자를 사용하여 NullPointerException 방지
기본값이 필요한 경우 ?? 연산자를 활용하여 null을 방지
변수에 null이 할당되지 않도록 ??= 연산자를 활용하여 초기화
! 연산자는 반드시 null이 아닐 경우에만 사용 (주의해서 사용해야 함!)


코드 최적화를 위한 팁

 

조건문이 길어질 경우 가독성을 위해 삼항 연산자 대신 if-else 사용
null을 안전하게 처리하기 위해 ?. 또는 ?? 연산자를 적절히 활용
Flutter UI 개발에서 삼항 연산자로 간결한 조건부 렌더링 구현

Dart의 삼항 연산자와 Null-aware 연산자를 활용하면 더 깔끔하고 안전한 코드 작성 가능! 🚀

 

즉 연산자를 요약하면

다음과 같습니다.

 

삼항 연산자 (? :) → 조건문을 한 줄로 표현
Null-aware 연산자 (??) → null이면 기본값 반환
Null-aware 연산자 (?.) → null이면 속성 접근을 중단하고 null 반환
Null-aware 연산자 (??=) → null일 때만 값 할당
Null assertion 연산자 (!) → null이 아님을 강제 보장 (주의해서 사용)

728x90
728x90