Storing key-value data on disk:

If we have a relatively small collection of key-values that we’d like to save, we can use the shared_preferences plugin.

Normally we would have to write native platform integrations for storing data on both platforms. Fortunately, the shared_preferences plugin can be used to persist key-value data on disk. The shared preferences plugin wraps NSUserDefaults on iOS and SharedPreferences on Android, providing a persistent store for simple data.

Using Shared Preferences In Flutter App:

  • Add the dependency
  • Save Data
  • Read Data
  • Remove Data

Adding the dependency:

Add this to your package’s pubspec.yaml file:

dependencies:
shared_preferences: ^0.4.3

Save data:

To save data, we can use the setter methods provided by the SharedPreferences class. Setter methods are available for various st methods types / primitive types, such as setIntsetBool, and setString.

Setter methods do two things: First, it synchronously update the key-value pair in-memory. Then, save/persist the data to disk.

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

// set value
prefs.setInt('counter', counter);

Read data:

To read data from the disk, we can use the appropriate getter method provided by the SharedPreferences class. For each setter there is a corresponding getter. For example, we can use the getIntgetBool, and getString methods.

final prefs = await SharedPreferences.getInstance();

// Try reading data from the counter key. If it does not exist, return 0.
final counter = prefs.getInt('counter') ?? 0;

Remove data:

To delete data, we can use the remove method provided bySharedPreferences class.

final prefs = await SharedPreferences.getInstance();

prefs.remove('counter');

Supported types:

We know that  it is easy and convenient to use key-value storage, But it has limitations:

  • Only primitive types can be used: intdoubleboolstring and stringList
  • It’s not designed to store a lot of data.

 

Testing support:

It can be a good idea to test code that persists data using shared_preferences. To do so, we’ll need to mock out the MethodChannel used by the shared_preferences library.

const MethodChannel('plugins.flutter.io/shared_preferences')
.setMockMethodCallHandler((MethodCall methodCall) async {
if (methodCall.method == 'getAll') {
return {}; // set initial values here if desired
}
return null;
});

Below is the Complete example code :

 

import 'package:flutter/material.dart';
import 'package:shared_preferences/shared_preferences.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
// This widget is the root of our application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Shared preferences demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(title: 'Shared preferences demo'),
);
}
}

class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;

@override
_MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State {
int _counter = 0;

@override
void initState() {
super.initState();
_loadCounter();
}

//Loading counter value on start
_loadCounter() async {
SharedPreferences prefs = await SharedPreferences.getInstance();
setState(() {
_counter = (prefs.getInt('counter') ?? 0);
});
}

//Incrementing counter after click
_incrementCounter() async {
SharedPreferences 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: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'You have pushed the button this many times:',
),
Text(
'$_counter',
style: Theme.of(context).textTheme.display1,
),
],
),
),
floatingActionButton: FloatingActionButton(
onPressed: _incrementCounter,
tooltip: 'Increment',
child: Icon(Icons.add),
), // This trailing comma makes auto-formatting nicer for build methods.
);
}
}

 

Congratulations You Have Learned Using Sharedpreferences Key Value Paires In Flutter

If It Is Useful Share It With Your Friends….!!!

If  You Have Any Query Please make A Comment….!!!

Leave a Reply

Categories

Myles [CPS] IN
Shein WW