0

在此应用程序中,用户将能够添加任务并将其显示在PageView.builder. 用户还可以通过PageView.builder向左或向右滑动来滚动浏览。综合浏览量映射到日期(例如:当前页面映射到今天的日期,下一页映射到明天的日期等)。我还想实现一个跳转功能,让用户通过在showDatepicker小部件上指定日期来移动到新页面。

PageView.builder是通过使用这个项目来实现的。该项目还具有跳转到页面功能:https ://github.com/ZedTheLed/calendar_views

showDatepicker下面的方法中实现。通过单击 a 调用它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成功返回打印语句中用户选择的日期。但是当我将此值传递给 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/

4

1 回答 1

0

当用户点击某个日期时,变量DateTime选择器成功返回打印语句中用户选择的日期。但是当我将此值传递给该jumptopage方法时,它给出了他的错误:“该方法jumpToDay在 null 上被调用”

我在代码中看到的问题_daysPageController是没有初始化。IDE 有用地建议您可以调用的各种方法DaysPageController,但事实仍然是它已声明,但没有为其分配值(意味着它是null):

DaysPageController _daysPageController;  // remains null unless assigned a value

因此,错误试图说明的是jumpToDay(DateTime)被调用null(显然没有这样的方法)。如果您查看堆栈跟踪,则其中隐藏着更明确的提示:

[错误:flutter/lib/ui/ui_dart_state.cc(148)] 未处理的异常:NoSuchMethodError:方法 'jumpToDay' 在 null 上被调用。

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

于 2019-10-15T06:56:08.327 回答