Flutter開発入門37 FlutterのListクラスを徹底解説

Flutter

はじめに

 Flutterアプリ開発では、リスト(配列)を扱う場面が非常に多くあります。DartのListクラスは、複数の要素を順序付きで保持できるコレクションを提供し、効率的なデータの操作が可能です。例えば、データの追加、削除、検索、ソートなど、さまざまな操作がListを使って簡単に行えます。

 この記事では、Dartの公式ドキュメント(Listクラス)をもとに、FlutterでListクラスをどのように活用するかを解説します。Listの基本的な使い方から応用的な操作まで、リストをマスターするためのガイドをお届けします。

Listクラスとは

 DartのListクラスは、順序付けされた要素のコレクションを表します。リストはゼロベースのインデックスを持ち、任意の型のデータを格納できます。たとえば、intStringbool、カスタムクラスなど、さまざまな型の要素をリストに保持することができます。

Listの基本的な特徴:

  • 任意の型をサポート:リストはジェネリック型をサポートし、さまざまな型のデータを格納できる。
  • 順序付けされたコレクション:リスト内の要素は順番に格納され、インデックスでアクセス可能。
  • サイズの動的変更:Listのサイズは動的に増減可能。

Listクラスの基本操作

1. Listの作成

リストを作成するには、リテラルを使う方法と、Listクラスのコンストラクタを使う方法があります。

リストリテラルを使う方法
void main() {
  List<int> numbers = [1, 2, 3, 4, 5];
  List<String> fruits = ['Apple', 'Banana', 'Orange'];
  
  print(numbers);  // [1, 2, 3, 4, 5]
  print(fruits);   // [Apple, Banana, Orange]
}
Listコンストラクタを使う方法
void main() {
  List<int> numbers = List.filled(5, 0); // 5つの要素が0で埋められる
  print(numbers); // [0, 0, 0, 0, 0]
}

2. 要素へのアクセス

リストの要素にアクセスするには、インデックスを使用します。インデックスはゼロベースです。

void main() {
  List<String> fruits = ['Apple', 'Banana', 'Orange'];
  print(fruits[0]); // Apple
  print(fruits[2]); // Orange
}

3. 要素の追加・削除

DartのListクラスでは、リストに新しい要素を追加したり、既存の要素を削除したりすることができます。

要素の追加
void main() {
  List<int> numbers = [1, 2, 3];
  numbers.add(4);
  print(numbers); // [1, 2, 3, 4]
  
  // 複数の要素を一度に追加
  numbers.addAll([5, 6]);
  print(numbers); // [1, 2, 3, 4, 5, 6]
}
要素の削除
void main() {
  List<int> numbers = [1, 2, 3, 4, 5];
  numbers.remove(3); // 3を削除
  print(numbers); // [1, 2, 4, 5]
  
  numbers.removeAt(1); // インデックス1の要素を削除
  print(numbers); // [1, 4, 5]
}

4. リストの結合

複数のリストを結合する場合は、addAllメソッドや+演算子を使うことができます。

void main() {
  List<int> list1 = [1, 2, 3];
  List<int> list2 = [4, 5, 6];
  
  // addAllを使う
  list1.addAll(list2);
  print(list1); // [1, 2, 3, 4, 5, 6]
  
  // +演算子を使う
  List<int> list3 = [7, 8, 9];
  List<int> combined = list1 + list3;
  print(combined); // [1, 2, 3, 4, 5, 6, 7, 8, 9]
}

Listクラスの高度な操作

1. 要素のフィルタリング

whereメソッドを使って、リストの要素を条件に基づいてフィルタリングできます。

void main() {
  List<int> numbers = [1, 2, 3, 4, 5, 6];
  List<int> evenNumbers = numbers.where((n) => n % 2 == 0).toList();
  print(evenNumbers); // [2, 4, 6]
}

2. リストのソート

sortメソッドを使うことで、リストの要素を昇順またはカスタム順序でソートできます。

void main() {
  List<int> numbers = [5, 3, 8, 1, 9];
  numbers.sort(); // 昇順ソート
  print(numbers); // [1, 3, 5, 8, 9]
  
  // カスタム順序(降順)
  numbers.sort((a, b) => b.compareTo(a));
  print(numbers); // [9, 8, 5, 3, 1]
}

3. リストのマッピング

mapメソッドを使って、リストの各要素を変換することができます。たとえば、リスト内の各要素を2倍にしたり、異なる型に変換することが可能です。

void main() {
  List<int> numbers = [1, 2, 3];
  List<int> doubled = numbers.map((n) => n * 2).toList();
  print(doubled); // [2, 4, 6]
}

Listクラスのユースケース

DartのListクラスは、様々なアプリケーションで使われます。特に、Flutterでは、データをリスト表示するUIパーツ(ListViewなど)との組み合わせが一般的です。

1. Flutterでのリスト表示

Flutterでは、ListViewを使ってリストをスクロール可能なビューに表示できます。

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('ListView Example')),
        body: ListView(
          children: <Widget>[
            ListTile(title: Text('Item 1')),
            ListTile(title: Text('Item 2')),
            ListTile(title: Text('Item 3')),
          ],
        ),
      ),
    );
  }
}

まとめ

DartのListクラスは、順序付けされたコレクションを扱うための強力なツールであり、基本的な操作から高度な操作まで幅広い機能を提供しています。リストの作成、要素の追加・削除、ソート、フィルタリングなど、さまざまな操作をマスターすることで、Flutterアプリケーションの開発効率を高めることができます。この記事を参考に、Dartのリスト操作をフル活用して、より洗練されたアプリを構築しましょう。

コメント