Flutter本地数据存储插件localfire的使用
Flutter本地数据存储插件localfire的使用
关于Localfire
Localfire 是一个用于在 Flutter 应用程序中进行本地数据存储的插件。它基于 SQLite 数据库,可以轻松地进行数据的增删改查操作。
安装 Localfire
首先,在 pubspec.yaml
文件中添加 Localfire 依赖:
dependencies:
localfire: ^1.0.0
然后运行 flutter pub get
来安装依赖。
初始化数据库
在使用 Localfire 插件之前,需要初始化数据库。创建一个新的 Dart 文件(例如 database.dart
),并在其中编写初始化代码:
import 'package:localfire/localfire.dart';
class DatabaseHelper {
static final DatabaseHelper _instance = DatabaseHelper._internal();
factory DatabaseHelper() => _instance;
DatabaseHelper._internal();
Database? _db;
Future<Database?> get db async {
if (_db != null) return _db;
_db = await initializeDatabase();
return _db;
}
Future<Database> initializeDatabase() async {
var databasesPath = await getDatabasesPath();
String path = "$databasesPath/locally.db";
var localfireDb = await openDatabase(path, version: 1, onCreate: _onCreate);
return localfireDb;
}
void _onCreate(Database db, int version) async {
await db.execute(
"CREATE TABLE users ("
"id INTEGER PRIMARY KEY,"
"name TEXT,"
"age INTEGER"
")"
);
}
}
插入数据
在你的 Flutter 应用程序中插入数据到 users
表中:
import 'package:flutter/material.dart';
import 'database.dart';
void main() => runApp(MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(title: Text("Localfire Example")),
body: Center(child: InsertDataButton()),
),
);
}
}
class InsertDataButton extends StatefulWidget {
@override
_InsertDataButtonState createState() => _InsertDataButtonState();
}
class _InsertDataButtonState extends State<InsertDataButton> {
DatabaseHelper dbHelper = DatabaseHelper();
void insertUser() async {
var dbClient = await dbHelper.db;
await dbClient!.insert(
'users',
{
'name': 'John Doe',
'age': 30,
},
conflictAlgorithm: ConflictAlgorithm.replace,
);
print('User inserted');
}
@override
Widget build(BuildContext context) {
return ElevatedButton(
onPressed: () async {
await insertUser();
},
child: Text('Insert User'),
);
}
}
查询数据
查询数据库中的数据,并在控制台打印结果:
Future<void> queryUsers() async {
var dbClient = await dbHelper.db;
List<Map<String, dynamic>> users = await dbClient!.query('users');
for (var user in users) {
print('User ID: ${user['id']}, Name: ${user['name']}, Age: ${user['age']}');
}
}
将 queryUsers
方法调用添加到按钮点击事件中:
ElevatedButton(
onPressed: () async {
await insertUser();
await queryUsers();
},
child: Text('Insert and Query User'),
),
更多关于Flutter本地数据存储插件localfire的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter本地数据存储插件localfire的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
localstore
是一个轻量级的 Flutter 插件,用于在本地存储简单的键值对数据。它基于 SharedPreferences
,但提供了更简单的 API,适合存储小型数据。
安装 localstore
插件
首先,你需要在 pubspec.yaml
文件中添加 localstore
依赖:
dependencies:
flutter:
sdk: flutter
localstore: ^0.5.0
然后运行 flutter pub get
来安装依赖。
使用 localstore
1. 导入包
import 'package:localstore/localstore.dart';
2. 初始化 Localstore
你可以通过 Localstore.instance
来获取 Localstore
的单例对象。
final db = Localstore.instance;
3. 存储数据
你可以使用 collection
方法来创建一个集合(类似于表),然后使用 doc
方法来创建一个文档(类似于行),并使用 set
方法存储数据。
void saveData() async {
final user = db.collection('users').doc('user1');
await user.set({
'name': 'John Doe',
'age': 30,
'email': 'john.doe@example.com',
});
}
4. 读取数据
你可以使用 get
方法来读取数据。
void readData() async {
final user = db.collection('users').doc('user1');
final data = await user.get();
print(data); // {name: John Doe, age: 30, email: john.doe@example.com}
}
5. 更新数据
你可以使用 set
方法来更新数据。它会覆盖原有的数据。
void updateData() async {
final user = db.collection('users').doc('user1');
await user.set({
'name': 'Jane Doe',
'age': 25,
'email': 'jane.doe@example.com',
});
}
6. 删除数据
你可以使用 delete
方法来删除数据。
void deleteData() async {
final user = db.collection('users').doc('user1');
await user.delete();
}
7. 获取所有文档
你可以使用 collection
方法来获取集合中的所有文档。
void getAllDocuments() async {
final users = db.collection('users');
final data = await users.get();
print(data); // {user1: {name: John Doe, age: 30, email: john.doe@example.com}}
}
完整示例
import 'package:flutter/material.dart';
import 'package:localstore/localstore.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Localstore Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
ElevatedButton(
onPressed: saveData,
child: Text('Save Data'),
),
ElevatedButton(
onPressed: readData,
child: Text('Read Data'),
),
ElevatedButton(
onPressed: updateData,
child: Text('Update Data'),
),
ElevatedButton(
onPressed: deleteData,
child: Text('Delete Data'),
),
ElevatedButton(
onPressed: getAllDocuments,
child: Text('Get All Documents'),
),
],
),
),
),
);
}
final db = Localstore.instance;
void saveData() async {
final user = db.collection('users').doc('user1');
await user.set({
'name': 'John Doe',
'age': 30,
'email': 'john.doe@example.com',
});
}
void readData() async {
final user = db.collection('users').doc('user1');
final data = await user.get();
print(data); // {name: John Doe, age: 30, email: john.doe@example.com}
}
void updateData() async {
final user = db.collection('users').doc('user1');
await user.set({
'name': 'Jane Doe',
'age': 25,
'email': 'jane.doe@example.com',
});
}
void deleteData() async {
final user = db.collection('users').doc('user1');
await user.delete();
}
void getAllDocuments() async {
final users = db.collection('users');
final data = await users.get();
print(data); // {user1: {name: John Doe, age: 30, email: john.doe@example.com}}
}
}