Listview OnTap后刷新颤振列表视图
我想更改所选项目(\u itemSelected)的视图。当我选择一个项目但其他项目不刷新时,它会工作。有一种类似于notifydatasetchanged的东西吗?我错过了什么?谢谢Listview OnTap后刷新颤振列表视图,listview,flutter,Listview,Flutter,我想更改所选项目(\u itemSelected)的视图。当我选择一个项目但其他项目不刷新时,它会工作。有一种类似于notifydatasetchanged的东西吗?我错过了什么?谢谢 class MyItemListItem extends State<MyItemList> { final MyItem item; MyItemListItem(this.item); @override Widget build(BuildContext context) {
class MyItemListItem extends State<MyItemList> {
final MyItem item;
MyItemListItem(this.item);
@override
Widget build(BuildContext context) {
return new ListTile(
key: _itemListItem,
onTap: () {
_scaffoldKey.currentState.showSnackBar(new SnackBar(
content: new Text("You clicked item number " + item.name)));
_itemSelected = item;
setState(() {
});
},
leading: new CircleAvatar(backgroundColor: Colors.blue),
title: _itemSelected != null && item == _itemSelected
? new Row(children: <Widget>[new Text("Foo"), new Text("Bar")])
: new Row(
children: <Widget>[
new Expanded(child: new Text(item.name)),
],
));
}
}
类MyItemListItem扩展状态{
最后一个我的项目;
MyItemListItem(this.item);
@凌驾
小部件构建(构建上下文){
返回新的ListTile(
键:_itemListItem,
onTap:(){
_scaffoldKey.currentState.showSnackBar(新SnackBar(
内容:新文本(“您单击了项目编号”+项目名称));
_itemSelected=项目;
设置状态(){
});
},
领先:新CircleAvatar(背景色:Colors.blue),
标题:\u itemSelected!=null&&item==\u itemSelected
?新行(子项:[新文本(“Foo”)、新文本(“Bar”)])
:新行(
儿童:[
新扩展(子项:新文本(item.name)),
],
));
}
}
好的,我解决了问题。
就像Günter Zöchbauer建议的那样,我补充道
_scaffoldKey.currentState.showSnackBar(new SnackBar(
content: new Text("You clicked item number " + item.name)));
_itemSelected = item;
home.addItem();
},
其中home是父窗口小部件
void addItem() {
setState(() {
});
}
“类似于notifydatasetchanged的东西”
setState
就是这样做的。您可能需要在父窗口小部件(包含ListView的小部件)上调用它。谢谢您的回答,但我调用了_scaffoldKey.currentState.setState((){});没有运气:(