どうも、ちょげ(@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]」のようなリストになります。
コメント