#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