Bonjour à tous,
J’ai un soucis dans le codage de mon application. J’utilise le navigateur 2.0 et tout fonctionnais dans mon application. Seulement maintenant j’essaye de faire l’intégration du stockage des données avec shared preferences. En effet je compte stocker le nom de l’utilisateur. Donc j’ai une page de login pour la première connexion puis une page principal.
Widget build(BuildContext context) {
final List<Page<dynamic>> pagesList = [];
String? userName = await UserData.getName();
if (userName == null) {
final loginPageScreen = LoginScreen(LoginViewModel(this));
pagesList.add(MaterialPage(child: loginPageScreen));
} else {
final homePageScreen =
HomeScreen((HomeViewModel(this, _todoManager, this, this)));
pagesList.add(MaterialPage(child: homePageScreen));
}
return Navigator(
key: navigatorKey,
pages: pagesList,
onPopPage: (route, result) {
if (route.didPop(result) == false) {
return false;
}
return onBackButtonTouched(result);
},
);
}
J’ai un soucis car je suis obligé d’attendre que le nom d’utilisateur soit chargé mais je n’ai pas le droit. Comment faire dans ce cas de figure?
(Toute l’application fonctionnait bien avant l’ajout de shared preferences, et je n’ai mis que la partie du widget build qui me semble importante)
class UserData {
static void setName(String newName) async {
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString("name", newName);
}
static Future<String?> getName() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
return prefs.getString("name");
}
}