在Flutter中使用SQFLite从数据库开始加载app中的数据可以按照以下步骤进行:
pubspec.yaml
文件中添加以下依赖来实现:dependencies:
sqflite: ^2.0.0+4
然后运行flutter pub get
命令以获取依赖项。
app_data.db
),并设计数据库表结构。import 'package:sqflite/sqflite.dart';
import 'package:path/path.dart';
DatabaseHelper
:class DatabaseHelper {
static final DatabaseHelper _instance = DatabaseHelper.internal();
factory DatabaseHelper() => _instance;
static Database? _database;
Future<Database?> get database async {
if (_database != null) {
return _database;
}
_database = await initDatabase();
return _database;
}
DatabaseHelper.internal();
Future<Database> initDatabase() async {
String databasesPath = await getDatabasesPath();
String path = join(databasesPath, 'app_data.db');
return await openDatabase(
path,
version: 1,
onCreate: _onCreate,
);
}
void _onCreate(Database db, int version) async {
await db.execute('CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY, name TEXT)');
}
Future<List<Map<String, dynamic>>> getData() async {
Database? db = await database;
return db!.query('data');
}
}
在上述代码中,首先创建一个私有的_instance
和_database
变量,然后通过工厂方法创建一个单例的DatabaseHelper
实例。
initDatabase
方法用于初始化数据库,包括获取数据库文件路径和创建数据表。在_onCreate
回调中可以执行创建表的操作。
getData
方法用于从数据库中获取数据,通过查询data
表并返回结果。
DatabaseHelper
类来获取并展示数据:class MyApp extends StatelessWidget {
final dbHelper = DatabaseHelper();
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter SQFLite Demo',
home: Scaffold(
appBar: AppBar(
title: Text('Flutter SQFLite Demo'),
),
body: Center(
child: FutureBuilder<List<Map<String, dynamic>>>(
future: dbHelper.getData(),
builder: (BuildContext context, AsyncSnapshot<List<Map<String, dynamic>>> snapshot) {
if (snapshot.hasData) {
return ListView.builder(
itemCount: snapshot.data!.length,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text(snapshot.data![index]['name']),
);
},
);
} else {
return CircularProgressIndicator();
}
},
),
),
),
);
}
}
在上述代码中,FutureBuilder
用于异步获取数据,并根据获取的数据构建界面。
通过调用dbHelper.getData()
方法获取数据,并在builder
中根据快照数据来构建列表视图。
这样,在Flutter中使用SQFLite从数据库加载数据的过程就完成了。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云