2015-03-21 20 views
6

Ich versuche, eine Dart-Single-Page-Anwendung zu erstellen.Globale Variablen in Dart

Ich habe ein erstes benutzerdefiniertes Element (custom-application) erstellt, das die gesamte Anwendung enthält. Es enthält einen Container zum Rendern von Ansichten. Und ein Seitennav, das Benutzerinformationen enthält und aktualisiert wird, wenn sich der Benutzer anmeldet.

Ich möchte Informationen zwischen Ansichten teilen. Wie kann ich eine globale Variable in custom-application definieren und in der Lage sein, sie mit den anderen Ansichten zu teilen?

Zum Beispiel, wenn Sie die App starten, werden Sie nicht authentifiziert. Wenn Sie anrufen/einloggen (login-view), haben Sie ein Login-Formular. Ich möchte, wenn Sie die Anwendung anmelden, das custom-application Element speichert die Benutzerinformationen von der verschachtelten Ansicht login-view geladen und aktualisieren Sie die Seite nav.

Ist es möglich, es zu tun?

Antwort

9

Erstellen Sie einfach eine Bibliotheksdatei und erstellen Sie Felder für Globals, die Sie dort benötigen. Importieren Sie diese Bibliothek überall dort, wo Sie auf diese Felder zugreifen müssen.

app.dart

import 'globals.dart' as globals; 

main() { 
    globals.isLoggedIn = true; 
} 

component1.dart

import 'globals.dart' as globals; 

class MyComponent { 
    view() { 
    if(globals.isLoggedIn) { 
     doSomething(); 
    else { 
     doSomethingElse(); 
    } 
    } 
} 

globals.dart

library my_prj.globals; 

bool isLoggedIn = false; 

Sie können auch
- erstellen Sie ein Singleton in der globalen Bibliothek (siehe How do you build a Singleton in Dart? für weitere Details).
- Verwenden Sie Observable, um über Änderungen benachrichtigt zu werden (siehe Implement an Observer pattern in Dart, How can i trigger a kind of onChange event in a class für weitere Details)

+0

Es funktioniert gut. Danke für das und alle Links. Ich werde nachsehen. – T00rk

+0

Sorry, Tippfehler. Der Raum sollte ein Punkt sein. –

+1

Es ist mir endlich gelungen, globale Variable als observable mit dem beobachtbaren Muster zu erhalten. Es funktioniert sehr gut. Danke nochmal. – T00rk