我在ListView
中有一个FutureBuilder
。该FutureBuilder
从磁盘加载列表,加载后显示ListView
。该ListView
有一个自定义的ItemTile
用于显示每个加载的项目。每个ItemTile
都有一个用于复制自身的按钮(即,将自身的副本写入内存)。现在如何通知ListView
进行重建?
这是实现我的ItemTile
的方式(我只包含了相关代码)。
@override
Widget build(BuildContext context) {
return InkWell(
child: Card(
semanticContainer: false,
//This flag should be false if the card contains multiple different types of content.
child: Container(
height: 200,
width: double.infinity,
child:
Align(
alignment: Alignment.topRight,
child: getPopUpMenuButton(context),
)
),
),
);
}
PopupMenuButton<String> getPopUpMenuButton(BuildContext context) {
return PopupMenuButton(
onSelected: (str) {
switch (str) {
case 'MAKECOPY':
{
Item newItem = Item.clone(this.item, sameUID: false);
Scaffold.of(context).setState(() {
_itemManager.save(newItem);
});
}
}
},
icon: Icon(Icons.more_vert),
itemBuilder: (_) => <PopupMenuItem<String>>[
new PopupMenuItem<String>(
value: 'MAKECOPY',
child: Text(AppLocalizations.of(context).get('edit_as_copy'))),
],
);
}
我以为Scaffold.of(context).setState
可以达到目的,但事实并非如此。如何正确地从列表项中调用ListView
/ FutureBuilder
的重建?