flutter - 如何重建屏幕以加载数据而无需在 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
解决方案
你没有提到你是如何东路由的。您可以使用导航器路由到收藏页面。
onTap() {
Navigator.pushNamed(context, '/favouritePage');
}
如果您尝试使用 viewmodel/bloc 进行导航,请确保不要忘记调用notifyListeners()
.
如果您确定 viewmodel 没有问题,那么您的 UI/Consumer 小部件可能有问题。
推荐阅读
- reporting-services - 使用 Windows 文件共享每周在 SSRS 中自动订阅
- python - 如何将张量的字符串表示形式转换为熊猫中的numpy数组
- ios - 有没有人找到一种在 SwiftUI 2 中强制使用状态栏样式的方法?
- rust - 为什么每次迭代后变量的值都没有更新?
- swift - 从实例调用时,对方法的 Swift 通用约束的行为不符合预期
- apple-developer-account - 申请 DUNS 编号:“Apple Tracking Number”和“Purpose”
- typescript - 有没有办法在 TypeScript 中使用基于现有常量的计算字符串来声明联合类型?
- r - scale_x_discrete 不显示更改的轴标签
- c - 你如何修复调试断言失败?
- ios - Create Background-blurred RoundedRectangle in SwiftUI