Логическое выражение не должно быть нулевым: ошибка DayView

#android #flutter #dart #flutter-web

#Android #флаттер #dart #флаттер-веб

Вопрос:

Всякий раз, когда я пытаюсь запустить свой веб-проект flutter, я сталкиваюсь со следующей ошибкой:

   Another exception was thrown: Failed assertion: boolean expression must not be null
 

Исключение, обнаруженное flutter, является:

      ══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY 
    ╞═══════════════════════════════════════════════════════════
    The following IndexError was thrown building DayView(dirty, state: 
    DayViewPage#76a2d):
    RangeError (index): Index out of range: index should be less than 12: 12

    The relevant error-causing widget was:
    DayView
    DayView:file:///C:/Users/verma/Desktop/mess-app- 
    iiitd/aaharweb/lib/src/screens/home_page.dart:845:29
 

Исключение было обнаружено в строке home_page.dart в контейнере. Код для контейнера, который я написал, выглядит следующим образом:

           Container(
                    decoration: BoxDecoration(
                      //        color: Colors.green.shade100,
                      borderRadius: BorderRadius.all(Radius.circular(30.0)),
                    ),
                    width: double.infinity,
                    child: Column(
                      children: [
                        Text(
                          'Coming up',
                          style: h5,
                        ),
                        DayView(
                          date: DateTime.now().day,
                        ),
                          DayView(
                             date:
                                DateTime.now().add(new Duration(days: 1)).day,
                           ),
                          DayView(
                            date:
                                DateTime.now().add(new Duration(days: 2)).day,
                          ),
                        ElevatedButton(
                          style: raisedButtonStyle,
                          onPressed: () {
                            createDialogBox(context);
                          },
                          child: Text('QR_CODE'),
                        )
                      ],
                    ),
                  )
 

Исключение было выдано во всех DayView.

Класс DayView:

   class DayView extends StatefulWidget {
  int date;

  DayView({this.date});

  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return DayViewPage(date: this.date);
    throw UnimplementedError();
  }
}

class DayViewPage extends State<DayView> {
  int date;
  DayViewPage({this.date});

