在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,你需要添加相應的依賴包,并根據數據庫類型調整連接和操作數據庫的代碼。對于遠程數據庫,還需要處理網絡連接和安全性問題。