스프레드 컬렉션을 사용하세요

스프레드 컬렉션을 사용하세요

가능하면 스프레드 컬렉션(spread collections)을 쓰는 린트 규칙이에요. 기존 컬렉션을 합칠 때 ..addAll() 대신 ... 문법이 훨씬 간결하죠. 함께 살펴볼게요.

출처: prefer_spread_collections

본문

가능하면 스프레드 컬렉션을 쓰세요.

컬렉션 리터럴은 개별 항목들로 새로운 컬렉션을 만들 때 아주 좋아요. 그런데 기존 항목들이 이미 다른 컬렉션에 저장되어 있다면, 스프레드 컬렉션 문법이 더 간단한 코드를 만들어줘요.

BAD:

Widget build(BuildContext context) {
  return CupertinoPageScaffold(
    child: ListView(
      children: [
        Tab2Header(),
      ]..addAll(buildTab2Conversation()),
    ),
  );
}
var ints = [1, 2, 3];
print(['a']..addAll(ints.map((i) => i.toString()))..addAll(['c']));
var things;
var l = ['a']..addAll(things ?? const []);

GOOD:

Widget build(BuildContext context) {
  return CupertinoPageScaffold(
    child: ListView(
      children: [
        Tab2Header(),
        ...buildTab2Conversation(),
      ],
    ),
  );
}
var ints = [1, 2, 3];
print(['a', ...ints.map((i) => i.toString()), 'c']);
var things;
var l = ['a', ...?things];

켜는 방법

prefer_spread_collections 규칙을 사용하려면 analysis_options.yaml 파일의 linter > rules 아래에 prefer_spread_collections를 추가해요:

linter:
  rules:
    - prefer_spread_collections

만약 YAML 맵 문법으로 린트 규칙을 설정한다면 linter > rules 아래에 prefer_spread_collections: true를 추가하면 돼요:

linter:
  rules:
    prefer_spread_collections: true

더 알아보기