Flutter Shared Preferences Util :
Screenshot :

main.dart
import 'package:flutter/material.dart'; import 'SpUtil.dart'; void main() async { await SpUtil.getInstance(); runApp(MyApp()); } class MyApp extends StatefulWidget { @override State<StatefulWidget> createState() { return MyAppState(); } } class MyAppState extends State<MyApp> { @override void initState() { super.initState(); SpUtil.putString("username", "Flutter Tutorial"); List<String> list = new List(); list.add("Flutter"); list.add("Android"); SpUtil.putStringList("subject", list); List<String> dataList = SpUtil.getStringList("subject", defValue: list); print('Tag' + dataList.length.toString()); } @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: Text('Flutter Tutorial SharedPreferences'), ), body: Container(child: Text(SpUtil.getString("username"))), )); } }
SpUtil.dart
import 'dart:async'; import 'dart:convert'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:synchronized/synchronized.dart'; // SharedPreferences class SpUtil { static SpUtil _singleton; static SharedPreferences _prefs; static Lock _lock = Lock(); static Future<SpUtil> getInstance() async { if (_singleton == null) { await _lock.synchronized(() async { if (_singleton == null) { // keep local instance till it is fully initialized. var singleton = SpUtil._(); await singleton._init(); _singleton = singleton; } }); } return _singleton; } SpUtil._(); Future _init() async { _prefs = await SharedPreferences.getInstance(); } // put object static Future<bool> putObject(String key, Object value) { if (_prefs == null) return null; return _prefs.setString(key, value == null ? "" : json.encode(value)); } // get obj static T getObj<T>(String key, T f(Map v), {T defValue}) { Map map = getObject(key); return map == null ? defValue : f(map); } // get object static Map getObject(String key) { if (_prefs == null) return null; String _data = _prefs.getString(key); return (_data == null || _data.isEmpty) ? null : json.decode(_data); } // put object list static Future<bool> putObjectList(String key, List<Object> list) { if (_prefs == null) return null; List<String> _dataList = list?.map((value) { return json.encode(value); })?.toList(); return _prefs.setStringList(key, _dataList); } // get obj list static List<T> getObjList<T>(String key, T f(Map v), {List<T> defValue = const []}) { List<Map> dataList = getObjectList(key); List<T> list = dataList?.map((value) { return f(value); })?.toList(); return list ?? defValue; } // get object list static List<Map> getObjectList(String key) { if (_prefs == null) return null; List<String> dataLis = _prefs.getStringList(key); return dataLis?.map((value) { Map _dataMap = json.decode(value); return _dataMap; })?.toList(); } // get string static String getString(String key, {String defValue = ''}) { if (_prefs == null) return defValue; return _prefs.getString(key) ?? defValue; } // put string static Future<bool> putString(String key, String value) { if (_prefs == null) return null; return _prefs.setString(key, value); } // get bool static bool getBool(String key, {bool defValue = false}) { if (_prefs == null) return defValue; return _prefs.getBool(key) ?? defValue; } // put bool static Future<bool> putBool(String key, bool value) { if (_prefs == null) return null; return _prefs.setBool(key, value); } // get int static int getInt(String key, {int defValue = 0}) { if (_prefs == null) return defValue; return _prefs.getInt(key) ?? defValue; } // put int. static Future<bool> putInt(String key, int value) { if (_prefs == null) return null; return _prefs.setInt(key, value); } // get double static double getDouble(String key, {double defValue = 0.0}) { if (_prefs == null) return defValue; return _prefs.getDouble(key) ?? defValue; } // put double static Future<bool> putDouble(String key, double value) { if (_prefs == null) return null; return _prefs.setDouble(key, value); } // get string list static List<String> getStringList(String key, {List<String> defValue = const []}) { if (_prefs == null) return defValue; return _prefs.getStringList(key) ?? defValue; } // put string list static Future<bool> putStringList(String key, List<String> value) { if (_prefs == null) return null; return _prefs.setStringList(key, value); } // get dynamic static dynamic getDynamic(String key, {Object defValue}) { if (_prefs == null) return defValue; return _prefs.get(key) ?? defValue; } // have key static bool haveKey(String key) { if (_prefs == null) return null; return _prefs.getKeys().contains(key); } // get keys static Set<String> getKeys() { if (_prefs == null) return null; return _prefs.getKeys(); } // remove static Future<bool> remove(String key) { if (_prefs == null) return null; return _prefs.remove(key); } // clear static Future<bool> clear() { if (_prefs == null) return null; return _prefs.clear(); } //Sp is initialized static bool isInitialized() { return _prefs != null; } }
pubspec.yaml
name: fluttertutorial description: A new Flutter application. version: 1.0.0+1 environment: sdk: ">=2.1.0 <3.0.0" dependencies: flutter: sdk: flutter shared_preferences: synchronized: dev_dependencies: flutter_test: sdk: flutter flutter: uses-material-design: true
The flutter tutorial is a website that bring you the latest and amazing resources of code. All the languages codes are included in this website. The languages like flutter, android, java,kotlin etc.with the help of this languages any user can develop the beautiful application
For more information about Flutter. visit www.fluttertutorial.in