[Flutter]複数選択できるドロップダウンボタンを実装する方法

Flutter

どうも、ちょげ(@chogetarou)です。

複数選択することのできるドロップダウンボタンを実装する方法を紹介します。

スポンサーリンク

方法

プログラマー, プログラミング, コード, 仕事, コンピューター, インターネット, テクノロジー

複数選択できるドロップダウンボタンを実装するには、「multiselect」パッケージを使います。

まず、パッケージを「pubspec.yaml」で追加します。

dependencies:
  multiselect: ^0.0.4

そして、ファイルでインポートします。

import 'package:multiselect/multiselect.dart';

次に、値を保持するリストを用意します。

var selected = <String>[];

最後に、「DropDownMultiSelect」ウェジェットで、複数選択できるドロップダウンボタンを実装します。

class Home extends StatefulWidget {
  const Home({Key? key}) : super(key: key);

  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  var selected = <String>[];

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        body: Center(
      child: Padding(
        padding: const EdgeInsets.all(20.0),
        child: DropDownMultiSelect(
          onChanged: (List<String> x) {
            setState(() {
              selected = x; //値の変更
            });
          },
          options: ['a', 'b', 'c', 'd'], //選択できる値
          selectedValues: selected, //用意したリストを指定
          whenEmpty: '選択してください', //プレスホルダー
        ),
      ),
    ));
  }
}

上記で使用している引数は、次のようなものです。

  • onChanged : 変更された時に呼び出される「(List<String> ){}」型の関数
  • options : 選択できる値
  • selectedValues : 選択されている値
  • whenEmpty : 選択されていない時に表示する文字列

DropDownMultiSelectで、選択された値だけ、「onChanged」の引数で受け取るリストの要素となります。

例えば、「a, b , c, d」のうち「a」と「b」が選択された場合は、「[a, b]」のようなリストになります。

「multiselect」パッケージは、簡単に実装できますが、文字列のみのようです。

もし、文字列以外で複数選択できるドロップダウンボタンを実装したい場合は、「multi_select_flutter」などの他のパッケージを使うか、自作しましょう。

コメント

タイトルとURLをコピーしました