在CentOS系统中,Flutter应用程序可以使用多种数据存储方法。以下是一些常见的数据存储选项:
SharedPreferences:
flutter_shared_preferences
插件来实现。import 'package:flutter/material.dart';
import 'package:flutter_shared_preferences/flutter_shared_preferences.dart';
Future<void> saveData(String key, String value) async {
final prefs = await SharedPreferences.getInstance();
await prefs.setString(key, value);
}
Future<String?> loadData(String key) async {
final prefs = await SharedPreferences.getInstance();
return prefs.getString(key);
}
文件存储:
dart:io
库来读写文件。import 'dart:io';
import 'package:flutter/material.dart';
Future<void> writeFile(String filePath, String content) async {
final file = File(filePath);
await file.writeAsString(content);
}
Future<String?> readFile(String filePath) async {
final file = File(filePath);
if (await file.exists()) {
return await file.readAsString();
}
return null;
}
SQLite数据库:
sqflite
插件来操作SQLite数据库。import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
Future<Database> openDatabase() async {
String path = join(await getDatabasesPath(), 'my_database.db');
return await openDatabase(path,
version: 1, onCreate: (db, version) async {
await db.execute('''
CREATE TABLE my_table(
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
)
''');
});
}
Future<void> insertData(String name) async {
final db = await openDatabase();
await db.insert('my_table', {'name': name});
}
Future<List<Map<String, dynamic>>> queryData() async {
final db = await openDatabase();
return await db.query('my_table');
}
Hive:
import 'package:flutter/material.dart';
import 'package:hive/hive.dart';
Future<void> initHive() async {
Hive.init(flutterRootPath);
await Hive.openBox('myBox');
}
Future<void> saveData(String key, String value) async {
final box = Hive.box('myBox');
await box.put(key, value);
}
Future<String?> loadData(String key) async {
final box = Hive.box('myBox');
return box.get(key);
}
Realm:
import 'package:flutter/material.dart';
import 'package:realm/realm.dart';
void initRealm() {
Realm.init(flutterRootPath);
Realm.registerAdapter(MyModel());
}
class MyModel extends RealmObject {
@PrimaryKey
int id;
String name;
}
Future<void> saveData(int id, String name) async {
final realm = await Realm.open();
realm.write(() {
final myModel = realm.createObject<MyModel>(id: id, name: name);
});
}
Future<List<MyModel>> loadData() async {
final realm = await Realm.open();
return realm.where<MyModel>().findAll();
}
选择合适的数据存储方法取决于你的具体需求,例如数据的复杂性、读写频率和数据量等。