前提
実現したいこと
アラートダイアログでドロップダウンリストを使用して
状態を即反映させる
発生している問題・エラーメッセージ
通常画面とアラートダイアログで別々のメニューを表示させたい
通常画面ではsetStateで即時反映されているようですが
アラートダイアログ画面では即時反映されず
1回アラートダイアログを消して再表示すると表示される
該当のソースコード
dart
1import 'package:flutter/material.dart'; 2 3void main() { 4 runApp(const MyApp()); 5} 6 7class MyApp extends StatelessWidget { 8 const MyApp({Key? key}) : super(key: key); 9 10 // This widget is the root of your application. 11 12 Widget build(BuildContext context) { 13 return MaterialApp( 14 title: 'Flutter Demo', 15 theme: ThemeData( 16 17 primarySwatch: Colors.blue, 18 ), 19 home: const MyHomePage(title: 'Flutter Demo Home Page'), 20 ); 21 } 22} 23 24class MyHomePage extends StatefulWidget { 25 const MyHomePage({Key? key, required this.title}) : super(key: key); 26 27 28 final String title; 29 30 31 State<MyHomePage> createState() => _MyHomePageState(); 32} 33 34class _MyHomePageState extends State<MyHomePage> { 35 36 String? stockcompany; 37 38 Widget DropMenuStock() { 39 return DropdownButton( 40 items: [ 41 DropdownMenuItem(child: Text(''),value: '-',), 42 DropdownMenuItem(child: Text('A'),value: 'A',), 43 DropdownMenuItem(child: Text('B'),value: 'B',), 44 DropdownMenuItem(child: Text('C'),value: 'C',), 45 ], 46 onChanged: (String? value){ 47 setState((){ 48 stockcompany = value; 49 }); 50 }, 51 value: stockcompany, 52 ); 53 } 54 55 String? stockcompanypop; 56 57 Widget DropMenuPopStock() { 58 return DropdownButton( 59 items: [ 60 DropdownMenuItem(child: Text(''),value: '-',), 61 DropdownMenuItem(child: Text('D'),value: 'D',), 62 DropdownMenuItem(child: Text('E'),value: 'E',), 63 DropdownMenuItem(child: Text('F'),value: 'F',), 64 ], 65 onChanged: (String? value){ 66 stockcompanypop = value; 67 print('//////////${value}'); 68 setState((){ 69 }); 70 }, 71 value: stockcompanypop, 72 ); 73 } 74 75 76 77 Widget build(BuildContext context) { 78 79 return Scaffold( 80 appBar: AppBar( 81 82 title: Text(widget.title), 83 ), 84 body: Column( 85 children: [ 86 DropMenuStock(), 87 IconButton( 88 onPressed: (){ 89 showDialog( 90 context: context, 91 builder:(BuildContext context)=> 92 AlertDialog( 93 actions: [ 94 DropMenuPopStock(), 95 ], 96 ), 97 ); 98 }, 99 icon: Icon(Icons.add), 100 ), 101 ], 102 ) 103 ); 104 } 105} 106
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/26 08:53