首页 > 解决方案 > 是否可以像在 JS 中那样在 dart(Flutter) 中实现 Future<>s 模式?

问题描述

我需要使用飞镖的期货(或其他)做这样的事情:

function Obj(){
  let resolver;

  this.promise = new Promise((resolve, reject) => {
    resolver = resolve;
  });


    //await firebase initialization or something
  setTimeout(() => {
      resolver('foo');
  }, 2000);
  
  return this;
}

var object = Obj();

(async () => {
  var result = await object.promise;
  console.log(result);
})();

这里发生了什么,我有一个对象存储在单例中的某处(在 JS 示例中它是一个object<Obj>),该对象在开始时在某处初始化,在下一行,还有另一个对象已初始化(在 JS 中类比它的async()功能)。这个异步函数正在等待object<Obj>初始化它的数据,比如“foo”或者其他。

在 JS 中,这种设置是可能的,因为 Promises 为您提供resolve了可以在任何地方使用的 ing 函数的引用。但是看着 Dart 的Future我找不到类似的东西,这很奇怪。

TL;博士:

我的目标是让第一个对象在其构造函数中异步初始化一些数据,然后以某种方式通知对该对象的所有其他引用数据已被初始化。

标签: flutterdartflutter-futurebuilder

解决方案


  1. 到目前为止,使用 dart 中的 Futures 是不可能做到这一点的。

  2. 但是:我过于复杂了,只需使用全局状态控制器即可。每当接收到数据时,状态就会更新,更新后的状态很容易在引用该状态的其他对象中跟踪(通常使用流)。


推荐阅读