【问题标题】:It it possible to call async method inside constructor?可以在构造函数中调用异步方法吗?
【发布时间】:2019-12-11 01:54:58
【问题描述】:

只有在第一个方法完成后,我才需要调用第二个方法。它们都是异步的。我写了下一段代码:

class MyApp extends StatelessWidget {
  TenderApiData _tenderApiData;
  MyApp(this._tenderApiData)
  {
    _tenderApiData.getApiKey().then(
      _tenderApiData.getRegionsList()
    );
  }
}

但我收到错误:

未处理的异常:“Future”类型不是“f”类型“(动态)=> FutureOr”的子类型

【问题讨论】:

    标签: dart


    【解决方案1】:

    当然可以

    class MyApp extends StatelessWidget {
      TenderApiData _tenderApiData;
      MyApp(this._tenderApiData) {
         _tenderApiData.getApiKey().then(( _) {
           _tenderApiData.getRegionsList()
          });
      }
    }
    

    【讨论】:

      【解决方案2】:

      那么在您的情况下,then 方法的语法是错误的,它需要一个返回 FutureOr<R> 而不是 Future 本身的函数。

      你的代码应该是

          _tenderApiData.getApiKey().then((_) =>
            _tenderApiData.getRegionsList()
          );
      

      如果打算使用Future的返回值,可以替换_

      【讨论】:

        猜你喜欢
        • 2011-12-30
        • 2019-10-07
        • 2014-05-27
        • 2011-07-10
        相关资源
        最近更新 更多