[Flutter] Null safety 및 여러 문자의 의미(?, !, ??, ??=, < >, _, ..)

2024. 3. 6. 17:43·Flutter
728x90

?

 

Dart 언어는 2.12 버전 부터 Null Safety 기능이 적용되어 있다.

Null Safety는 변수는 null이 될 수 없고, null이 될 수 있는 변수는 표현을 해주어야한다.

표현을 해주지 않으면 Error가 발생한다.

 

변수 뒤에 '?'를 붙이게 되면 이 변수는 null을 포함한 데이터값이라는 것을 말한다.

int a = 3;
int b; // Error : The non-nullable variable 'b' must be initialized.
int? c; // nullable 변수

 

!

 

'!' 는 Null Safety 기능 중 하나로 변수가 null이 아님을 확신할 때 사용한다.

null 이 될수 있는 타입의 변수를 null이 될 수 없는 타입의 변수로 취급하게 된다.

int? a;
int b = a; //Error : A value of type 'int?' can't be assigned to a variable of type 'int'.

int? a;
int b = a!;

 

??

 

''??" 연산자는 변수가 null인 경우를 대비해서 사용하는 연산자이다.

첫번째 피연산자가 null 인 경우에는 두 번째 피연산자를 반환하게 한다.

int? a;
int b = a ?? 7; // a가 null 이면 b에는 7을 넣는다.
print(b); // 7

int c = 3;
int d = c ?? 7; // c가 null이 아니므로 d에는 c값이 들어간다.
print(d); // 3

 

??=

 

''??=" 연산자는 변수가 null인 경우를 대비해서 사용하는 대입 연산자이다.

int? a;
int b = 3;
a ??= 7; // a는 null이므로 7이 들어간다
b ??= 7; // b는 null이 아니므로 값은 그대로 3이다.
print(a); // 7
print(b); // 3

 

< >

 

"< >" 기호는 Dart언어와 Flutter의 위젯에서 제네릭(generics)을 표현하는데 사용된다.

< > 안에 타입을 넣어서 안정성을 강화하는데 사용된다.

List<String> arrays=[]; // String이라는 타입의 배열 선언

// Flutter StreamBuilder 위젯
// StreamBuilder가 List<String> 타입의 데이터를 다룬다는 의미
StreamBuilder<List<String>>(
  stream: stream,
  builder: (BuildContext context, AsyncSnapshot<List<String>> snapshot) {
    if (snapshot.hasError) {
      return Text('Error: ${snapshot.error}');
    } else if (snapshot.connectionState == ConnectionState.waiting) {
      return CircularProgressIndicator();
    } else {
      return ListView(
        children: snapshot.data!.map((String item) => ListTile(title: Text(item))).toList(),
      );
    }
  },
)

 

 

_

 

'_' 는 두 가지의 상황에서 사용된다.

 

첫번째는 함수나 변수 이름 앞에 사용되는 _ 이다.

이것은 다른 언어에서는 private 로 사용되며,

해당 파일 내에서만 사용이 가능하고 다른 파일에서는 접근이 불가하다.

해당 파일 내에서만 사용하고 다른 파일에서 접근을 막기 위해 사용된다.

 

두번째는 함수의 파라미터에서 변수를 사용하지 않을 때 _을 적는다.

list.forEach((_) {
  // list의 요소와 상관없이 실행할 문장
});

 

 

..

 

한 객체에 대해 연속적인 작업을 수행할 때 사용된다.

함수 및 변수들의 값을 설정 할 수 있다.

var myObject = MyObject();
myObject.init();
myObject.connect();
myObject.name = "홍길동";
myObject.age = 20;

// .. 사용하면 해당 객체의 변수 및 함수를 연속적으로 사용 가능
var myObject = MyObject()
    ..init()
    ..connect()
    ..name = "홍길동"
    ..age = 20;
728x90

'Flutter' 카테고리의 다른 글

[Flutter] 상태 관리란? (GetX를 선택한 이유)  (0) 2024.03.08
[Flutter] 자주 사용하는 색상 및 글꼴 관리하기  (0) 2024.03.03
[Flutter] 비동기 개념과 관련 키워드 알아보기(Future, async, await, then)  (0) 2024.03.01
[Flutter] Figma Color Hex값 이용해서 색 설정하기  (0) 2024.02.27
[Flutter] React Native 말고 Flutter를 공부한 이유  (0) 2024.02.25
'Flutter' 카테고리의 다른 글
  • [Flutter] 상태 관리란? (GetX를 선택한 이유)
  • [Flutter] 자주 사용하는 색상 및 글꼴 관리하기
  • [Flutter] 비동기 개념과 관련 키워드 알아보기(Future, async, await, then)
  • [Flutter] Figma Color Hex값 이용해서 색 설정하기
Sanghyundal
Sanghyundal
  • Sanghyundal
    초보 개발자
    Sanghyundal
  • 전체
    오늘
    어제
    • Coding N
      • Flutter
      • FE
      • CS 공부
      • Git
      • 활동 관련 N
      • Devops
      • SKALA
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    멋쟁이 사자처럼 해커톤
    css normalize
    skala
    skala1기
    ossca
    skala 부트캠프
    우테코 프론트엔드
    turbopack
    ai agent
    pr agent
    initialBinding
    JS 이벤트 위임
    crew ai
    Get.put()
    자바스크립트 이벤트 위임
    Get.lazyPut()
    클라우드
    SK
    oscca
    skala 1기
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sanghyundal
[Flutter] Null safety 및 여러 문자의 의미(?, !, ??, ??=, < >, _, ..)
상단으로

티스토리툴바