我正在寻找有关如何在登录后处理负载以及如何在不混合太多东西的情况下合并来自多个端点的数据的建议,尤其是以下两件事:
在成功获得userId
的登录响应后,我需要推送HomeScreen()
并从各个提供商处加载一些初始数据。
示例:
// home_screen.dart
initState() {
super.initState();
initializeData();
}
Future <void> initializeData() {
var authenticationProvider = Provider.of<AuthenticationProvider>(context);
var accountProvider = Provider.of<AccountProvider>(context);
var albumProvider = Provider.of<AlbumProvider>(context);
var songProvider = Provider.of<SongProvider>(context);
await accountProvider.loadAccount(authenticationProvider.getLoggedInUser().id);
await albumProvider.loadAlbums();
await songProvider.loadSongsForAlbums(albumProvider.getAlbums())
}
这有效,但感觉很丑吗?
想象一下这样的API:
api /相册(模型包含有关相册的信息)
api / albumpurchases(模型包含其中的albumId
和userId
)
获取已登录用户的购买专辑的最佳方法是什么?
我可以想到3种不同的方法,但似乎没有一种很好。
AlbumProvider,它具有两个数组albums[]
和purchases[]
,以及方法getAlbumByPurchase (String purchaseId)
或getPurchaseForAlbum(String albumId)
,然后由ID执行.where()
并返回该项目。
具有AlbumProvider
和AlbumPurchaseProvider
,然后使用ProxyProvider
合并两者。
我不确定该如何实施,将不胜感激!
将purchase
属性添加到Album
,然后类似于方法#1手动映射它
。
到目前为止,我已经使用过此功能,但一开始它似乎很棒,但很快就会变得非常难看,因为您到处的后续Album
HTTP响应都缺少该purchase
属性,因此我要么需要获取再次purchase
,或者我需要根据获得的ID从Album
的购买中获得一个AlbumProvider
对象。