2015-03-21 18 views
6

Próbuję utworzyć aplikację pojedynczej strony Dart.Zmienne globalne w Dart

Utworzono pierwszy niestandardowy element (custom-application), który zawiera całą aplikację. Ma kontener, który służy do renderowania widoków. Oraz nawigacja boczna, która będzie zawierać informacje użytkownika i będzie aktualizowana po zalogowaniu użytkownika.

Chcę udostępniać informacje między widokami. Jak zdefiniować zmienną globalną w custom-application i móc udostępnić ją innym widokom?

Na przykład po uruchomieniu aplikacji użytkownik nie jest uwierzytelniany. Po wywołaniu/zalogowaniu się (login-view) otrzymasz formularz logowania. Chcę, aby po zalogowaniu się w aplikacji element custom-application przechował informacje użytkownika załadowane przez zagnieżdżony widok login-view i zaktualizował nawigację boczną.

Czy można to zrobić?

Odpowiedz

9

Po prostu utwórz plik biblioteki i utwórz pola dla globali, których tam potrzebujesz. Zaimportuj tę bibliotekę wszędzie tam, gdzie potrzebujesz dostępu do tych pól.

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; 

Możesz także
- utworzyć singleton w bibliotece globals (zobacz How do you build a Singleton in Dart? po więcej szczegółów).
- użyj obserwowalnego, aby otrzymywać powiadomienia o zmianach (więcej informacji na ten temat można uzyskać pod adresem Implement an Observer pattern in Dart, How can i trigger a kind of onChange event in a class)

+0

Działa dobrze. Dziękuję za to i za wszystkie linki. Sprawdzę. – T00rk

+0

Przepraszam, literówka. Przestrzeń powinna być kropką. –

+1

W końcu udało mi się uzyskać zmienną globalną jako obserwowalną przy użyciu obserwowalnego wzorca. Pracuje bardzo dobrze. Dziękuję ponownie. – T00rk