Ответ 1
Конструктор может возвращать только экземпляр класса, он является конструктором (MyComponent
). Для вашего требования потребуется, чтобы конструктор возвращал Future<MyComponent>
, который не поддерживается.
Вам нужно либо сделать явный метод инициализации, который должен вызывать пользователь вашего класса, например:
class MyComponent{
MyComponent();
Future init() async {
print("init");
}
}
void main() async {
var c = new MyComponent();
await c.init();
print("done");
}
или вы начинаете инициализацию в consturctor и позволяете пользователю компонента ждать завершения инициализации.
class MyComponent{
Future _doneFuture;
MyComponent() {
_doneFuture = _init();
}
Future _init() async {
print("init");
}
Future get initializationDone => _doneFuture
}
void main() async {
var c = new MyComponent();
await c.initializationDone;
print("done");
}
Когда _doneFuture
уже завершено, await c.initializationDone
возвращается немедленно, иначе он ожидает, что будущее будет завершено первым.