Flutter “如何修复”;空值上使用的空检查运算符";飘飘然?

Flutter “如何修复”;空值上使用的空检查运算符";飘飘然?,flutter,dart,flutter-test,dart-null-safety,null-safety,Flutter,Dart,Flutter Test,Dart Null Safety,Null Safety,我正在制作一个待办事项列表应用程序。我编写了代码并使用了空安全性。我不知道怎么解决这个问题,有人能帮我吗 在设备上运行应用程序时显示错误 主飞镖 导入“包装:颤振/材料.省道”; 导入“package:todo_list/screens/todo_list_screen.dart”; void main(){ runApp(MyApp()); } 类MyApp扩展了无状态小部件{ @凌驾 小部件构建(构建上下文){ 返回材料PP( debugShowCheckedModeBanner:fal

我正在制作一个待办事项列表应用程序。我编写了代码并使用了空安全性。我不知道怎么解决这个问题,有人能帮我吗

在设备上运行应用程序时显示错误

主飞镖

导入“包装:颤振/材料.省道”;
导入“package:todo_list/screens/todo_list_screen.dart”;
void main(){
runApp(MyApp());
}
类MyApp扩展了无状态小部件{
@凌驾
小部件构建(构建上下文){
返回材料PP(
debugShowCheckedModeBanner:false,
标题:“待办事项列表”,
主题:主题数据(
主样本:颜色。红色,
),
主页:TodoListScreen(),
);
}
}
数据库\u helpers.dart

导入'dart:io';
导入“package:path_provider/path_provider.dart”;
导入“包:sqflite/sqflite.dart”;
导入“package:todo_list/models/task_model.dart”;
类数据库助手{
静态最终DatabaseHelper实例=DatabaseHelper.\u实例();
静态数据库;
DatabaseHelper._实例();
字符串tasksTable='task_table';
字符串colId='id';
字符串colTitle='title';
字符串colDate='date';
字符串colPriority='priority';
字符串colStatus='status';
//任务表
//id |头衔|日期|优先级|状态
未来获取数据库异步{
如果(_db==null){
_db=等待_initDb();
}
返回_db;
}
Future _initDb()异步{
Directory dir=wait getApplicationDocumentsDirectory();
字符串path=dir.path+'todo_list.db';
最终todoListDb=
等待openDatabase(路径,版本:1,onCreate:_createDb);
返回到数据库;
}
void _createDb(数据库数据库,int版本)异步{
等待db.execute(
'创建表$tasksTable($colId INTEGER主键自动递增,$colTitle TEXT,$colDate TEXT,$colPriority TEXT,$colStatus INTEGER');
}
Future getTaskMapList()异步{
数据库db=await(this.db作为FutureOr);
最终列表结果=等待db.query(tasksTable);
返回结果;
}
Future getTaskList()异步{
final List taskMapList=等待getTaskMapList();
最终列表任务列表=[];
taskMapList.forEach((taskMap){
taskList.add(Task.fromMap(taskMap));
});
taskList.sort((taskA,taskB)=>taskA.date!.compareTo(taskB.date!));
返回任务列表;
}
Future insertTask(任务任务)异步{
数据库db=await(this.db作为FutureOr);
final int result=await db.insert(tasksTable,task.toMap());
返回结果;
}
未来更新任务(任务)异步{
数据库db=await(this.db作为FutureOr);
最终int结果=等待db.update(
任务稳定,
task.toMap(),
其中:“$colId=”,
wherergs:[task.id],
);
返回结果;
}
未来删除任务(int?id)异步{
数据库db=await(this.db作为FutureOr);
最终int结果=等待db.delete(
任务稳定,
其中:“$colId=”,
wherergs:[id],
);
返回结果;
}
}
task_model.dart

类任务{
int?id;
字符串?标题;
日期时间?日期;
字符串?优先级;
国际地位;
任务({this.date,this.priority,this.status,this.title});
Task.withId({this.id,this.date,this.priority,this.status,this.title});
映射toMap(){
最终映射=映射();
//if(id=null){
//map['id']=id;
// }
map['id']=id;
地图['title']=标题;
映射['date']=date!.toIso8601String();
映射['priority']=优先级;
映射['status']=状态;
返回图;
}
工厂任务。从映射(映射){
返回任务.withId(
id:map['id'],
date:DateTime.parse(映射['date']),
优先级:映射['priority'],
状态:映射['status'],
标题:地图['title'],
);
}
}
添加任务屏幕。省道

导入“包装:颤振/材料.省道”;
导入“包:intl/intl.dart”;
导入“包:todo_列表/helpers/database_helpers.dart”;
导入“package:todo_list/models/task_model.dart”;
类AddTaskScreen扩展StatefulWidget{
最终功能?updateTaskList;
最终任务?任务;
AddTaskScreen({this.task,this.updateTaskList});
@凌驾
_AddTaskScreenState createState()=>\u AddTaskScreenState();
}
类_AddTaskScreenState扩展状态{
final _formKey=GlobalKey();
字符串?\u title='';
字符串?\u优先级=“”;
DateTime?_date=DateTime.now();
int?_状态=0;
TextEditingController _dateController=TextEditingController();
最终日期格式_dateFormatter=DateFormat('mmmdd,yyyy');
最终列表_优先级=[‘低’、‘中’、‘高’];
@凌驾
void initState(){
super.initState();
_title=widget.task!.title;
_日期=widget.task!.date;
_优先级=widget.task!。优先级;
_status=widget.task!。status;
_dateController.text=\u dateFormatter.format(\u date!);
}
@凌驾
无效处置(){
_dateController.dispose();
super.dispose();
}
_handleDatePicker()异步{
最终日期时间?日期=等待showDatePicker(
上下文:上下文,
初始日期:_日期!,
firstDate:DateTime.now(),
lastDate:DateTime(2100),
//currentDate:DateTime.now(),
);
如果(日期!=null&&date!=u日期){
设置状态(){
_日期=日期;
});
_dateController.text=\u dateFormatter.format(日期);
}
}
_删除(){
DatabaseHelper.instance.deleteTask(widget.task!.id);
widget.updateTaskList!();
Navigator.pop(上下文);
}
_提交(){
如果(_formKey.currentState!.validate()){
_formKey.currentState!.save();
任务=任务(
日期:\日期,标题:\标题,优先级:\优先级,状态:\状态);
如果(task.status==0)
DatabaseHelper.instance.insertTask(任务);
否则{
task.id=widget.task!.id;
task.status=widget.task!.status;
DatabaseHelper.instance.updateTask(任务);
}
widget.updateTaskList!();
Navigator.pop(上下文);
}
}
@凌驾
小部件构建(构建上下文){
返回
// if (!snapshot.hasData) {
//   return Center(
//     child: CircularProgressIndicator(),
//   );
// }