未来变量和 null 安全:不可为 null 的实例字段 'notifications' 必须初始化
Future variables and null safety: Non-nullable instance field 'notifications' must be initialized
我最近升级了 Dart(使用 v2.12.4)和 trying to migrate 我制作的应用程序。
我现在陷入了一个我似乎无法解决的问题。
考虑以下伪代码:
class Notifications {
Future<List<NotificationItem>> notificationItems;
fillNotificationList() async {
notificationItems = await httpService.getFromEndpoint();
}
}
notificationItems
当前错误 Non-nullable instance field 'notifications' must be initialized.
。
我尝试过不同的解决方案;添加 late
关键字会使应用程序抛出 LateInitializationError
异常并附加 = []
给出类型错误。
如何在最新版本的 Dart 中成功拥有具有空安全功能的 Future 变量?
它似乎是一个可以为 null 的变量。这意味着您的程序中有一个时间点显然是 null
。所以这样声明:
Future<List<NotificationItem>>? notificationItems;
我觉得你的其余代码有点奇怪。你命名未来就像我命名实际结果一样。您有一个不执行任何异步工作的异步方法。也许那只是因为这里的例子被简化了。
或者您可能真的很想坚持认为这永远不会为空。您可以使用带有空列表的完整 Future 对其进行初始化:
Future<List<NotificationItem>>? notificationItems = Future.value(<NotificationItem>[]);
我最近升级了 Dart(使用 v2.12.4)和 trying to migrate 我制作的应用程序。
我现在陷入了一个我似乎无法解决的问题。
考虑以下伪代码:
class Notifications {
Future<List<NotificationItem>> notificationItems;
fillNotificationList() async {
notificationItems = await httpService.getFromEndpoint();
}
}
notificationItems
当前错误 Non-nullable instance field 'notifications' must be initialized.
。
我尝试过不同的解决方案;添加 late
关键字会使应用程序抛出 LateInitializationError
异常并附加 = []
给出类型错误。
如何在最新版本的 Dart 中成功拥有具有空安全功能的 Future 变量?
它似乎是一个可以为 null 的变量。这意味着您的程序中有一个时间点显然是 null
。所以这样声明:
Future<List<NotificationItem>>? notificationItems;
我觉得你的其余代码有点奇怪。你命名未来就像我命名实际结果一样。您有一个不执行任何异步工作的异步方法。也许那只是因为这里的例子被简化了。
或者您可能真的很想坚持认为这永远不会为空。您可以使用带有空列表的完整 Future 对其进行初始化:
Future<List<NotificationItem>>? notificationItems = Future.value(<NotificationItem>[]);