当我单击时,在我的网格项目上,它将打开一个ModalBottomSheet
并列出了字符串过滤器芯片。单击筛选器芯片值时,该值将更新,但窗口小部件不会重新呈现。该应用程序是StatefulWidget
。
我已经将函数称为setState
。
我期望的是filterchips在选择时变为选中状态和未选中状态。
void _showBottom(index){
showModalBottomSheet<void>(
context: context,
builder: (BuildContext context){
return new Container(
padding: new EdgeInsets.all(27.0),
child: new Column(
children: <Widget>[
new Text('Some headline', style: new TextStyle( fontWeight: FontWeight.bold, fontSize: 22),),
getFilterChipsWidgets(index),
],
),
);
}
);
}
Widget getFilterChipsWidgets(index)
{
List<Widget> tags_list = new List<Widget>();
for(var i=0; i<list[index]["tags"].length; i++) {
var _isSelected = true;
FilterChip item = new FilterChip(
label: Text("Filtertext",),
selected: _isSelected,
onSelected: (bool newValue) {
setState(() {
_isSelected = !_isSelected;
debugPrint(_isSelected.toString());
});
},
);
tags_list.add(item);
}
return new Row(children: tags_list);
}
最佳答案
您需要为底部工作表的根节点添加高度。因此,将您的容器更改为固定高度。
Container(
height: 300.0, // Add height
padding: new EdgeInsets.all(27.0),
child: new Column(
children: <Widget>[
new Text('Some headline',
style: new TextStyle(fontWeight: FontWeight.bold, fontSize: 22),),
getFilterChipsWidgets(index),
],
),
通常,我会根据传入的小部件动态地进行计算。但这应该可以帮助您入门。
编辑
我在下面给出的评论是实际答案。
您应该将底部工作表中的所有小部件包装到它自己的有状态小部件中,然后在其中设置值。
关于dart - Flutter Bottomsheet Modal不重新呈现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55334769/