OnTap 后刷新 Flutter ListView
Posted
技术标签:
【中文标题】OnTap 后刷新 Flutter ListView【英文标题】:Refresh Flutter ListView after OnTap 【发布时间】:2018-08-23 08:02:18 【问题描述】:我想更改所选项目的视图(_itemSelected)。当我选择一个项目但其他项目不刷新时它可以工作。有类似 notifydatasetchanged 的东西吗?我错过了什么?谢谢!
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)),
],
));
【问题讨论】:
"类似于 notifydatasetchanged"setState
的东西就是这样做的。您可能需要在父小部件(包含 ListView 的小部件)上调用它。
谢谢你的回答,但我打电话给 _scaffoldKey.currentState.setState(());没有运气:(
【参考方案1】:
好的,我找到了问题所在。 就像 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(()
);
【讨论】:
以上是关于OnTap 后刷新 Flutter ListView的主要内容,如果未能解决你的问题,请参考以下文章
添加 if 语句后,颤振 onTap 错误 onTap 停止工作