在CentOS系统下使用Flutter连接数据库,通常会选择SQLite、MySQL、PostgreSQL等数据库。以下是使用SQLite数据库的一个基本步骤指南:
安装Flutter: 如果你还没有安装Flutter,请访问Flutter官网(https://flutter.dev/)下载并安装适用于Linux的Flutter SDK。
创建Flutter项目: 打开终端,运行以下命令来创建一个新的Flutter项目:
flutter create my_flutter_app
然后进入项目目录:
cd my_flutter_app
添加依赖:
在pubspec.yaml文件中添加SQLite的依赖:
dependencies:
flutter:
sdk: flutter
sqflite: ^2.0.0+4 # 请检查最新版本
path_provider: ^2.0.1 # 用于获取数据库路径
然后运行flutter pub get来安装依赖。
使用SQLite:
在你的Flutter应用中,你可以使用sqflite包来操作SQLite数据库。以下是一个简单的例子,展示了如何打开一个数据库,创建一个表,插入数据,查询数据,以及关闭数据库。
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(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Database? _database;
@override
void initState() {
super.initState();
initDatabase();
}
initDatabase() async {
// 获取应用的文档目录
Directory documentsDirectory = await getApplicationDocumentsDirectory();
String path = join(documentsDirectory.path, 'my_database.db');
// 打开数据库
_database = await openDatabase(path,
version: 1, onCreate: (Database db, int version) async {
// 创建表
await db.execute('''
CREATE TABLE my_table(
id INTEGER PRIMARY KEY,
name TEXT NOT NULL
)
''');
});
}
// 插入数据
Future<void> insertData(String name) async {
await _database!.insert('my_table', {'name': name});
}
// 查询数据
Future<List<Map<String, dynamic>>> queryData() async {
return await _database!.query('my_table');
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter SQLite Example'),
),
body: Center(
child: FutureBuilder<List<Map<String, dynamic>>>(
future: queryData(),
builder: (BuildContext context, AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.connectionState == ConnectionState.done && snapshot.hasData) {
List<Map<String, dynamic>> rows = snapshot.data!;
return ListView.builder(
itemCount: rows.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(rows[index]['name']),
);
},
);
} else {
return CircularProgressIndicator();
}
},
),
),
floatingActionButton: FloatingActionButton(
onPressed: () {
insertData('New Item');
},
tooltip: 'Add Item',
child: Icon(Icons.add),
),
);
}
}
运行应用: 在终端中运行以下命令来启动你的Flutter应用:
flutter run
以上步骤展示了如何在CentOS系统下使用Flutter连接SQLite数据库。如果你想使用其他类型的数据库,如MySQL或PostgreSQL,你需要添加相应的依赖包,并根据数据库类型调整连接和操作数据库的代码。对于远程数据库,还需要处理网络连接和安全性问题。