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

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

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

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

Dart

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

Q&A

解決済

1回答

3160閲覧

Flutterでラジオボタン+折りたたみの方法

Yariii

総合スコア61

Flutter

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

Dart

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

0グッド

0クリップ

投稿2020/09/24 15:28

編集2020/09/24 16:27

こんにちは。(立て続けに質問すみません)

現在、いろいろなラジオボタン作成に挑戦しているのですが、
添付写真のようなラジオボタンを実装しようと考えています。

[リンゴ,バナナ,アップル]の選択肢があり、(リンゴとアップルが同じなのは気にしないでください...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出力で成功を確認しています。

ですのでラジオ本来の機能は果たしているのですが、
・選択中のラジオボタンに色をつけたい(ラジオボタンぽくしたい)
・「バナナ」のみ追加でアコーディオン機能を入れたい
といったことが今回の理想です。

よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

カスタマイズしたラジオボタンの例なら、以下のページが参考になると思います。
https://stackoverflow.com/questions/50060276/flutter-custom-radio-button

アコーディオン機能についても、こちらが参考になるかと。
https://stackoverflow.com/questions/49760264/how-can-i-create-expanded-panel

投稿2020/09/25 04:46

satokei

総合スコア1217

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

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

Yariii

2020/09/25 08:09

ご回答ありがとうございます!! 参考リンクありがとうございます。こちらで組んでみようと思います。m_ _m
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問