在Flutter中将sqflite数据库数据显示为表格:

huangapple go评论104阅读模式
英文:

Display sqflite database data as table in flutter

问题

  1. // 我创建了一个 sqflite 数据库,并创建了一个 `query()` 函数来在控制台中打印数据
  2. _query() async {
  3. final allRows = await dbHelper.queryAllRows();
  4. debugPrint('查询所有行:');
  5. for (final row in allRows) {
  6. debugPrint(row.toString());
  7. }
  8. }
  9. // 我需要以表格或表格视图的方式查看这些数据(可以通过列表方法或直接方法来实现)...
  10. // 数据的格式。
  11. Future _onCreate(Database db, int version) async {
  12. await db.execute('''
  13. CREATE TABLE $table (
  14. $columnId INTEGER PRIMARY KEY,
  15. $columnName TEXT NOT NULL,
  16. $columnBatch TEXT NOT NULL,)
  17. ''');
  18. }
英文:

I made a sqflite database and made query() function to print the data in console

  1. _query() async {
  2. final allRows = await dbHelper.queryAllRows();
  3. debugPrint('query all rows:');
  4. for (final row in allRows) {
  5. debugPrint(row.toString());
  6. }
  7. }

I need to view this data in a table or tableview (either through a list method or directly)...

format of data.

  1. Future _onCreate(Database db, int version) async {
  2. await db.execute('''
  3. CREATE TABLE $table (
  4. $columnId INTEGER PRIMARY KEY,
  5. $columnName TEXT NOT NULL,
  6. $columnBatch TEXT NOT NULL,)''');

答案1

得分: 1

class ModelClass {
int? id;
String? name;
String? batch;

ModelClass({this.id, this.name, this.batch});

ModelClass.fromJson(Map<String, dynamic> json) {
id = json['_id'];
name = json['name'];
batch = json['batch'];
}

Map<String, dynamic> toJson() {
final Map<String, dynamic> data = {};
data['_id'] = id;
data['name'] = name;
data['batch'] = batch;
return data;
}
}

Future<List> _query() async {
final allRows = await dbHelper.queryAllRows();
debugPrint('query all rows:');
final List modelClassList = [];
allRows.forEach((row) {
modelClassList.add(ModelClass.fromJson(row));
});
return modelClassList;
}

FutureBuilder(
future: _query(),
builder: (context, snapshot) {
if (snapshot.hasData) {
final List modelClassList =
snapshot.data as List;
return ListView.builder(
itemCount: modelClassList.length,
itemBuilder: (context, index) {
return ListTile(
title: Text(modelClassList[index].name ?? " "),
subtitle: Text(modelClassList[index].batch ?? " "),
leading: CircleAvatar(
child: Text(modelClassList[index].id.toString()),
),
);
},
);
} else {
return const Center(
child: CircularProgressIndicator(),
);
}
},
)

英文:

first create a model class like this

> Model Class:

  1. class ModelClass {
  2. int? id;
  3. String? name;
  4. String? batch;
  5. ModelClass({this.id, this.name, this.batch});
  6. ModelClass.fromJson(Map&lt;String, dynamic&gt; json) {
  7. id = json[&#39;_id&#39;];
  8. name = json[&#39;name&#39;];
  9. batch = json[&#39;batch&#39;];
  10. }
  11. Map&lt;String, dynamic&gt; toJson() {
  12. final Map&lt;String, dynamic&gt; data = {};
  13. data[&#39;_id&#39;] = id;
  14. data[&#39;name&#39;] = name;
  15. data[&#39;batch&#39;] = batch;
  16. return data;
  17. }
  18. }

now from the method when extracting data from the database and return the list of Model like this:

  1. Future&lt;List&lt;ModelClass&gt;&gt; _query() async {
  2. final allRows = await dbHelper.queryAllRows();
  3. debugPrint(&#39;query all rows:&#39;);
  4. final List&lt;ModelClass&gt; modelClassList = [];
  5. allRows.forEach((row) {
  6. modelClassList.add(ModelClass.fromJson(row));
  7. });
  8. return modelClassList;
  9. }

and in then create a FutureBuilder in which you can display all the data in the list like this:

  1. FutureBuilder(
  2. future: _query(),
  3. builder: (context, snapshot) {
  4. if (snapshot.hasData) {
  5. final List&lt;ModelClass&gt; modelClassList =
  6. snapshot.data as List&lt;ModelClass&gt;;
  7. return ListView.builder(
  8. itemCount: modelClassList.length,
  9. itemBuilder: (context, index) {
  10. return ListTile(
  11. title: Text(modelClassList[index].name ?? &quot; &quot;),
  12. subtitle: Text(modelClassList[index].batch ?? &quot; &quot;),
  13. leading: CircleAvatar(
  14. child: Text(modelClassList[index].id.toString()),
  15. ),
  16. );
  17. },
  18. );
  19. } else {
  20. return const Center(
  21. child: CircularProgressIndicator(),
  22. );
  23. }
  24. },
  25. ),

huangapple
  • 本文由 发表于 2023年3月7日 23:39:09
  • 转载请务必保留本文链接:https://go.coder-hub.com/75664077.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定