목차
- required 키워드
- ?? 연산자
- ?. 연산자
1. required 키워드
- 생성자는 class를 생성할 때 한번만 호출이 가능한 메소드이며 특징은 return type을 암시하지 않습니다. 당연히 해당 class의 객체를 생성하니 굳이 써줄 필요가 없습니다.
- Named Arguement를 사용하여 인자를 콕 찝어서 값을 할당하려면 { } 을 활용하면 됩니다. 생성자에서 인자들을 {} (중괄호)로 감싸면 됩니다. 그러면 생성자를 호출할 때, 생성자(인자: 값, 인자: 값) 형태로 호출하면 됩니다.
- dart언어에서 null-safety를 적용을 했다면 클래스의 인자에 null을 적용할 지를 지정할 수 있습니다.
- ? 연산자를 이용하면 클래스의 인자에 null을 적용할 수 있습니다.
class Fruit {
String name;
String kind;
int count;
Fruit({
this.name,
this.kind,
this.count
});
}
null-safety를 적용한 프로젝트에서 클래스에서 생성자를 지정하면 아래와 같은 에러메시지를 볼 수 있습니다.
‘kind’ 매개변수는 유형 때문에 ‘null’ 값을 가질 수 없지만 기본값은 ‘null’ 입니다. ‘null’이 아닌 명시적 기본값이나 ‘필수’ 수정자를 추가해보세요.란 안내메시지가 뜹니다.
생성자에서 named argument를 사용하기 위해 중괄호를 사용했기 때문에 뜹니다. 생성자에 { }를 사용하지 않고, 매개변수를 무조건으로 받게 처리하면 위의 메시지는 뜨지 않습니다.
class Fruit {
String name;
String kind;
int count;
Fruit(this.name, this.kind, this.count);
}
하지만 Named Argument를 사용할 경우 매개변수에 null을 지정하지 않은 경우 생성자의 { } 사이의 매개변수에 required 선언자를 사용합니다.
class Fruit {
String name;
String kind;
int count;
Fruit({
required this.name,
required this.kind,
required this.count
});
}
null-safety을 적용한 후 매개변수에 null을 허용하는 ? 연산자를 사용하면 매개변수에 꼭 required란 키워드가 필요하지 않습니다.
2. ?? 연산자
- ?? 연산자는 변수의 값에 null인 경우 다른 값으로 대체할 때 사용합니다.
- 좌항이 null 이 아니면 좌항 값을 리턴하고 null이면 우항 값을 리턴합니다.
void main() {
int? a;
print('a의 값은 ${a ?? '0'} 입니다.');
a = 10;
print('a의 값은 ${a ?? '0'} 입니다.');
}
결과
a의 값은 0입니다.
a의 값은 10입니다.
3. ?. 연산자
- 조건적 멤버 접근(Conditional member access) 연산자라고 합니다.
- ?. 연산자는 객체가 null 이 아니면 추가 필드에 액세스하고 그렇지 않으면 null을 반환합니다.
'개발 > 플러터' 카테고리의 다른 글
Flutter 위젯 ExpansionTile (0) | 2022.06.08 |
---|---|
[Flutter] Unhandled Exception: FormatException: Invalid radix-10 number (at character 1) (0) | 2022.05.26 |
[Flutter] 색상 변경 애니메이션 적용하기 (0) | 2022.05.10 |
댓글