Lee y escribe datos en Flutter usando SharedPreferences

SharedPreferences es la mejor opción para almacenar una pequeña cantidad de datos en proyectos flutter. Preferencias compartidas es la forma en que uno puede almacenar y recuperar pequeñas cantidades de datos primitivos como pares clave/valor en un archivo en el almacenamiento del dispositivo, como strings, enteros, flotantes, booleanos que conforman sus preferencias en un archivo XML dentro de la aplicación. en el almacenamiento del dispositivo. Por ejemplo: almacenar el nombre de usuario y el estado de inicio de sesión en shared_preferences. En la aplicación de Android, considere un caso en el que el usuario inicie sesión o no, podemos almacenar el estado de inicio de sesión-cierre de sesión en shared_preferences, de modo que el usuario no necesite escribir una contraseña, una y otra vez, podemos guardar el estado de inicio de sesión en bool variable es una pequeña cantidad de datos, no hay necesidad de una base de datos, podemos almacenarla en shared_preferences para acceder a ella rápidamente.

Instalación

Para usar este complemento, agregue shared_preferences como una dependencia en su archivo pubspec.yaml .

add Plugin

 

Nota: Para instalar y configurar SharedPreferences en Flutter, puede consultar los siguientes artículos:

Ejemplos

Aquí hay algunos ejemplos para mostrar cómo usar shared_preferences.

escribir datos

// Obtain shared preferences.
final prefs = await SharedPreferences.getInstance();

// Save an integer value to 'num' key. 
await prefs.setInt('num', 10);

// Save an boolean value to 'flag' key. 
await prefs.setBool('flag', true);

// Save an double value to 'decnum' key. 
await prefs.setDouble('decnum', 1.5);

// Save an String value to 'name' key. 
await prefs.setString('name', 'Start');

// Save an list of strings to 'items' key. 
await prefs.setStringList('items', <String>['Earth', 'Moon', 'Sun']);

Leer datos

// Obtain shared preferences.
final prefs = await SharedPreferences.getInstance();

// get an integer value from 'num' key. 
await prefs.getInt('num');

// get an boolean value from 'flag' key. 
await prefs.getBool('flag');

// get an double value from 'decnum' key. 
await prefs.getDouble('decnum');

// get an String value from 'name' key. 
await prefs.getString('name');

// get an list of strings from 'items' key. 
await prefs.getStringList('items');

Borrar datos

// Remove data for the 'counter' key. 
final success = await prefs.remove('counter');

Proyecto de ejemplo

Cree un proyecto e importe el paquete de materiales.

Dart

import 'package:flutter/material.dart';

Ahora, en la función void main( ), llame al método runApp( ) y llame a la clase SharedHome( ).

Dart

void main(){
  runApp(SharedHome());
}

Ahora cree una nueva clase llamada SharedHome( ). Esta será una clase con estado porque nuestra aplicación cambia su estado en tiempo de ejecución. Y devuelve MaterialApp().

Dart

class SharedHome extends StatefulWidget {
  MyApp({Key? key}) : super(key: key);
 
  @override
  _SharedHomeState createState() => _SharedHomeState();
}
 
class _SharedHomeState extends State<SharedHome> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: "SharedPreferences",
      theme: ThemeData(primarySwatch: Colors.deepOrange),
      debugShowCheckedModeBanner: false,
      home: MyHomePage(),
    );
  }
}

Ahora tenemos que definir nuestra HomeScreen(). Antes de ir a crear la página de inicio, creemos otro archivo service.dart.

Dart

import 'package:shared_preferences/shared_preferences.dart';
 
class Helper {
  static String valueSharedPreferences = '';
 
// Write DATA
static Future<bool> saveUserData(value) async {
    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    return await sharedPreferences.setInt(valueSharedPreferences, value);
  }
   
// Read Data
static Future getUserData() async {
    SharedPreferences sharedPreferences = await SharedPreferences.getInstance();
    return sharedPreferences.getInt(valueSharedPreferences);
  }
}

En la clase Helper , tenemos un miembro de datos estáticos valueSharedPrefremnces, una función miembro saveUserData y getUserData . En la función saverUserData primero, obtenemos la instancia de shared_preferences. Luego, usando esta instancia, llamamos al método setInt(), que básicamente establece el valor entero en nuestro miembro estático. En la función getUserData() primero, obtenemos la instancia en shared_preferences. Luego devuelva el valor de valueSharedPrefremnces. Ahora cree la clase MyHomePage, donde podemos mostrar los datos reales.

Dart

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';
 
class MyHomePage extends StatefulWidget {
  const MyHomePage({Key? key}) : super(key: key);
  @override
  _MyHomePageState createState() => _MyHomePageState();
}
 
class _MyHomePageState extends State<MyHomePage> {
  int _counter = 0;
 
  @override
  void initState() {
    super.initState();
    _loadCounter();
  }
 
  // Loading counter value on start
  void _loadCounter() async {
    final prefs = await SharedPreferences.getInstance();
    setState(() {
      _counter = (prefs.getInt('counter') ?? 0);
    });
  }
 
  // Incrementing counter after click
  void _incrementCounter() async {
    final prefs = await SharedPreferences.getInstance();
    setState(() {
      _counter = (prefs.getInt('counter') ?? 0) + 1;
      prefs.setInt('counter', _counter);
    });
  }
 
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text("Shared Preferences")),
       
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text(
              'You have pushed the button this many times:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: 'Increment',
        child: const Icon(Icons.add),
      ), // This trailing comma makes
         // auto-formatting nicer for build methods.
    );
  }
}

Tenemos dos funciones loadCounter e incrementCounter. En loadCounter recuperamos los datos de SharedPreferences. En incrementCounter simplemente incrementamos el valor cuando presionamos el botón de acción flotante y lo pasamos como parámetro para guardar en SharedPreferences.

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 *