Flutter本地数据库管理插件app_sqflite的使用
Flutter本地数据库管理插件app_sqflite的使用
app_sqflite
包含了简化 Flutter 应用开发的 sqflite
辅助工具。
支持
如果您喜欢我的工作并希望支持我,买杯咖啡对我来说将是极大的鼓励!感谢您的支持!
Mark Ivan Basto • GitHub @MarkIvanDev
完整示例
以下是一个完整的示例,展示了如何使用 app_sqflite
插件来管理本地数据库。
import 'package:app_sqflite/app_sqflite.dart';
void main() async {
// 打开数据库
final db = await getDatabaseFactory().openDatabase('test.db');
// 关闭数据库
await db.close();
}
详细步骤
-
引入依赖
在
pubspec.yaml
文件中添加app_sqflite
依赖:dependencies: flutter: sdk: flutter app_sqflite: ^x.x.x # 替换为最新版本号
-
初始化数据库
使用
getDatabaseFactory().openDatabase()
方法来打开数据库。在这个例子中,我们打开了一个名为test.db
的数据库文件。final db = await getDatabaseFactory().openDatabase('test.db');
-
关闭数据库
当应用退出或不再需要数据库时,确保调用
db.close()
来关闭数据库连接。await db.close();
更多关于Flutter本地数据库管理插件app_sqflite的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter本地数据库管理插件app_sqflite的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
sqflite
是 Flutter 中一个非常流行的 SQLite 数据库管理插件,它提供了简单易用的 API 来管理本地 SQLite 数据库。以下是如何在 Flutter 项目中使用 sqflite
插件的详细步骤。
1. 添加依赖
首先,在 pubspec.yaml
文件中添加 sqflite
和 path
依赖:
dependencies:
flutter:
sdk: flutter
sqflite: ^2.0.0+4
path: ^1.8.0
然后运行 flutter pub get
来安装依赖。
2. 创建数据库
接下来,创建一个数据库并定义表结构。通常,我们会在应用启动时初始化数据库。
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
class DatabaseHelper {
static final DatabaseHelper _instance = DatabaseHelper._internal();
static Database? _database;
factory DatabaseHelper() {
return _instance;
}
DatabaseHelper._internal();
Future<Database> get database async {
if (_database != null) return _database!;
_database = await _initDatabase();
return _database!;
}
Future<Database> _initDatabase() async {
String path = join(await getDatabasesPath(), 'app_database.db');
return await openDatabase(
path,
version: 1,
onCreate: _onCreate,
);
}
Future<void> _onCreate(Database db, int version) async {
await db.execute('''
CREATE TABLE users(
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT,
age INTEGER
)
''');
}
}
3. 插入数据
使用 insert
方法向数据库中插入数据。
Future<void> insertUser(Map<String, dynamic> user) async {
final db = await DatabaseHelper().database;
await db.insert(
'users',
user,
conflictAlgorithm: ConflictAlgorithm.replace,
);
}
4. 查询数据
使用 query
方法从数据库中查询数据。
Future<List<Map<String, dynamic>>> getUsers() async {
final db = await DatabaseHelper().database;
return await db.query('users');
}
5. 更新数据
使用 update
方法更新数据库中的数据。
Future<void> updateUser(Map<String, dynamic> user) async {
final db = await DatabaseHelper().database;
await db.update(
'users',
user,
where: 'id = ?',
whereArgs: [user['id']],
);
}
6. 删除数据
使用 delete
方法从数据库中删除数据。
Future<void> deleteUser(int id) async {
final db = await DatabaseHelper().database;
await db.delete(
'users',
where: 'id = ?',
whereArgs: [id],
);
}
7. 使用示例
以下是一个简单的示例,展示如何在 Flutter 应用中使用 sqflite
进行数据库操作。
import 'package:flutter/material.dart';
import 'database_helper.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
[@override](/user/override)
Widget build(BuildContext context) {
return MaterialApp(
home: HomeScreen(),
);
}
}
class HomeScreen extends StatefulWidget {
[@override](/user/override)
_HomeScreenState createState() => _HomeScreenState();
}
class _HomeScreenState extends State<HomeScreen> {
final DatabaseHelper _dbHelper = DatabaseHelper();
[@override](/user/override)
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Sqflite Example'),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
ElevatedButton(
onPressed: () async {
await _dbHelper.insertUser({'name': 'John', 'age': 30});
print('User inserted');
},
child: Text('Insert User'),
),
ElevatedButton(
onPressed: () async {
List<Map<String, dynamic>> users = await _dbHelper.getUsers();
print('Users: $users');
},
child: Text('Get Users'),
),
ElevatedButton(
onPressed: () async {
await _dbHelper.updateUser({'id': 1, 'name': 'John Doe', 'age': 31});
print('User updated');
},
child: Text('Update User'),
),
ElevatedButton(
onPressed: () async {
await _dbHelper.deleteUser(1);
print('User deleted');
},
child: Text('Delete User'),
),
],
),
),
);
}
}