Hola usuario de nuestra página, hallamos la respuesta a tu interrogante, continúa leyendo y la verás aquí.
Solución:
Puede navegar a la Login
página si los detalles del usuario se guardan en el almacenamiento de lo contrario a la Home
página con el siguiente código
Future main() async
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
var email = prefs.getString('email');
print(email);
runApp(MaterialApp(home: email == null ? Login() : Home()));
Guarde los detalles de usuario requeridos después del inicio de sesión exitoso
class Login extends StatelessWidget
@override
Widget build(BuildContext context)
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () async
//after the login REST api call && response code ==200
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.setString('email', '[email protected]');
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (BuildContext ctx) => Home()));
,
child: Text('Login'),
),
),
);
borrar los detalles al cerrar la sesión
class Home extends StatelessWidget
@override
Widget build(BuildContext context)
return Scaffold(
appBar: AppBar(
title: Text('Home'),
),
body: Center(
child: RaisedButton(
onPressed: () async
SharedPreferences prefs = await SharedPreferences.getInstance();
prefs.remove('email');
Navigator.pushReplacement(context,
MaterialPageRoute(builder: (BuildContext ctx) => Login()));
,
child: Text('Logout'),
),
),
);
¡Espero eso ayude!
Asegurarse WidgetFlutterBinding.ensureInitialized()
es la primera línea de main()
import 'package:shared_preferences/shared_preferences.dart';
import 'package:flutter/material.dart';
Future main() async
WidgetsFlutterBinding.ensureInitialized();
SharedPreferences prefs = await SharedPreferences.getInstance();
bool login = prefs.getBool("login");
print("login:" + login.toString());
runApp(MaterialApp(home: login == null ? LoginPage(title: 'My App') : HomePage()));
class LoginPage extends StatelessWidget { ...
Las respuestas anteriores usando SharedPreferences
funciona (asegúrese de tener WidgetsFlutterBinding.ensureInitiazed();
como su primera línea principal), pero le dará una null al reiniciar, es decir, si elimina la aplicación de reciente y la vuelve a abrir, no lo redirigirá a la página de inicio o de perfil. Resolví este problema otorgando permiso de escritura de almacenamiento externo a su aplicación porque las preferencias compartidas necesitan escribir los datos en algún lugar de su dispositivo o emulador.
Simplemente agregue los permisos de almacenamiento externo de escritura y lectura en su archivo de manifiesto de Android y puede usar el complemento allow_handler para flutter de pub.dev para obtener los permisos requeridos del usuario en tiempo de ejecución cuando la aplicación se abre por primera vez y luego Preferencias compartidas no no te doy null
.
Puntuaciones y comentarios
Nos puedes añadir valor a nuestra información cooperando tu veteranía en las observaciones.