方法“ jumpToDay”在null上被调用。 [扑]

时间:2019-10-15 06:18:34

标签: flutter

在此应用程序中,用户将能够添加任务并将其显示在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/

1 个答案:

答案 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上调用。

尝试初始化控制器,看看它是否有助于解决问题。