前提・実現したいこと
トグルボタンを押下した際に別のウィジェットも変更したい
(今回でいうとテキスト)
発生している問題
トグルボタンの関数の中で変数を変更してテキストを変更しようとしたができない
該当のソースコード
flutter
1import 'package:flutter/material.dart'; 2 3int br = 0; 4 5void main() { 6 runApp(MyApp()); 7} 8 9class MyApp extends StatelessWidget { 10 11 @override 12 Widget build(BuildContext context) { 13 return MaterialApp( 14 home: Scaffold( 15 body: Column( 16 children: [ 17 _ToggledButton(), 18 _Text(), 19 ], 20 ), 21 ), 22 ); 23 } 24} 25 26class _ToggledButton extends StatefulWidget { 27 const _ToggledButton({Key? key}) : super(key: key); 28 29 @override 30 State<_ToggledButton> createState() => _ToggledButtonState(); 31} 32 33class _ToggledButtonState extends State<_ToggledButton> { 34 List<bool> selected = [true,false]; 35 36 @override 37 Widget build(BuildContext context) { 38 return Container( 39 child: ToggleButtons( 40 selectedColor: Colors.red, 41 children: [ 42 Text('赤'), 43 Text('青'), 44 ], 45 isSelected:selected, 46 onPressed: (index){ 47 setState(() { 48 if (index==0){ 49 selected[0] = true; 50 selected[1] = false; 51 br=1; 52 }else{ 53 selected[0] = false; 54 selected[1] = true; 55 br=0; 56 } 57 58 }); 59 }, 60 ), 61 ); 62 } 63} 64 65class _Text extends StatefulWidget { 66 const _Text({Key? key}) : super(key: key); 67 68 @override 69 State<_Text> createState() => _TextState(); 70} 71 72class _TextState extends State<_Text> { 73 @override 74 Widget build(BuildContext context) { 75 return Container( 76 child: SelectCol(), 77 ); 78 } 79 80 Widget SelectCol(){ 81 if (br==0){ 82 return Text('青'); 83 }else{ 84 return Text('赤'); 85 } 86 } 87 88} 89
試したこと
MaterialAppのhomeにprovider?というものを使ってトライしてみましたが自分では解決できませんでした
ご教授いただきますとありがたいです
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/08/08 01:34