Flutter: implementación del cierre de sesión del usuario

En este artículo, podemos aprender cómo cerrar la sesión del usuario desde una aplicación de flutter. Este artículo es una continuación del artículo que explica cómo crear la IU de inicio de sesión de Google y su autenticación. Se recomienda verificar lo mismo antes de seguir adelante.

Ahora implementaremos la función Cerrar sesión para la aplicación flutter.

Implementación:

Siga los pasos a continuación para implementar la función de cierre de sesión en Flutter:

Paso 1: Simplemente abra su archivo homePage.dart .

Paso 2:  en Scaffold , llame al widget de botón de acción flotante, además de la propiedad presionada llamada función signOut .

Paso 3: En propiedad secundaria , tenemos que darle al Icono de cerrar sesión, un color de fondo es Verde.

Estamos listos para irnos. Ahora definamos la función signOut que necesitamos.

Paso 4: ahora, en primer lugar, haga que la instancia de firebaseAuth sea ‘auth ‘.

Paso 5: arriba de @override , simplemente defina la función. Esta función será asíncrona . Ahora, mediante el uso de auth, llame al método incorporado signOut() .

Paso 6: Después de eso, simplemente llamamos al navegador para presionar la pantalla de registro.

Ahora nuestro archivo homepage.dart actualizado: 

Dart

import 'package:firebase_auth/firebase_auth.dart';
import 'package:flutter/material.dart';
import 'package:googlesign/signup.dart';
  
class HomePage extends StatefulWidget {
  @override
  _HomePageState createState() => _HomePageState();
}
  
class _HomePageState extends State<HomePage> {
  final FirebaseAuth auth = FirebaseAuth.instance;
  //signout function 
  signOut() async {
    await auth.signOut();
    Navigator.pushReplacement(
        context, MaterialPageRoute(builder: (context) => SignInScreen()));
  }
  
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        centerTitle: true,
        backgroundColor: Colors.green,
        title: Text("GEEKS FOR GEEKS"),
      ),
        
      //  floating Action Button using for signout , 
  
      floatingActionButton: FloatingActionButton(
        onPressed: () {
          signOut();
        },
        child: Icon(Icons.logout_rounded),
        backgroundColor: Colors.green,
      ),
  
      body: Center(
        child: Text("Home page"),
      ),
    );
  }
}

Si pulsamos el botón, salimos de la aplicación y pasamos a la pantalla de inicio de sesión. Pero hay un problema si volvemos a abrir la aplicación sin cerrar sesión, no navegamos directamente a la página de inicio, tenemos que volver a iniciar sesión en la aplicación. Este es el gran problema. 

Ahora resolvamos esto, si creamos una variable bool «islogin» y la convertimos en verdadera cuando realmente iniciamos sesión , y la convertimos en falsa cuando cerramos la sesión de la aplicación. Ahora podemos verificar el valor de islogin durante la inicialización de la aplicación. Si islogin es verdadero , vamos a la pantalla de inicio, de lo contrario, a la pantalla de inicio de sesión . Podemos almacenar el valor en sharedPrerferences .

Hagámoslo ahora:

add  shared_preferences: ^2.0.6  in pubspec yaml file.

Paso 7: Cree un nuevo archivo shared.dart e importe la biblioteca de paquetes.

Paso 8:  Haga una clase «Compartir» y haga dos funciones para guardar datos y leer datos respectivamente.

Dart

import 'package:shared_preferences/shared_preferences.dart';
  
class Shared {
  static String loginSharedPreference = "LOGGEDINKEY";
  
  // save data
  
  static Future<bool> saveLoginSharedPreference(islogin) async {
    SharedPreferences prefs = await SharedPreferences.getInstance();
    return await prefs.setBool(loginSharedPreference, islogin);
  }
  
  //fetch data
  
  static Future getUserSharedPrefernces() async {
    SharedPreferences preferences = await SharedPreferences.getInstance();
    return preferences.getBool(loginSharedPreference);
  }
}

Ahora abra su archivo main.dart y realice los siguientes cambios.

Dart

import 'package:flutter/material.dart';
import 'package:googlesign/homepage.dart';
import 'package:googlesign/share.dart';
import 'package:googlesign/signup.dart';
import 'package:firebase_core/firebase_core.dart';
  
void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp(); // initializing the firebase app
  runApp(GoogleSignIn()); // calling runApp
}
  
// google signin stateful widget
class GoogleSignIn extends StatefulWidget {
  GoogleSignIn({Key? key}) : super(key: key);
  @override
  _GoogleSignInState createState() => _GoogleSignInState();
}
  
class _GoogleSignInState extends State<GoogleSignIn> {
  var islogin;
  
  checkUserLoginState() async {
    await Shared.getUserSharedPrefernces().then((value) {
      setState(() {
        islogin = value;
      });
    });
  }
  
  @override
  void initState() {
    checkUserLoginState();
    super.initState();
  }
  
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'GEEKS FOR GEEKS',
      debugShowCheckedModeBanner:
          false, // debug banner false that is show on corner
      theme: ThemeData(
        primarySwatch: Colors.cyan, // color to our app
      ),
      home: islogin != null
          ? islogin
              ? HomePage()
              : SignInScreen()
          : SignInScreen(),
    );
  }
}

Producción :  

Publicación traducida automáticamente

Artículo escrito por ms471841 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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