Flutter sharedpreferences get data after app restart

Flutter sharedpreferences get data after app restart

To persist and retrieve data in a Flutter app using SharedPreferences, you need to follow these steps:

1. Add SharedPreferences Dependency

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.

2. Save Data to SharedPreferences

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');
}

3. Retrieve Data from SharedPreferences

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');
}

4. Example Usage

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');
}

Explanation

  1. Saving Data:

    • SharedPreferences.getInstance() gets the instance of SharedPreferences.
    • prefs.setString('my_key', 'my_value') saves a string value with a specific key.
  2. Retrieving Data:

    • prefs.getString('my_key') retrieves the string value associated with the key.
  3. 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.

Notes

  • Persistence: Data saved in SharedPreferences is persisted across app restarts.
  • Types Supported: SharedPreferences supports various data types like int, double, bool, String, and List<String>.
  • Error Handling: Always handle potential errors and null values when working with SharedPreferences.

By following these steps, you can successfully save and retrieve data using SharedPreferences in your Flutter application.

Examples

  1. 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'),
                ),
              ],
            ),
          ),
        );
      }
    }
    
  2. 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'),
                ),
              ],
            ),
          ),
        );
      }
    }
    
  3. 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);
                    });
                  },
                ),
              ],
            ),
          ),
        );
      }
    }
    
  4. 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'),
                ),
              ],
            ),
          ),
        );
      }
    }
    
  5. 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'),
                ),
              ],
            ),
          ),
        );
      }
    }
    
  6. 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'),
                ),
              ],
            ),
          ),
        );
      }
    }
    
  7. 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'),
                ),
              ],
            ),
          ),
        );
      }
    }
    
  8. 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'),
                ),
              ],
            ),
          ),
        );
      }
    }
    
  9. 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'),
                ),
              ],
            ),
          ),
        );
      }
    }
    
  10. 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'),
                ),
              ],
            ),
          ),
        );
      }
    }
    

More Tags

finance swift5 rm subprocess input-field super program-entry-point angular4-httpclient find-occurrences twos-complement

More Programming Questions

More Livestock Calculators

More Entertainment Anecdotes Calculators

More Cat Calculators

More Chemical reactions Calculators