Flutter - 컬렉션 타입

2023. 11. 1. 09:14·Flutter
728x90

리스트(List)

다트는 리스트 컬렉션만 제공하고 배열(arrays)은 별도로 제공하지 않는다.

  • 인덱스
  • 슬라이스
  • 원소 추가
  • 원소 삭제
  • 원소 변경

리스트 변수 선언

  // 대괄호로 나열한다.
  const list = [1, 2, 3];

  // 원소의 끝에 매번 ,(콤마)를 붙여도 동작한다.
  const list = [
    'Car',
    'Boat',
    'Plane',
  ];

원소 끝에 콤마를 붙이는 것(trailling comma)이 코드의 가독성에 더 좋다.

리스트의 길이와 인덱싱

  var list = [1, 2, 3];
  assert(list.length == 3);

length 속성으로 리스트의 길이, 원소의 갯수를 구할 수 있다.

  assert(list[1] == 2);
  list[1] = 1;
  assert(list[1] == 1);

원소에 접근하기 위해 첨자(subscript)로 접근(인덱싱, indexing)한다.

이렇게 접근한 원소의 값을 변경할 수도 있다.

변경 불가(immutable) 리스트 생성

  var list = const [1, 2, 3];
  // list[1] = 1; // 불변 속성 리스트의 원소를 변경할 경우 에러가 발생한다.

위와 같이 리스트를 const 키워드로 상수를 만들어 변경 불가 리스트를 만들 수 있다.

하지만 위와 같이 선언하는 것보다 다트 린터(Linter)는 아래와 같이 선언하는 걸 권장한다.

   const list = [1, 2, 3];

..., ...? 연산자

컬렉션 if 연산자

  var nav = ['Home', 'Furniture', 'Plants', if (promoActive) 'Outlet'];

컬렉션 for 연산자

  var listOfInts = [1, 2, 3];
  var listOfStrings = ['#0', for (var i in listOfInts) '#$i'];
  assert(listOfStrings[1] == '#1');

집합(Set)

집합(Set)은 중복된 원소를 허용하지 않는 리스트이다.

  • 인덱스
  • 슬라이스
  • 원소 추가
  • 원소 삭제
  • 원소 변경

맵(Map)

  • 키 추가
  • 키 삭제
  • 키-값 변경

Cascade notation(..)

.. 을 사용하면 하나의 오브젝트에 함수호출, 필드접근을 순차적으로 수행할 수 있다.이 과정 중간에 어떤 값이 반환되더라도 무시된다.

querySelector('#confirm') // Get an object.
  ..text = 'Confirm' // Use its members.
  ..classes.add('important')
  ..onClick.listen((e) => window.alert('Confirmed!'));

이 코드는 아래의 코드와 동일하게 동작한다.

var button = querySelector('#confirm');
button.text = 'Confirm';
button.classes.add('important');
button.onClick.listen((e) => window.alert('Confirmed!'));

.. 은 중첩도 가능하다.

final addressBook = (AddressBookBuilder()
      ..name = 'jenny'
      ..email = 'jenny@example.com'
      ..phone = (PhoneNumberBuilder()
            ..number = '415-555-0100'
            ..label = 'home')
          .build())
    .build();

주의할점은 실제 오브젝트를 반환하는 함수에 .. 를 사용해야한다.

var sb = StringBuffer();
sb.write('foo')
  ..write('bar'); // 'void' 타입에는 'write' 메소드가 정의되어 있지 않다.
 

Spread operator(…), null-aware Spread operator(…?)

... 은 여러개의 항목을 collection에 간편하게 추가할 수 있게 해준다.

var list = [1, 2, 3];
var list2 = [0, ...list];  // [0, 1, 2, 3]
assert(list2.length == 4);

추가하려는 항목이 null 일 수 있다면 아래와 같이 ...? 를 사용한다.

var list;
var list2 = [0, ...?list];
assert(list2.length == 1);

오늘도 열심히 하는 당신 구웃 ~!

728x90
LIST

'Flutter' 카테고리의 다른 글

Flutter - 타입 검증 연산자  (1) 2023.11.02
Flutter - NullAware  (4) 2023.11.02
Flutter - 문자열 처리  (3) 2023.11.01
Flutter Package Sizer  (2) 2023.10.25
StatefulWidget의 LifeCycle(생명주기)  (2) 2023.09.19
'Flutter' 카테고리의 다른 글
  • Flutter - 타입 검증 연산자
  • Flutter - NullAware
  • Flutter - 문자열 처리
  • Flutter Package Sizer
Mr. Joo
Mr. Joo
  • Mr. Joo
    삽질의 시작
    Mr. Joo
  • 전체
    오늘
    어제
    • 분류 전체보기 (219) N
      • Flutter (70)
      • Android (9)
      • Swift (5)
      • React (11)
      • 인공지능 (4)
      • CS (10)
      • 개발 뉴스 (107) N
      • IT 기기 (1)
      • 알면 유용한 정보 (2)
  • 인기 글

  • 태그

    플러터
    오늘의 뉴스
    앱
    뉴스 모음
    기술 뉴스
    오늘의 이슈
    앱개발
    이슈
    개발 이슈
    오늘의 기술 뉴스
    Dart 기초
    개발
    앱 개발
    오늘의 개발 뉴스
    뉴스
    개발 뉴스
    Flutter
    기술
    DART
    react
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
Mr. Joo
Flutter - 컬렉션 타입
상단으로

티스토리툴바