onchanged
を以下の様にして、Card listの方はText(displayText)
とすることで、onchanged
の中でText
で表示する文字列を作成するという方法はどうでしょうか。
dart
1 onChanged: (String? value) {
2 setState(() {
3 isSelectedItem = value!;
4 switch (isSelectedItem) {
5 case '1':
6 displayText = 'a';
7 break;
8 case '2':
9 displayText = 'b';
10 break;
11 case '3':
12 displayText = 'c';
13 break;
14 }
15 });
16 },
ーーーー修正前回答
dart
1 DropdownButton<Text>(
2 value: isSelectedItem,
3 items: const [
4 DropdownMenuItem<Text>(
5 child: Text("a"),
6 value: Text("a"),
7 ),
8 DropdownMenuItem<Text>(
9 child: Text("b"),
10 value: Text("b"),
11 ),
12 DropdownMenuItem<Text>(
13 child: Text("c"),
14 value: Text("c"),
15 ),
16 ],
17 onChanged: (value) {
18 setState(() {
19 isSelectedItem = value!;
20 });
21 })
なお、上のやり方だと初期値は未選択状態(null)になってしまう。
初期値を指定したい場合は、以下の様にitemsの中身を別途用意しておき、初期値をその用意した中のvalueを使うようにする必要があるみたい。
dart
1 Text? isSelectedItem;
2 List<DropdownMenuItem<Text>> get values => const [
3 DropdownMenuItem<Text>(
4 child: Text("hoge"),
5 value: Text("hoge"),
6 ),
7 DropdownMenuItem<Text>(
8 child: Text("hage"),
9 value: Text("hage"),
10 ),
11 DropdownMenuItem<Text>(
12 child: Text("dummy"),
13 value: Text("dummy"),
14 ),
15 ];
16中略
17 Widget build(BuildContext context) {
18 isSelectedItem= isSelectedItem?? values[0].value;
19中略
20 DropdownButton<Text>(
21 value: isSelectedItem,
22 items: values,
23 onChanged: (value) {
24 setState(() {
25 isSelectedItem= value!;
26 });
27 })
28
29
最後に、Text(a,b,c)を取り出す目的は?
もし、選択されたテキスト中の文字を使い他のTextに設定する文字にしたいというのであれば、valueをa,b,cにして、表示させたい場所ではText(isSelectedItem)と実装したほうが良いと思う。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/10 06:46
2022/06/10 07:22