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的主要内容,如果未能解决你的问题,请参考以下文章

Flutter中如何返回刷新上一页?

添加 if 语句后,颤振 onTap 错误 onTap 停止工作

容器的 Flutter onTap 方法

扑动 ontap 错误 ontap 停止工作

Flutter 中 DropDownMenu 按钮中的 OnTap 函数

Flutter中如何将onTap函数传递给ListTile?