Closed3
SearchAnchor.barのsuggestionBuilderでsetStateを機能させたい
SearchAnchor.bar
のsuggestionBuilder
では、検索バーを押したときに検索バーの下に出てくるシートを作成することができる。
suggestionBuilder
という名の通り、本来は検索バーに入力した文字をもとに候補を提示する部分ではあるが、今回私はsegmentedButton
やCheckboxListTile
を入れたい。
suggestionsBuilder: (context, controller) {
return <Widget>[
SegmentedButton(),
...List.generate(
//
return CheckboxListTile();
//
),
];
},
しかし、setStateで再描画しようとしても再描画されない。
どうやら、検索バーの文字の変更によってのみしか再描画されないらしい。
とりあえずStatefulBuilder
でsegmentedButton
やCheckboxListTile
それぞれを囲めば再描画されるものの、これだとsegmentedButton
とCheckboxListTile
間での再描画が反映されない(segmentedButton
を選択するとCheckboxListTile
をdisable
にするみたいな動作)。
強引だが、Column
で囲んだうえで、それをStatefulBuilder
で囲むことで解決した。
suggestionsBuilder: (context, controller) {
return <Widget>[
StatefulBuilder(builder: (context, setState) {
return Column(
children: [
SegmentedButton(),
...List.generate(
//
return CheckboxListTile();
//
),
],);},
];
},
なお、このColumn
外を再描画するには、Column
内でsetState
を使う際、その後にthis.setState(() {});
を使えばよい。
このスクラップは1ヶ月前にクローズされました