?
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;
'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 |