我准备了一个基于小部件https://pub.dev/packages/weather的方法,它从以下位置检索数据:https://openweathermap.org/current
bool isNight(Weather weather) {
return DateTime.now().isAfter(weather.sunset) || DateTime.now().isBefore(weather.sunrise);
}
不幸得到一个错误
错误:参数类型“DateTime?无法将“”分配给参数类型“DateTime”,因为“DateTime?'可为空,而'DateTime'不可为空。'DateTime'来自'dart:core'。return DateTime.now().isAfter(weather.sunset)||System. out. println();
我能做错什么?
准备一个逻辑门的类型是否实际是夜间
1条答案
按热度按时间56lgkhnf1#
isAfter和isBefore接受DateTime类型作为参数,但weather.sunset和weather.日出是DateTime?类型。您需要在该行之前检查weather.sunset和weather.日出是否为null。
因为你已经检查了weather.sunset和weather.日出是否为null,所以在下一行它们不能为null,所以Dart会将它们的类型提升为DateTime。如果你确定weather.sunset和weather.日出永远不会为空,你可以添加!在他们面前,如果没有检查。但如果它们为null,应用程序将崩溃。
阅读更多关于它在这里:https://dart.dev/null-safety/understanding-null-safety