YouTip LogoYouTip

Flutter Storage

This section will introduce local storage solutions in Flutter, including SharedPreferences, file storage, and SQLite databases.\n\n* * *\n\n## SharedPreferences - Lightweight Storage\n\nSharedPreferences is suitable for storing simple key-value pair data.\n\n### Add Dependencies\n\ndependencies: shared_preferences: ^2.0.0\n\n## Example: Using SharedPreferences\n\nimport'package:shared_preferences/shared_preferences.dart';\n\n// Save data\n\n Future saveData() async {\n\nfinal prefs = await SharedPreferences.getInstance();\n\n// Save string\n\n await prefs.setString('username','Zhang San');\n\n// Save integer\n\n await prefs.setInt('age',25);\n\n// Save boolean\n\n await prefs.setBool('isLoggedIn',true);\n\n// Save list (JSON string)\n\n await prefs.setStringList('tags',['flutter','dart']);\n\n}\n\n// Read data\n\n Future loadData() async {\n\nfinal prefs = await SharedPreferences.getInstance();\n\nfinal username = prefs.getString('username')??'';\n\nfinal age = prefs.getInt('age')??0;\n\nfinal isLoggedIn = prefs.getBool('isLoggedIn')??false;\n\nfinal tags = prefs.getStringList('tags')??[];\n\nprint('Username: $username');\n\n print('Age: $age');\n\n print('Logged in: $isLoggedIn');\n\n print('Tags: $tags');\n\n}\n\n// Delete data\n\n Future deleteData() async {\n\nfinal prefs = await SharedPreferences.getInstance();\n\n// Delete single\n\n await prefs.remove('username');\n\n// Delete all\n\n await prefs.clear();\n\n}\n\n* * *\n\n## File Storage\n\nUse path_provider to get the application document directory for file storage.\n\n### Add Dependencies\n\ndependencies: path_provider: ^2.0.0\n\n## Example: File Read and Write\n\nimport'dart:io';\n\nimport'package:path_provider/path_provider.dart';\n\n// Get document directory\n\n Futureget _documentDirectory async {\n\nreturn await getApplicationDocumentsDirectory();\n\n}\n\n// Write to file\n\n Future writeFile() async {\n\nfinal dir = await _documentDirectory;\n\nfinal file = File('${dir.path}/my_file.txt');\n\n// Write text\n\n await file.writeAsString('Hello Flutter!');\n\n// Write bytes\n\nfinal bytes =[72,101,108,108,111];// "Hello"\n\n await file.writeAsBytes(bytes);\n\n}\n\n// Read file\n\n Future readFile() async {\n\nfinal dir = await _documentDirectory;\n\nfinal file = File('${dir.path}/my_file.txt');\n\nif(await file.exists()){\n\n// Read text\n\nfinal content = await file.readAsString();\n\n print('File content: $content');\n\n// Read bytes\n\nfinal bytes = await file.readAsBytes();\n\n print('Bytes: $bytes');\n\n}\n\n}\n\n// JSON file storage\n\n Future saveJson() async {\n\nfinal dir = await _documentDirectory;\n\nfinal file = File('${dir.path}/data.json');\n\nfinal data ={\n\n'name':'Zhang San',\n\n'age':25,\n\n'skills':['Flutter','Dart'],\n\n};\n\n// Use jsonEncode to save JSON\n\n await file.writeAsString(jsonEncode(data));\n\n}\n\n* * *\n\n## SQLite Database\n\nUse sqflite for SQLite database operations.\n\n### Add Dependencies\n\ndependencies: sqflite: ^2.0.0 path: ^1.8.0\n\n## Example: Basic SQLite Operations\n\nimport'package:sqflite/sqflite.dart';\n\nimport'package:path/path.dart';\n\n// Database helper class\n\nclass DatabaseHelper {\n\nstatic final DatabaseHelper instance = DatabaseHelper._init();\n\nstatic Database? _database;\n\nDatabaseHelper._init();\n\nFutureget database async {\n\nif(_database !=null)return _database!;\n\n _database = await _initDB('my_app.db');\n\nreturn _database!;\n\n}\n\n// Initialize database\n\n Future _initDB(String filePath) async {\n\nfinal dbPath = await getDatabasesPath();\n\nfinal path = join(dbPath, filePath);\n\nreturn await openDatabase(\n\n path,\n\n version:1,\n\n onCreate: _createDB,\n\n);\n\n}\n\n// Create table\n\n Future _createDB(Database db,int version) async {\n\n await db.execute('''\n\n CREATE TABLE users(\n\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n\n name TEXT NOT NULL,\n\n email TEXT NOT NULL,\n\n age INTEGER\n\n )\n\n ''');\n\n}\n\n// Insert data\n\n Future insertUser(Map user) async {\n\nfinal db = await database;\n\nreturn await db.insert('users', user);\n\n}\n\n// Query all users\n\n Future>> getAllUsers() async {\n\nfinal db = await database;\n\nreturn await db.query('users');\n\n}\n\n// Conditional query\n\n Future>> getUserByName(String name) async {\n\nfinal db = await database;\n\nreturn await db.query(\n\n'users',\n\n where:'name = ?',\n\n whereArgs:,\n\n);\n\n}\n\n// Update data\n\n Future updateUser(int id, Map user) async {\n\nfinal db = await database;\n\nreturn await db.update(\n\n'users',\n\n user,\n\n where:'id = ?',\n\n whereArgs:,\n\n);\n\n}\n\n// Delete data\n\n Future deleteUser(int id) async {\n\nfinal db = await database;\n\nreturn await db.delete(\n\n'users',\n\n where:'id = ?',\n\n whereArgs:,\n\n);\n\n}\n\n// Close database\n\n Future close() async {\n\nfinal db = await database;\n\n db.close();\n\n}\n\n}\n\n// Usage example\n\n Future dbExample() async {\n\nfinal db = DatabaseHelper.instance;\n\n// Add user\n\n await db.insertUser({\n\n'name':'Zhang San',\n\n'email':'zhangsan@example.com',\n\n'age':25,\n\n});\n\n// Query all\n\nfinal users = await db.getAllUsers();\n\n print('User list: $users');\n\n// Update user\n\n await db.updateUser(1,{'name':'Li Si','age':30});\n\n// Delete user\n\n await db.deleteUser(1);\n\n}\n\n> Data storage solution selection: Use SharedPreferences for simple key-value pairs, SQLite for complex structures, and file storage for large files.
← Flutter DevtoolsFlutter Theming β†’