前提・実現したいこと
Flutterどころかプログラミングについてかなりの初心者です。
FlutterでDropdownButtonでプルダウンリストを作成したのですが、選択した値を次の画面に渡す方法が分からないので教えてほしいです。
以下のコードでnextPage.dartに遷移した時に「選択肢1」を選択していたら「text: hogehoge」と入力したらその部分に「選択肢1」と表示させたいです。
また、可能であればnextPageに渡せた値の変数?引数?配列?をどこかから確認できる方法があれば合わせて教えていただきたいです。
発生している問題・エラーメッセージ
エラーメッセージは表示されていません。
該当のソースコード
Main.dart
Flutter
1 2class MainDispay extends StatefulWidget{ 3 @override 4 _MainDispayState createState() => _MainDispayState(); 5} 6 7class _MainDispayState extends State<MainDispay>{ 8 9 List<DropdownMenuItem<int>> _items = List(); 10 int _selectItem = 0; 11 12 @override 13 void initState(){ 14 super.initState(); 15 setItems(); 16 _selectItem = _items[0].value; 17 } 18 19 void setItems(){ 20 _items 21 ..add(DropdownMenuItem( 22 child: Text('選択肢1'), 23 value: 1, 24 25 )) 26 ..add(DropdownMenuItem( 27 child: Text('選択肢2'), 28 value: 2, 29 )); 30 } 31 @override 32 Widget build(BuildContext context) { 33 return Scaffold( 34 body: Center( 35 child: Column( 36 mainAxisSize: MainAxisSize.min, 37 children:[ 38 DropdownButton( 39 items: _items, 40 value: _selectItem, 41 onChanged: (value) => { 42 setState((){ 43 _selectItem = value; 44 }), 45 }, 46 ), 47 SizedBox( 48 child: RaisedButton( 49 onPressed:(){ 50 Navigator.push( 51 context, 52 MaterialPageRoute( 53 builder: (context) => nextPage( 54 watashitai: _selectItem(value); //ここで選択したプルダウンの値を次画面へ渡したい 55 ), 56 ), 57 ); // Navigator 58 }, // onPressed 59 ), 60 ), 61 ] //children 62 ), 63 ), 64 ); 65 } 66}
nextPage.dart
Flutter
1class nextPage extends StatefulWidget{ 2 3 final String watashitai; 4 5 const nextPage({ 6 Key key, 7 this.watashitai, 8 }) : super(key : key); 9 10 @override 11 _nextPageState createState() => _nextPageState( 12 watasareta: watashitai 13 ); 14} 15class _nextPageState extends State<nextPage>{ 16 final String watashitai; 17 18 _nextPageState({ 19 this.watashitai, 20 }); 21 22~~以下省略~~ 23
試したこと
Navigator.pushの値を渡すところで「selectItem.value」や「_items.value」はダメでした。
またtextFieldの「controller」は使えるのか?と思い、試してみましたがそれも当然ながらダメでした。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/29 13:51