Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Class 如何初始化dart类';具有不带initstate的异步值的私有属性?_Class_Oop_Flutter_Dart - Fatal编程技术网

Class 如何初始化dart类';具有不带initstate的异步值的私有属性?

Class 如何初始化dart类';具有不带initstate的异步值的私有属性?,class,oop,flutter,dart,Class,Oop,Flutter,Dart,每次实例化这个类时,我都希望调用firebase和给定检索值的_数据点。否则,我必须在类中的每个函数中分配数据点(参见FunctionOne示例),这很容易出错。注意:我不能使用initstate,因为这个函数不是小部件(我不需要或不想要构建方法)。如果可以,我会打电话给州政府。谢谢你的帮助 class AsyncInitExample { AsyncInitExample(this.enterThis); String enterThis; String _datapoint;

每次实例化这个类时,我都希望调用firebase和给定检索值的_数据点。否则,我必须在类中的每个函数中分配数据点(参见FunctionOne示例),这很容易出错。注意:我不能使用initstate,因为这个函数不是小部件(我不需要或不想要构建方法)。如果可以,我会打电话给州政府。谢谢你的帮助

class AsyncInitExample {
  AsyncInitExample(this.enterThis);
  String enterThis;

  String _datapoint;

  _getThis() async {
    var firebaseRetrieved = await //Firebase get this;
    this._datapoint = firebaseRetrieved;
  }

  Future<dynamic> functionOneExample {
    this._datapoint ?? await _getThis();
  }
  // etc. etc. etc.
}
类异步初始化示例{
AsyncintExample(this.enterThis);
这一点;
字符串_数据点;
_获取此()异步{
var Firebase retrieved=wait//Firebase获取此信息;
这是。_datapoint=firebaseRetrieved;
}
未来功能示例{
这个._数据点??等待获取此();
}
//等等等等等等。
}

我建议将私有构造函数与静态方法结合使用,以获取所有异步值,然后使用私有构造函数返回对象:

class AsyncInitExample {
  AsyncInitExample._(this.enterThis, this._datapoint);
  String enterThis;

  String _datapoint;

  static Future<AsyncInitExample> getInstance(String enterThis) async {
    var firebaseRetrieved = await //Firebase get this;
    return AsyncInitExample._(enterThis, firebaseRetrieved);
  }

  String functionOneExample() => _datapoint;
  
  // etc. etc. etc.
}
类异步初始化示例{
AsyncInitExample.\u(this.enterThis,this.\u数据点);
这一点;
字符串_数据点;
静态未来getInstance(字符串enterThis)异步{
var Firebase retrieved=wait//Firebase获取此信息;
返回AsyncInitExample.\输入this,firebaseRetrieved;
}
字符串函数oneexample()=>\u数据点;
//等等等等等等。
}

通过这种方式,您只需等待
getInstance()
中的
Future
,然后就可以访问类中的所有变量而无需等待。

这是否回答了您的问题?