이건 플러터의 기능보다는 Dart 의 기능입니다 . 자바 스크립이나 리엑트 프론트 단에서도 사용 하는 기술로 알려져 있습니다
변수 앞에 ... 을 사용합니다.
이것은 list 안에 list 를 넣는 행위랑 똑같습니다
스프레드 연산자
- 스프레드 연산자(...)는 컬렉션을 펼쳐주는 연산자
- 다른 컬렉션 안에 컬렉션을 삽입할 때 사용
var items = ['모니터', '키보드', '마우스'];
var items2 = ['스피커', ...items, '헤드셋']; //스피커, 모니터, 키보드, 마우스, 헤드셋
- Set에 리스트를 담으면 자동으로 중복 제거
final items = [1, 2, 2, 3, 3, 4, 5];
final myNum = {...items, 6, 7}; //1, 2, 3, 4, 5, 6, 7
캐스케이드 연산자
점을 2개 ..을 사용도 가능합니다. 이것을 캐스케이드 연산이라고 합니다 .
이를 계단식 표현법이라고 합니다 반복되는 코드를 줄이기 위해 사용되는 문법입니다. 아래는 공식문서에서 가지고온 문법 예제입니다.
class User{
String name = '';
int age = 0;
}
void main() {
User user = User();
user.name = '홍길동';
user.age = 23;
User user1 = User()
..name = '김철수'
..age = 23;
}
이렇게 앞 중복되는 문법을 ..으로 스킵하고 빠르게 코드를 작성할수 있습니다. 캐스케이드 사용시 주의 할점은 공식문서에서 이렇게 말합니다.
캐스케이드(..)를 사용할 때 주의할 점은 객체를 반환하는 함수만이 사용 가능합니다.
var sb = StringBuffer();
sb.write('foo')
..write('bar'); // Error: method 'write' isn't defined for 'void'.
write 함수는 리턴 값이 void형이기 때문에 에러가 발생합니다.
var sb = StringBuffer();
var returnWrite = sb.write('foo'); //write에서 리턴되는 변수는 없기때문에 1차 문제가 되고
// write함수에서 리턴된 변수의 없는 멤버 write라는 함수에 접근하려고 하니 에러가 발생한다.
returnWrite.write('bar'); //에러 발생
만약 위의 코드를 제대로 사용하려면 아래와 같이 구성하면 됩니다.
var sb = StringBuffer()
..write('foo')
..write('bar');
'모바일 공부 > Flutter' 카테고리의 다른 글
ListView (0) | 2024.03.19 |
---|---|
UUID (0) | 2024.03.19 |
flutter ROW, COLUMN 알아보기 (1) | 2024.01.08 |
StatelessWidget,StatefulWidget 알아보기 (0) | 2024.01.05 |
flutter 이미지 업로드 (0) | 2024.01.05 |