  @override
  Widget build(BuildContext context) {
    // TODO: implement build
    MarkedDay mday;

    if (newMonth amp;amp; date < 4) {
      mday = nextmCalender[date];
    } else {
      mday = mCalender[date];
    }

    return Row(
      children: [
        Container(
          width: 30,
          child: Padding(
            padding: const EdgeInsets.all(5),
            child: Text(
              date.toString(),
              style: h7,
            ),
          ),
        ),
        Expanded(
          child: GestureDetector(
            onTap: () {
              if (newMonth amp;amp; date < 4) {
                if (nextmCalender[date].ebre) {
                  setState(() {
                    Loader.show(
                      context,
                      progressIndicator: CircularProgressIndicator(
                        backgroundColor: Colors.white,
                      ),
                    );
                    nextmCalender[date].bre = !nextmCalender[date].bre;
                    updateCalendar().then((value) {
                      nextoldCalender[date].bre = !nextoldCalender[date].bre;
                      Loader.hide();
                    });
                  });
                } else {
                  EasyLoading.showToast('Cannot be changed');
                }
              } else {
                if (mCalender[date].ebre) {
                  setState(() {
                    Loader.show(
                      context,
                      progressIndicator: CircularProgressIndicator(
                        backgroundColor: Colors.white,
                      ),
                    );
                    mCalender[date].bre = !mCalender[date].bre;
                    updateCalendar().then((value) {
                      oldCalender[date].bre = !oldCalender[date].bre;
                      Loader.hide();
                    });
                  });
                } else {
                  EasyLoading.showToast('Cannot be changed');
                }
              }
            },
            child: Card(
              color: mday.bre ? primaryColor : Colors.white,
              child: Padding(
                padding: const EdgeInsets.only(
                    left: 3.0, right: 3, top: 4, bottom: 4),
                child: Text(
                  'Breakfast',
                  style: TextStyle(
                      color: mday.bre ? Colors.white : Colors.black,
                      fontSize: 14),
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: GestureDetector(
            onTap: () {
              if (newMonth amp;amp; date < 4) {
                if (nextmCalender[date].elun) {
                  setState(() {
                    Loader.show(
                      context,
                      progressIndicator: CircularProgressIndicator(
                        backgroundColor: Colors.white,
                      ),
                    );
                    nextmCalender[date].lun = !nextmCalender[date].lun;
                    updateCalendar().then((value) {
                      nextoldCalender[date].lun = !nextoldCalender[date].lun;
                      Loader.hide();
                    });
                  });
                } else {
                  EasyLoading.showToast('Cannot be changed');
                }
              } else {
                if (mCalender[date].elun) {
                  setState(() {
                    Loader.show(
                      context,
                      progressIndicator: CircularProgressIndicator(
                        backgroundColor: Colors.white,
                      ),
                    );
                    mCalender[date].lun = !mCalender[date].lun;
                    updateCalendar().then((value) {
                      oldCalender[date].lun = !oldCalender[date].lun;
                      Loader.hide();
                    });
                  });
                } else {
                  EasyLoading.showToast('Cannot be changed');
                }
              }
            },
            child: Card(
              color: mday.lun ? primaryColor : Colors.white,
              child: Padding(
                padding: const EdgeInsets.only(
                    left: 3.0, right: 3, top: 4, bottom: 4),
                child: Text(
                  'Lunch',
                  style: TextStyle(
                      color: mday.lun ? Colors.white : Colors.black,
                      fontSize: 14),
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: GestureDetector(
            onTap: () {
              if (newMonth amp;amp; date < 4) {
                if (nextmCalender[date].esna) {
                  setState(() {
                    Loader.show(
                      context,
                      progressIndicator: CircularProgressIndicator(
                        backgroundColor: Colors.white,
                      ),
                    );
                    nextmCalender[date].sna = !nextmCalender[date].sna;
                    updateCalendar().then((value) {
                      nextoldCalender[date].sna = !nextoldCalender[date].sna;
                      Loader.hide();
                    });
                  });
                } else {
                  EasyLoading.showToast('Cannot be changed');
                }
              } else {
                if (mCalender[date].esna) {
                  setState(() {
                    Loader.show(
                      context,
                      progressIndicator: CircularProgressIndicator(
                        backgroundColor: Colors.white,
                      ),
                    );
                    mCalender[date].sna = !mCalender[date].sna;
                    updateCalendar().then((value) {
                      oldCalender[date].sna = !oldCalender[date].sna;
                      Loader.hide();
                    });
                  });
                } else {
                  EasyLoading.showToast('Cannot be changed');
                }
              }
            },
            child: Card(
              color: mday.sna ? primaryColor : Colors.white,
              child: Padding(
                padding: const EdgeInsets.only(
                    left: 3.0, right: 3, top: 4, bottom: 4),
                child: Text(
                  'Snacks',
                  style: TextStyle(
                      color: mday.sna ? Colors.white : Colors.black,
                      fontSize: 14),
                ),
              ),
            ),
          ),
        ),
        Expanded(
          child: GestureDetector(
            onTap: () {
              if (newMonth amp;amp; date < 4) {
                if (nextmCalender[date].edin) {
                  setState(() {
                    Loader.show(
                      context,
                      progressIndicator: CircularProgressIndicator(
                        backgroundColor: Colors.white,
                      ),
                    );
                    nextmCalender[date].din = !nextmCalender[date].din;
                    updateCalendar().then((value) {
                      nextoldCalender[date].din = !nextoldCalender[date].din;
                      Loader.hide();
                    });
                  });
                } else {
                  EasyLoading.showToast('Cannot be changed');
                }
              } else {
                if (mCalender[date].edin) {
                  setState(() {
                    Loader.show(
                      context,
                      progressIndicator: CircularProgressIndicator(
                        backgroundColor: Colors.white,
                      ),
                    );
                    mCalender[date].din = !mCalender[date].din;
                    updateCalendar().then((value) {
                      oldCalender[date].din = !oldCalender[date].din;
                      Loader.hide();
                    });
                  });
                } else {
                  EasyLoading.showToast('Cannot be changed');
                }
              }
            },
            child: Card(
              color: mday.din ? primaryColor : Colors.white,
              child: Padding(
                padding: const EdgeInsets.only(
                    left: 3.0, right: 3, top: 4, bottom: 4),
                child: Text(
                  'Dinner',
                  style: TextStyle(
                      color: mday.din ? Colors.white : Colors.black,
                      fontSize: 14),
                ),
              ),
            ),
          ),
        ),
      ],
    );
    throw UnimplementedError();
  }
}
 

Тот же код выполнялся несколько дней назад, я не знаю, что пошло не так, я также попробовал flutter clean и flutter pub get снова. Но не помогло.

Комментарии:

1. можете ли вы поделиться своей частью кода DayView или любым используемым пакетом?

2. Спасибо, что указали на это, я добавил класс dayview и страницу dayview в сам вопрос. @JahidulIslam

3. У меня нет никаких проблем, просто преобразуйте его в безопасное значение null, пожалуйста, посмотрите по указанной ссылке dartpad.dartlang.org/?id=f67a9bbbd04be0bb68ee1be5c0c78c77

4. Я не могу этого сделать, поскольку текущая версия моего проекта flutter не будет поддерживать ‘?’ для обеспечения безопасности null, и если я выполню обновление, оно выдаст еще 100 ошибок. @JahidulIslam