在CentOS上使用Flutter进行数据库操作,通常会选择SQLite作为本地数据库。以下是实现步骤:
安装Flutter: 如果你还没有安装Flutter,请先按照官方文档的指引进行安装。
创建Flutter项目: 打开终端,运行以下命令来创建一个新的Flutter项目:
flutter create my_flutter_app
然后进入项目目录:
cd my_flutter_app
添加依赖:
在pubspec.yaml文件中添加sqflite和path_provider依赖:
dependencies:
flutter:
sdk: flutter
sqflite: ^2.0.0+4
path_provider: ^2.0.2
然后运行flutter pub get来安装这些依赖。
导入库: 在你的Dart文件中导入所需的库:
import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
打开数据库: 创建一个方法来打开数据库:
Future<Database> openDatabase() async {
// 获取应用的文档目录
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, 'my_database.db');
return await openDatabase(path,
version: 1, onCreate: _onCreate);
}
创建表:
在数据库第一次创建时调用_onCreate方法来创建表:
Future _onCreate(Database db, int version) async {
await db.execute('''
CREATE TABLE my_table(
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
age INTEGER NOT NULL
)
''');
}
插入数据: 创建一个方法来插入数据:
Future<int> insertData(Map<String, dynamic> row) async {
Database db = await openDatabase();
return await db.insert('my_table', row);
}
查询数据: 创建一个方法来查询数据:
Future<List<Map<String, dynamic>>> queryData() async {
Database db = await openDatabase();
return await db.query('my_table');
}
更新数据: 创建一个方法来更新数据:
Future<int> updateData(Map<String, dynamic> row) async {
Database db = await openDatabase();
return await db.update('my_table', row,
where: 'id = ?', whereArgs: [row['id']]);
}
删除数据: 创建一个方法来删除数据:
Future<int> deleteData(int id) async {
Database db = await openDatabase();
return await db.delete('my_table', where: 'id = ?', whereArgs: [id]);
}
使用数据库: 在你的Flutter应用中使用这些方法来进行数据库操作。
以下是一个简单的示例,展示如何在Flutter应用中使用这些方法:
import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
import 'package:path_provider/path_provider.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('Flutter Database Example'),
),
body: MyHomePage(),
),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
List<Map<String, dynamic>> _data = [];
@override
void initState() {
super.initState();
_loadData();
}
Future<void> _loadData() async {
List<Map<String, dynamic>> data = await queryData();
setState(() {
_data = data;
});
}
Future<void> _insertData() async {
await insertData({'name': 'John', 'age': 30});
_loadData();
}
@override
Widget build(BuildContext context) {
return Column(
children: <Widget>[
Expanded(
child: ListView.builder(
itemCount: _data.length,
itemBuilder: (context, index) {
Map<String, dynamic> row = _data[index];
return ListTile(
title: Text(row['name']),
subtitle: Text('${row['age']}'),
trailing: IconButton(
icon: Icon(Icons.edit),
onPressed: () => _updateData(row['id']),
),
onTap: () => _selectRow(row['id']),
);
},
),
),
FloatingActionButton(
onPressed: _insertData,
tooltip: 'Add Data',
child: Icon(Icons.add),
),
],
);
}
Future<void> _selectRow(int id) async {
// Implement row selection logic if needed
}
Future<void> _updateData(int id) async {
await updateData({'name': 'Jane', 'age': 25}, where: 'id = ?', whereArgs: [id]);
_loadData();
}
}
这个示例展示了如何在Flutter应用中使用SQLite数据库进行基本的CRUD操作。你可以根据需要扩展和修改这些方法。