こんにちは。(立て続けに質問すみません)
現在、いろいろなラジオボタン作成に挑戦しているのですが、
添付写真のようなラジオボタンを実装しようと考えています。
[リンゴ,バナナ,アップル]の選択肢があり、(リンゴとアップルが同じなのは気にしないでください...w)
このうち「バナナ」だけタップすると、追加のUIがその下にアコーディオンする動きで考えます。
Flutterのラジオボタンをそのまま使うと、デザインを柔軟にできなさそうだったので(FlatButtonのようなUIにしたかったので)、
GestureDetectorを使って、ラジオボタンと同じ動きを作ろうかと考えました。
そして試行錯誤中のコードが以下です。
ラジオボタンの動きをどのように実現すれば良いのかわからず時間だけが無くなっていき。。
知恵をお貸しいただけたらと思います。
flutter
1 final List sortFruits = ['リンゴ', 'バナナ', 'アップル']; 2 3 //ここに選択した値を入れたいです 4 String sortFruitsChecked = ""; 5 bool _inputFruits = false; 6 7 List<Widget> get _sortFruitsList { 8 List<Widget> sortFruitsCheckedList = List(); 9 sortFruits.forEach((item) { 10 sortFruitsCheckedList.add(Container( 11 width: double.infinity, 12 height: 60, 13 decoration: BoxDecoration( 14 border: Border.all(color: Colors.black87, width: 1), 15 borderRadius: BorderRadius.circular(8), 16 ), 17 margin: const EdgeInsets.symmetric(horizontal: 4.0, vertical: 8.0), 18 child: item != 'バナナ' 19 ? GestureDetector( 20 onTap: () { 21 setState(() { 22 sortFruitsChecked = item; 23 print(sortFruitsChecked); 24 }); 25 }, 26 child: Container( 27 color: Colors.transparent, 28 child: Text(item), 29 )) 30 : Column( 31 children: [ 32 GestureDetector( 33 child: Text(item), 34 onTap: () { 35 sortFruitsChecked = item; 36 print(sortFruitsChecked); 37 _inputFruits = false; 38 }, 39 ), 40 _inputFruits == true 41 //アコーディオン部分としてとりあえずこの"a"の文字が出るか実験 42 ? Container( 43 child: Text('a'), 44 ) 45 : Container() 46 ], 47 ))); 48 }); 49 return sortFruitsCheckedList; 50 } 51 52 Widget sortFruitsWidget() { 53 return Column( 54 crossAxisAlignment: CrossAxisAlignment.start, 55 children: [ 56 Column( 57 children: _sortGradeList, 58 ), 59 _inputFruits == true 60 ? OutlineButton( 61 color: Colors.white, 62 disabledBorderColor: Colors.black, 63 onPressed: () { 64 _selectsortTimeOthers(); 65 }, 66 child: Text(_currentIndex), 67 ) 68 : Container(), 69 ], 70 ); 71 } 72
GestureDetector以外にも、よりflutterにあった書き方などがあれば教えていただきたいです。
もしかするとFlutterで用意されているラジオボタンでも可能だったりするんですかね?(調べても、FlutButtonのようなデザインでラジオボタン実装している文献に出会えずでして、、)
よろしくお願いいたします。
---追記
ちょっと語弊があるかもしれないので補足させてください。
コード冒頭の
//ここに選択した値を入れたいです String sortFruitsChecked = "";
これはprint出力で成功を確認しています。
ですのでラジオ本来の機能は果たしているのですが、
・選択中のラジオボタンに色をつけたい(ラジオボタンぽくしたい)
・「バナナ」のみ追加でアコーディオン機能を入れたい
といったことが今回の理想です。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/25 08:09