方法()在null上被调用。 [扑]

时间:2019-10-10 10:53:34

标签: datetime flutter

在此应用程序中,用户将能够添加任务,而我想提供一个选项来选择用户要保存任务的日期(以后的日期;从现在开始的一周,几天)等)。任务显示在pageView.builder中,该initial page: DateTime.now()根据日期显示每个页面(例如:showDatePicker)。设置日期后,用户应该能够跳至他们在showDatePicker中选择的特定日期,并且还可以在所选页面中显示添加的任务(也将根据{ {1}})。控制器_daysPageController.jumpToDay是允许用户跳至所需页面的控制器。

在此行中,以DateTime格式返回用户选择的日期:

DateTime selecteddate = DateTime.now();
  Future<Null> _selectDate() async {
    final DateTime picked = await showDatePicker(
        context: context,
        initialDate: selecteddate,
        firstDate: DateTime(2015, 8),
        lastDate: DateTime(2101));
    if (picked != null && picked != selecteddate)
      setState(() {
        selecteddate = picked;
      });
    _daysPageController.jumpToDay(selecteddate);
  }

DateTime selecteddate成功返回了用户选择的日期,但是当我在_daysPageController中传递它时,我得到了错误; The method 'jumpToDay' was called on null.

我可以对如何通过selecteddate提出建议,以便_daysPageController.jumpToDay()仅在设置了selectddate之后执行吗?

我已经使用此存储库实现了pageView.builderhttps://github.com/ZedTheLed/calendar_views

其中还包含PageController,用于跳转到特定页面。

1 个答案:

答案 0 :(得分:1)

您可以从DateTime对象获取日期

  DateTime selecteddate = DateTime.now();
  Future<void> _selectDate() async {
    final DateTime picked = await showDatePicker(
        context: context,
        initialDate: selecteddate,
        firstDate: DateTime(2015, 8),
        lastDate: DateTime(2101));
    if (picked != null && picked != selecteddate){
      setState(() {
        selecteddate = picked;
      });
      if(_daysPageController != null){
        _daysPageController.jumpToDay(selecteddate);
      }
    }
  }