首页 > 解决方案 > 如何重建屏幕以加载数据而无需在 Flutter 中刷新

问题描述

我有带有收藏按钮、收藏屏幕和探索屏幕的卡片小部件。当我从探索屏幕单击 CardWidget 收藏按钮时,它应该会自动显示在收藏屏幕中,但现在我必须刷新或热重新加载才能使 Card Widget 出现,所以如果我能得到任何帮助或建议,将不胜感激.

我们正在使用带有 ChangeNotifierProvider( Consumer ) 的 BaseView

卡片小部件收藏按钮

                                     child: GestureDetector(
                                          onTap: () {
                                            setState(() {
                                              final fm = FavoriteModel(
                                                  id: widget.id,
                                                  name: widget.name,
                                                  ordinal: widget.ordinal,
                                                  showCards: false,
                                                  items: []);

                                              if (model.fav
                                                      .modelExists(fm.id) ==
                                                  -1) {
                                                model.fav.addToFavorite(
                                                    fm.id, fm, widget.item);
                                              }

                                              if (widget.item.favorited) {
                                                model.fav.removeFromFavorite(
                                                    fm.id, widget.item.id);
                                              } else {
                                                model.fav.addToFavorite(
                                                    fm.id, fm, widget.item);
                                              }
                                            });
                                          },
                                          child: Image(
                                            color:
                                                Theme.of(context).accentColor,
                                            image: AssetImage(widget
                                                    .item.favorited
                                                ? 'assets/icons/more-icons/favorited-heart.png'
                                                : 'assets/icons/more-icons/unfavorited-heart.png'),
                                            fit: BoxFit.cover,
                                            height: 20,
                                          )),


我已经在这里上传了我最喜欢的屏幕,所以如果有人可以查看它并帮助我解决它,我将不胜感激。

https://docs.google.com/document/d/18d7KspFaqUTsAy-8QmrQ2MzmUEKb953GtS0J2mFSuIs/edit?usp=sharing

标签: flutterdartflutter-layoutflutter-dependenciesflutter-web

解决方案


你没有提到你是如何东路由的。您可以使用导航器路由到收藏页面。

onTap() {
  Navigator.pushNamed(context, '/favouritePage');
}

如果您尝试使用 viewmodel/bloc 进行导航,请确保不要忘记调用notifyListeners().

如果您确定 viewmodel 没有问题,那么您的 UI/Consumer 小部件可能有问题。


推荐阅读