主函数的数据库对象db传入Widget对象中
时间: 2023-11-28 13:06:18 浏览: 62
可以将数据库对象db传入Widget对象中,你可以使用以下步骤:
1. 在你的 Widget 中创建一个构造函数,接收一个数据库对象db作为参数。
2. 在 Widget 中存储数据库对象db。
3. 在 Widget 中使用数据库查询方法来获取数据。
以下是一个示例代码:
```dart
import 'package:flutter/material.dart';
import 'package:sqflite/sqflite.dart';
class MyWidget extends StatefulWidget {
final Database db;
MyWidget({@required this.db});
@override
_MyWidgetState createState() => _MyWidgetState();
}
class _MyWidgetState extends State<MyWidget> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('My Widget'),
),
body: Center(
child: FutureBuilder<List<Map<String, dynamic>>>(
future: widget.db.rawQuery('SELECT * FROM my_table'),
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 if (snapshot.hasError) {
return Text('Error: ${snapshot.error}');
} else {
return CircularProgressIndicator();
}
},
),
),
);
}
}
```
在这个示例代码中,我们创建了一个 MyWidget 类,并在构造函数中接收一个数据库对象db作为参数。在 build() 方法中,我们使用 widget.db 来访问传入的数据库对象,并使用 FutureBuilder 来获取数据库查询结果,并将结果显示在 ListView 中。
阅读全文