💨

[Flutter]都道府県のリストは効率よく書くべし

に公開

はじめに

今回はflutterで都道府県のリストを使った実装をする際にどうすれば効率よく書くことができるのかについて書こうと思います。

なぜこれを書こうと思ったかというと、私が以前実装する際にいちいち47都道府県を手打ちで一からやるというなんとも非効率な方法をとっていたからです。
当時は寿司打を毎日することを習慣にしており、鍛えたタイピング力の見せ所だ!と浮かれていました。
先輩や友達に教えてもらった方法を中心にどのようにすればよかったのか、について書いていこうと思います。

自分の書いたコード

私が作りたかったのは都道府県の名前がそれぞれ入ったListTileを作りたかったのですが、わたしはListTileの詳細をPrefectureListTileというクラスにまとめて、各都道府県ごとに呼び出して、変数化した部分に都道府県名を入れていくというものでした。
以下が簡略化した例です。

class PrefectureListTile extends StatelessWidget {
  final String prefecture;

  const PrefectureListTile(this.prefecture, {super.key});

  
  Widget build(BuildContext context) {
    return ListTile(
      title: Text(prefecture),
      onTap: () {
        print('$prefecture が選ばれました');
      },
    );
  }
}

ListView(
  children: [
    PrefectureListTile('北海道'),
    PrefectureListTile('青森県'),
    // ...
    PrefectureListTile('沖縄県'),
  ],
),

これを47個並べて都道府県ごとに全部書き換えるというなんとも非効率な方法ですね。
もっと楽にコードを書こうと考えるべきでした。

効率の良い書き方

この方法が一番書きやすく、コードも見やすくなっています。
配列に都道府県をすべて入れてListView.builderで呼び出すというものです。
以下がそのコードです。

const List<String> prefectures = [
  '北海道', '青森県', '岩手県', '宮城県', '秋田県', '山形県', '福島県',
  '茨城県', '栃木県', '群馬県', '埼玉県', '千葉県', '東京都', '神奈川県',
  '新潟県', '富山県', '石川県', '福井県', '山梨県', '長野県',
  '岐阜県', '静岡県', '愛知県', '三重県',
  '滋賀県', '京都府', '大阪府', '兵庫県', '奈良県', '和歌山県',
  '鳥取県', '島根県', '岡山県', '広島県', '山口県',
  '徳島県', '香川県', '愛媛県', '高知県',
  '福岡県', '佐賀県', '長崎県', '熊本県', '大分県', '宮崎県', '鹿児島県', '沖縄県'
];

ListView.builder(
  itemCount: prefectures.length,
  itemBuilder: (context, index) {
    return ListTile(
      title: Text(prefectures[index]),
      onTap: () {
        print('${prefectures[index]}がタップされました');
      },
    );
  },
)

都道府県にリストについては以下の記事を使わせていただければすぐに終わりそうです。
https://zenn.dev/tolto/articles/60a86da7ae8090

効率の良い書き方その2

2つ目の方法はenumを使うことです。
これは以下の記事で詳しく書いてくれているようなので参考にするといいと思います。
https://zenn.dev/hirotosuzuki/articles/bdc52850441b60

効率の良い書き方番外編

100歩譲って自分の書いたコードを使うとして、一つ書いた時点でChatGPTに出力してもらえば効率が上がったでしょう。文字の打ち間違えや漢字のミス等もなくせますし、コピペしたらそれで終わりです。
日頃からよく利用しているのになぜ思いつかなかったのか・・・

また、都道府県のListTileを作る方法をChatGPTに聞いてみたところ、japan_prefecturesというパッケージがあるようですが、指定されたリンクを見ると消されているようなのでもう使えないのかもしれません。

最後に

都道府県のListTileを作る際にまず最初に楽な方法を調べて、記事を書いてくれている人や今の時代ならAIに頼るべきだといういい例でしたね。
動けばよし書けたらよしではなく、より早くより見やすいコードを書くために調べるということを怠らずにやっていきたいと思います。

ぽちぽちのつどい

Discussion