質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

Q&A

1回答

1581閲覧

flutter DropDownButtonで選択したTileが何番目かを記憶する

otai0811

総合スコア17

Flutter

Flutterは、iOSとAndroidのアプリを同じコードで開発するためのフレームワークです。オープンソースで開発言語はDart。双方のプラットフォームにおける高度な実行パフォーマンスと開発効率を提供することを目的としています。

Dart

Dartは、Googleによって開発されたJavaScriptの代替となることを目的に作られた、ウェブ向けのプログラミング言語である。

0グッド

0クリップ

投稿2020/07/07 18:59

flutterにて、DropDownButtonで1~100までが表示されるListTileを作ります。その時に、下のコードで言うageに選択した数字が代入されていると思うのですが、このageと言う変数はDropDownButtonウィジェットの中でしか使えません。
error: Undefined name 'age'. とエラーが出ます。
このageと言う変数をこのウィジェットの外で使いたい場合はどのようにすれば良いでしょうか?

DropdownButton<String>(

1 value: dropdownValue, 2 3 icon: Icon(Icons.arrow_downward), 4 iconSize: 24, 5 elevation: 16, 6 style: TextStyle(color: Colors.deepPurple), 7 underline: Container( 8 height: 2, 9 color: Colors.deepPurpleAccent, 10 ), 11 onChanged: (String newValue) { 12 setState(() { 13 dropdownValue = newValue; 14 }); 15 }, 16 items: List<String>.generate(100,(int index)=>(index + 1).toString()) 17 .map<DropdownMenuItem<String>>((String age) { 18 return DropdownMenuItem<String>( 19 value: age, 20 child: Text(age), 21 ); 22 23 }).toList(), 24 25 26 27 28 29 ),

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

satokei

2020/07/08 01:47

選択された値は、「dropdownValue」に入っているのではないのでしょうか?
otai0811

2020/07/08 14:11

ご回答頂き、ありがとうございます!確かにdropdownValueに入っていました。私はageにのみ選択された値が入っていると勘違いしていました。初歩的な質問にもかかわらず、回答していただきありがとうございました。そこで、新たな疑問が生じたのですが、dropdownValueとageには同じ値が入っていますが、2つも同じ値が入っている変数がなぜ必要なのでしょうか?
satokei

2020/07/08 17:54

回答をまとめました。
guest

回答1

0

質問 1

ageに選択した数字が代入されていると思うのですが、このageと言う変数はDropDownButtonウィジェットの中でしか使えません。(中略)
このageと言う変数をこのウィジェットの外で使いたい場合はどのようにすれば良いでしょうか?

回答
選択された値は、dropdownValueに入っている。


質問 2

dropdownValueとageには同じ値が入っていますが、2つも同じ値が入っている変数がなぜ必要なのでしょうか?

回答

ageは、List<String>.generateで生成している文字列リストの要素1つ1つを受け取るための一時的なものです。
DropdownMenuItemが生成されたら、存在しないも同然です。

mapメソッドについて、理解を深めるとよいです。
https://qiita.com/dennougorilla/items/170deacf178891ced41e#2map

投稿2020/07/08 17:54

satokei

総合スコア1217

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問