Saltar al contenido

¿Cómo usar las preferencias compartidas para mantener al usuario registrado en flutter?

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *