2013-08-26 4 views
5

Angenommen, Sie haben:Kann nicht-triviale Konstruktoren Zukunft Rückkehr Funktionen aufrufen (wie oder Alternativen)

class Schema { 
    Schema.fromText(String jsonString) { 
     ... 
    } 
} 

In diesem Konstruktor nehmen es eine URL in der jsonString vorgesehen ist zum Herunterladen von Daten und die nur API zum Lesen einer URL gibt eine Zukunft zurück. Außerdem wird angenommen Schema ist nur ein gültiges Objekt, wenn diese URL-Daten gelesen und verarbeitet wurden. Ist es möglich, sogar ... zu implementieren?

Antwort

8

Was Sie tun möchten, ist mit Standardkonstruktoren nicht möglich.

Versuchen Sie stattdessen eine statische Methode, die eine neue in eine Zukunft eingewickelte Instanz zurückgibt.

Etwas wie:

class Schema { 
    Schema._fromApi(String apiResults) { ... } 
    static Future<Schema> build(String jsonString) { 
    return getContentsOfUrl(jsonString['url']) 
     .then((contents) => new Schema._fromApi(contents)); 
    } 
}