提问人:Hikmet Melik 提问时间:10/27/2023 最后编辑:Hikmet Melik 更新时间:10/27/2023 访问量:29
未处理的异常:类型“Null”不是 SQ Lite 上类型“String”的子类型
Unhandled Exception: type 'Null' is not a subtype of type 'String' on SQ Lite
问:
我正在使用sqlite数据库并尝试从sqlite文件中获取数据。我复制了我的数据库,没有错误。但是当我尝试获取数据以在我的应用程序上显示时,数据为空。我正在调试我的代码并试图了解问题出在哪里,但我不明白。那么你们能帮我吗?
class StudentsModel {
final int studentId;
final String studentName;
final String studentEmail;
StudentsModel({required this.studentId, required this.studentName, required this.studentEmail});
}
这是我的模型页面和
Future<List<StudentsModel>?> getAllStudents() async {
var db = await DatabaseCopy.databaseAccess();
List<Map<String, dynamic>> listOfStudents = await db.rawQuery("SELECT * FROM students");
return List.generate(listOfStudents.length, (index) {
var row = listOfStudents[index];
return StudentsModel(
studentId: row["student_id"],
studentName: row["student_name"],
studentEmail: row["student_email"],
);
});
}
我的存储库页面。此处是控制台错误消息。谢谢!
伙计们新更新。当我尝试从数据库中搜索学生时,它可以工作,但问题是将所有学生显示到主页。我正在添加新的东西来理解问题。
@override
void initState() {
super.initState();
context.read<HomepageCubit>().loadAllStudents();
}
这是尝试在主页上显示所有学生的一部分
body: BlocBuilder<HomepageCubit, List<StudentsModel>>(
builder: (context, studentsList) {
if (studentsList.isNotEmpty) {
return ListView.builder(
itemCount: studentsList.length,
itemBuilder: (context, index) {
var student = studentsList[index];
return ListTile(
onTap: () {
Navigator.push(
context,
MaterialPageRoute(
builder: (context) => StudentDetailPage(
studentsModel: student,
),
),
最后一部分是主页肘
class HomepageCubit extends Cubit<List<StudentsModel>> {
HomepageCubit() : super(<StudentsModel>[]);
final sRepo = StudentsRepository();
Future<void> loadAllStudents() async {
final allStudentsList = await sRepo.getAllStudents();
emit(allStudentsList!);
}
答:
0赞
Hikmet Melik
10/27/2023
#1
我解决了我自己的问题。你们使用DB浏览器时要小心。所以主要问题太荒谬了。当我创建一个新数据库时,我单击了“查看数据”,不小心创建了一个新的空行。所以我无法在屏幕上显示空白数据,因为第一行的数据是空的,但我能够搜索。
评论