在此应用程序中,用户将能够添加任务并将其显示在PageView.builder
中。用户也可以通过向左或向右滑动来滚动PageView.builder
。该浏览量映射到日期(例如:当前页面映射到今天的日期,下一页映射到明天的日期,等等)。我还想实现一个跳转功能,该功能允许用户通过在showDatepicker
小部件上指定日期来移动到新页面。
PageView.builder
是通过使用此项目实现的。该项目还具有跳转到页面的功能:https://github.com/ZedTheLed/calendar_views
showDatepicker
是通过以下方法实现的。通过点击Raisedbutton
来调用它:
_selectDate() async {
final DateTime picker =await showDatePicker(
context: context,
initialDate: DateTime.now(),
firstDate: DateTime(2010),
lastDate: DateTime(2040)
);
if (picker != null) {
print(picker);
return _daysPageController.jumpToDay(picker); // this method jumps the user to a selected date
// Navigator.pop(context);
// print(selectedDate);
// await runJump(selectedDate);
// return selectedDate;
}
}
当用户单击日期时,变量DateTime picker
在print语句中成功返回用户选择的日期。但是当我将此值传递给jumptopage方法时,它给出了他的错误:The method 'jumpToDay' was called on null.
PageView.builder
在以下代码中实现:
final List<DateTime> days;
Scaffold(
floatingActionButton: new RaisedButton(
child: new Text("Jump To Today"),
onPressed: () {
_selectDate();
},
),
body: new Column(
children: widget.days.map(((day) => Container(
constraints: new BoxConstraints(
maxHeight: MediaQuery.of(context).size.height * 1.00,
maxWidth: MediaQuery.of(context).size.width * 1.00
),
child: Starting_screen(_makeTextString(day)), //this screen displays the tasks added by the user
)
),
).toList()
),
);
方法_makeTextString
只是修改了DateTime
值并以理想的格式返回。
请问如何处理此错误?
完整的项目在这里可用:https://bitbucket.org/NotAnurag/todolist_restarted/src/master/
答案 0 :(得分:0)
当用户单击日期时,变量
DateTime
选择器将在打印语句中成功返回用户选择的日期。但是,当我将此值传递给jumptopage
方法时,它给出了他的错误:“方法jumpToDay
被调用为空”
我在代码中看到的问题是_daysPageController
未初始化。 IDE会帮助您建议可以在DaysPageController
上调用的各种方法,但是事实是声明了它,但是没有为其赋值(意味着它是null
):
DaysPageController _daysPageController; // remains null unless assigned a value
因此,错误试图说明的是在jumpToDay(DateTime)
上调用了null
(显然没有这种方法)。如果您查看堆栈跟踪信息,那么其中会包含一些更明确的提示:
[ERROR:flutter / lib / ui / ui_dart_state.cc(148)]未处理的异常:NoSuchMethodError:方法'jumpToDay'在null上调用。
尝试初始化控制器,看看它是否有助于解决问题。