To persist and retrieve data in a Flutter app using SharedPreferences
, you need to follow these steps:
First, add the shared_preferences
package to your pubspec.yaml
file:
dependencies: flutter: sdk: flutter shared_preferences: ^2.0.15 # Check for the latest version
Run flutter pub get
to install the package.
You can save data using the SharedPreferences
API. Here's an example of how to save a simple string:
import 'package:shared_preferences/shared_preferences.dart'; Future<void> saveData() async { final prefs = await SharedPreferences.getInstance(); await prefs.setString('my_key', 'my_value'); }
To retrieve data after the app restarts, you need to access it in the same way you saved it. Here's how to retrieve the saved data:
import 'package:shared_preferences/shared_preferences.dart'; Future<String?> getData() async { final prefs = await SharedPreferences.getInstance(); return prefs.getString('my_key'); }
Here's a complete example that demonstrates saving and retrieving data using SharedPreferences
:
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() { runApp(MyApp()); } class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomeScreen(), ); } } class HomeScreen extends StatefulWidget { @override _HomeScreenState createState() => _HomeScreenState(); } class _HomeScreenState extends State<HomeScreen> { String _storedValue = 'No value'; @override void initState() { super.initState(); _loadData(); } Future<void> _loadData() async { final value = await getData(); setState(() { _storedValue = value ?? 'No value'; }); } Future<void> _saveData() async { await saveData(); _loadData(); // Refresh the displayed value } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text('SharedPreferences Example'), ), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ Text('Stored Value: $_storedValue'), ElevatedButton( onPressed: _saveData, child: Text('Save Data'), ), ], ), ), ); } } // Save data function Future<void> saveData() async { final prefs = await SharedPreferences.getInstance(); await prefs.setString('my_key', 'my_value'); } // Retrieve data function Future<String?> getData() async { final prefs = await SharedPreferences.getInstance(); return prefs.getString('my_key'); }
Saving Data:
SharedPreferences.getInstance()
gets the instance of SharedPreferences
.prefs.setString('my_key', 'my_value')
saves a string value with a specific key.Retrieving Data:
prefs.getString('my_key')
retrieves the string value associated with the key.Updating UI:
_loadData()
is called in initState
to load data when the widget is initialized._saveData()
is called when the button is pressed to save and immediately reload the data.SharedPreferences
is persisted across app restarts.SharedPreferences
supports various data types like int
, double
, bool
, String
, and List<String>
.SharedPreferences
.By following these steps, you can successfully save and retrieve data using SharedPreferences
in your Flutter application.
How to retrieve data from SharedPreferences
in Flutter after app restart
Description: Use SharedPreferences
to store and retrieve data persistently across app restarts.
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { String _data = 'No Data'; @override void initState() { super.initState(); _loadData(); } Future<void> _loadData() async { final prefs = await SharedPreferences.getInstance(); setState(() { _data = prefs.getString('myKey') ?? 'No Data'; }); } Future<void> _saveData(String value) async { final prefs = await SharedPreferences.getInstance(); prefs.setString('myKey', value); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('SharedPreferences Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text(_data), ElevatedButton( onPressed: () { _saveData('Hello, World!'); _loadData(); }, child: Text('Save Data'), ), ], ), ), ); } }
How to check if data exists in SharedPreferences
after app restart
Description: Check for the existence of a key in SharedPreferences
before attempting to retrieve its value.
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { String _data = 'No Data'; @override void initState() { super.initState(); _loadData(); } Future<void> _loadData() async { final prefs = await SharedPreferences.getInstance(); if (prefs.containsKey('myKey')) { setState(() { _data = prefs.getString('myKey')!; }); } else { setState(() { _data = 'No Data'; }); } } Future<void> _saveData(String value) async { final prefs = await SharedPreferences.getInstance(); prefs.setString('myKey', value); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('SharedPreferences Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text(_data), ElevatedButton( onPressed: () { _saveData('Hello, Flutter!'); _loadData(); }, child: Text('Save Data'), ), ], ), ), ); } }
How to use SharedPreferences
to store and retrieve boolean values in Flutter
Description: Store and retrieve a boolean value using SharedPreferences
.
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { bool _isChecked = false; @override void initState() { super.initState(); _loadData(); } Future<void> _loadData() async { final prefs = await SharedPreferences.getInstance(); setState(() { _isChecked = prefs.getBool('checkbox') ?? false; }); } Future<void> _saveData(bool value) async { final prefs = await SharedPreferences.getInstance(); prefs.setBool('checkbox', value); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('SharedPreferences Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Checkbox( value: _isChecked, onChanged: (bool? value) { setState(() { _isChecked = value!; _saveData(_isChecked); }); }, ), ], ), ), ); } }
Retrieve list of strings from SharedPreferences
after app restart in Flutter
Description: Save and retrieve a list of strings using SharedPreferences
.
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { List<String> _data = []; @override void initState() { super.initState(); _loadData(); } Future<void> _loadData() async { final prefs = await SharedPreferences.getInstance(); setState(() { _data = prefs.getStringList('myList') ?? []; }); } Future<void> _saveData(List<String> list) async { final prefs = await SharedPreferences.getInstance(); prefs.setStringList('myList', list); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('SharedPreferences Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('Data: ${_data.join(', ')}'), ElevatedButton( onPressed: () { _saveData(['Item 1', 'Item 2', 'Item 3']); _loadData(); }, child: Text('Save List'), ), ], ), ), ); } }
How to retrieve an integer from SharedPreferences
after restarting the app in Flutter
Description: Save and retrieve an integer value using SharedPreferences
.
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { int _counter = 0; @override void initState() { super.initState(); _loadData(); } Future<void> _loadData() async { final prefs = await SharedPreferences.getInstance(); setState(() { _counter = prefs.getInt('counter') ?? 0; }); } Future<void> _saveData(int value) async { final prefs = await SharedPreferences.getInstance(); prefs.setInt('counter', value); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('SharedPreferences Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('Counter: $_counter'), ElevatedButton( onPressed: () { _saveData(_counter + 1); _loadData(); }, child: Text('Increment Counter'), ), ], ), ), ); } }
How to use SharedPreferences
to store and retrieve a double value in Flutter
Description: Store and retrieve a double value using SharedPreferences
.
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { double _value = 0.0; @override void initState() { super.initState(); _loadData(); } Future<void> _loadData() async { final prefs = await SharedPreferences.getInstance(); setState(() { _value = prefs.getDouble('myDouble') ?? 0.0; }); } Future<void> _saveData(double value) async { final prefs = await SharedPreferences.getInstance(); prefs.setDouble('myDouble', value); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('SharedPreferences Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text('Value: $_value'), ElevatedButton( onPressed: () { _saveData(_value + 1.0); _loadData(); }, child: Text('Increment Value'), ), ], ), ), ); } }
How to delete specific data from SharedPreferences
in Flutter
Description: Remove a specific key-value pair from SharedPreferences
.
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { String _data = 'No Data'; @override void initState() { super.initState(); _loadData(); } Future<void> _loadData() async { final prefs = await SharedPreferences.getInstance(); setState(() { _data = prefs.getString('myKey') ?? 'No Data'; }); } Future<void> _saveData(String value) async { final prefs = await SharedPreferences.getInstance(); prefs.setString('myKey', value); } Future<void> _removeData() async { final prefs = await SharedPreferences.getInstance(); prefs.remove('myKey'); setState(() { _data = 'No Data'; }); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('SharedPreferences Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text(_data), ElevatedButton( onPressed: () { _saveData('Some Data'); _loadData(); }, child: Text('Save Data'), ), ElevatedButton( onPressed: () { _removeData(); }, child: Text('Remove Data'), ), ], ), ), ); } }
How to clear all data from SharedPreferences
in Flutter
Description: Clear all key-value pairs from SharedPreferences
.
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('SharedPreferences Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ ElevatedButton( onPressed: () async { final prefs = await SharedPreferences.getInstance(); prefs.clear(); }, child: Text('Clear All Data'), ), ], ), ), ); } }
How to update existing data in SharedPreferences
in Flutter
Description: Update an existing value in SharedPreferences
by overwriting it.
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { String _data = 'No Data'; @override void initState() { super.initState(); _loadData(); } Future<void> _loadData() async { final prefs = await SharedPreferences.getInstance(); setState(() { _data = prefs.getString('myKey') ?? 'No Data'; }); } Future<void> _updateData(String value) async { final prefs = await SharedPreferences.getInstance(); prefs.setString('myKey', value); _loadData(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('SharedPreferences Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text(_data), ElevatedButton( onPressed: () { _updateData('Updated Data'); }, child: Text('Update Data'), ), ], ), ), ); } }
How to store and retrieve an object with SharedPreferences
in Flutter
Description: Serialize and deserialize an object to store it in SharedPreferences
.
import 'package:flutter/material.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'dart:convert'; void main() => runApp(MyApp()); class MyApp extends StatelessWidget { @override Widget build(BuildContext context) { return MaterialApp( home: HomePage(), ); } } class User { final String name; final int age; User(this.name, this.age); Map<String, dynamic> toJson() => { 'name': name, 'age': age, }; User.fromJson(Map<String, dynamic> json) : name = json['name'], age = json['age']; } class HomePage extends StatefulWidget { @override _HomePageState createState() => _HomePageState(); } class _HomePageState extends State<HomePage> { User? _user; @override void initState() { super.initState(); _loadData(); } Future<void> _loadData() async { final prefs = await SharedPreferences.getInstance(); final userJson = prefs.getString('user'); if (userJson != null) { setState(() { _user = User.fromJson(json.decode(userJson)); }); } } Future<void> _saveData(User user) async { final prefs = await SharedPreferences.getInstance(); prefs.setString('user', json.encode(user.toJson())); _loadData(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: Text('SharedPreferences Example')), body: Center( child: Column( mainAxisAlignment: MainAxisAlignment.center, children: <Widget>[ Text(_user != null ? 'User: ${_user!.name}, Age: ${_user!.age}' : 'No User Data'), ElevatedButton( onPressed: () { _saveData(User('Alice', 30)); }, child: Text('Save User Data'), ), ], ), ), ); } }
finance swift5 rm subprocess input-field super program-entry-point angular4-httpclient find-occurrences twos-complement