Sqlite 颤振-从数据库中获取记录并在ListView Builder中显示
我正在从事一个颤振项目,并使用Sqflite数据库。我已设法将数据保存在数据库中。现在,我试图根据表名从数据库中获取所有记录的列表,并在ListView.builder中显示它们 数据库\u helper.dart 雇员名单Sqlite 颤振-从数据库中获取记录并在ListView Builder中显示,sqlite,dart,flutter,Sqlite,Dart,Flutter,我正在从事一个颤振项目,并使用Sqflite数据库。我已设法将数据保存在数据库中。现在,我试图根据表名从数据库中获取所有记录的列表,并在ListView.builder中显示它们 数据库\u helper.dart 雇员名单 我哪里出错了?如何在列表中显示所有数据库表记录?您可以使用FutureBuilder获取并显示数据: class _EmployeesListScreenState extends State<EmployeesListScreen> {
我哪里出错了?如何在列表中显示所有数据库表记录?您可以使用FutureBuilder获取并显示数据:
class _EmployeesListScreenState extends State<EmployeesListScreen> {
var db = new DatabaseHelper(); // CALLS FUTURE
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('List Of Employees'),
),
body: FutureBuilder<List>(
future: db.getAllRecords("tabEmployee"),
initialData: List(),
builder: (context, snapshot) {
return snapshot.hasData
? ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (_, int position) {
final item = snapshot.data[position];
//get your item data here ...
return Card(
child: ListTile(
title: Text(
"Employee Name: " + snapshot.data[position].row[1]),
),
);
},
)
: Center(
child: CircularProgressIndicator(),
);
},
),
);
}
}
您可以使用FutureBuilder获取并显示您的数据:
class _EmployeesListScreenState extends State<EmployeesListScreen> {
var db = new DatabaseHelper(); // CALLS FUTURE
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('List Of Employees'),
),
body: FutureBuilder<List>(
future: db.getAllRecords("tabEmployee"),
initialData: List(),
builder: (context, snapshot) {
return snapshot.hasData
? ListView.builder(
itemCount: snapshot.data.length,
itemBuilder: (_, int position) {
final item = snapshot.data[position];
//get your item data here ...
return Card(
child: ListTile(
title: Text(
"Employee Name: " + snapshot.data[position].row[1]),
),
);
},
)
: Center(
child: CircularProgressIndicator(),
);
},
),
);
}
}
这可能不是正确的代码,因为我还没有测试过它,但列表视图生成器就是这样工作的,并尝试使用async await。清理代码相当多
import 'package:flutter/material.dart';
import 'package:flutter_with_db_single_helper/helpers/database_helper.dart'
class EmployeesListScreen extends StatefulWidget {
@override
_EmployeesListScreenState createState() => _EmployeesListScreenState();
}
class _EmployeesListScreenState extends State<EmployeesListScreen> {
List<String> _records;
@override
initState(){
super.initState();
}
Future<void> _getRecords() async {
var res = await db.getAllRecords("tabEmployee");
setState((){
_records = res;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('List Of Employees'),
),
body: _records==null ? Container():ListView.builder(
itemCount: _records.length,
itemBuilder: (_, int position) {
return Card(
child: ListTile(
title:
Text("Employee Name: ", _records[position]),
),
);
},
),
);
}
}
或者您可以使用未来的构建器,如另一个答案所示: 这可能不是正确的代码,因为我还没有测试过,但列表视图生成器就是这样工作的,并尝试使用async await。清理代码相当多
import 'package:flutter/material.dart';
import 'package:flutter_with_db_single_helper/helpers/database_helper.dart'
class EmployeesListScreen extends StatefulWidget {
@override
_EmployeesListScreenState createState() => _EmployeesListScreenState();
}
class _EmployeesListScreenState extends State<EmployeesListScreen> {
List<String> _records;
@override
initState(){
super.initState();
}
Future<void> _getRecords() async {
var res = await db.getAllRecords("tabEmployee");
setState((){
_records = res;
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('List Of Employees'),
),
body: _records==null ? Container():ListView.builder(
itemCount: _records.length,
itemBuilder: (_, int position) {
return Card(
child: ListTile(
title:
Text("Employee Name: ", _records[position]),
),
);
},
),
);
}
}
或者您可以使用未来的构建器,如另一个答案所示: 错误是什么?错误是什么?这是一个很好的方法。谢谢你的帮助。我用了FutureBuilder,这是一个很好的方法。谢谢你的帮助。虽然我使用了FutureBuilder。很好的答案,但是可以稍微简化:员工姓名:+item.row[1]很好的答案,但是可以稍微简化:员工姓名:+item.row[1]