当有很多数据要从IndexedDB中提取,而你得到的只是未来时,如何阻止Dart应用程序向前移动?
我尝试将我的应用程序从使用localStorage迁移到使用indexedDB(通过Lawndart)。现在期货的使用正在扰乱我的头脑!实际上,我想做的是:当用户想要加载保存的游戏时,阻止应用程序继续运行,直到所有数据都从indexedDB加载。这不是一个“在股票报价加载时显示天气…”的问题,似乎有很多例子。在我渲染任何东西之前,我需要所有的数据 在我放弃并在我的应用程序中输入所需的点击作为等待未来完成的黑客手段之前,我想做以下事情(使用Lawndart作为我的indexedDb接口),但我无法用正确的方式来做当有很多数据要从IndexedDB中提取,而你得到的只是未来时,如何阻止Dart应用程序向前移动?,dart,indexeddb,dart-async,Dart,Indexeddb,Dart Async,我尝试将我的应用程序从使用localStorage迁移到使用indexedDB(通过Lawndart)。现在期货的使用正在扰乱我的头脑!实际上,我想做的是:当用户想要加载保存的游戏时,阻止应用程序继续运行,直到所有数据都从indexedDB加载。这不是一个“在股票报价加载时显示天气…”的问题,似乎有很多例子。在我渲染任何东西之前,我需要所有的数据 在我放弃并在我的应用程序中输入所需的点击作为等待未来完成的黑客手段之前,我想做以下事情(使用Lawndart作为我的indexedDb接口),但我无法
loadGame(字符串\u id){
如果(_id==null)_id=“a”;
字符串前缀;
如果(_id==“a”){
_前缀=“a”;
}否则{
_前缀=_savedGames[_id];
}
字符串加载名称;
//从indexedDb加载的玩家总数
int numPlayers;
//加载保存的游戏基础
_gameStore.getByKey(_前缀+“_游戏”)。然后((LoadedName){
Map saveObject=JSON.decode(loadedGame);
_year=int.parse(saveObject[“year”]);
_week=int.parse(saveObject[“week”]);
_numWeeks=int.parse(saveObject[“numWeeks]”);
numPlayers=int.parse(saveObject[“numPlayers]”);
}).然后(){
//加载存储的播放器
_玩家=新地图();
对于(int i=1;i我过去做过,不知道这是否是最好的方法,但似乎有效:-
List updateList=new List();
对于(int i=1;i当您链接Future
s时,您必须在然后方法中返回Future
例如,假设Player.loadFromDatabase
返回Future
,您应该编写:
然后(){
最终期货=[];
//加载存储的播放器
_玩家=新地图();
对于(int i=1;iIt’有趣的是,在JavaScript中使用简单的延续(回调函数)是多么的简单和直接。谢谢!这就成功了。在您的回复和最后两天的搜索答案之间,我想我终于找到了答案。感谢您的帮助!