无法将参数类型 'double?' 分配给参数类型 'double'。飞镖(argument_type_not_assignable)
The argument type 'double?' can't be assigned to the parameter type 'double'. dart(argument_type_not_assignable)
我正在尝试获取用户当前位置,但我在 l.latitude 和 l.longitude
上遇到了这个错误
参数类型'double?'无法赋值给参数类型'double'。
void _onMapCreated(GoogleMapController _cntlr) {
_controller = _cntlr;
_location.onLocationChanged.listen((l) {
_controller.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(l.latitude, l.longitude),
zoom: 15,
),
),
);
});
}
您收到的错误来自空安全,类型 double?
意味着它可以是 double
或 null
,但您的参数只接受 double
,没有 null
.
为此,您可以通过在变量末尾添加 !
来“强制”使用 'non-null' 变量,但这样做时要小心。
CameraPosition(
target: LatLng(l.latitude!, l.longitude!),
zoom: 15,
)
您可以在官方文档中了解更多关于 null-safety 语法和原则:https://flutter.dev/docs/null-safety
您还可以对局部变量进行空检查,从而使您的代码空安全:
when location changes
if (lat/lon are not null) {
animate camera
}
所以这样的事情可能会奏效:
void _onMapCreated(GoogleMapController _cntlr) {
_controller = _cntlr;
_location.onLocationChanged.listen((l) {
if (l.latitude != null && l.longitude != null) {
_controller.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(l.latitude, l.longitude),
zoom: 15,
),
),
);
}
});
}
从逻辑上讲,将动画设为 null latitude/longitude 是没有意义的,因此如果是这种情况,您可以完全跳过该侦听器调用。
上述解决方案对我不起作用,如果它对您也不起作用,问题将是因为您尝试访问的两个变量都必须进行空检查,所以只需这样做,
CameraPosition(
target: LatLng(l!.latitude!, l!.longitude!),
zoom: 15,
)
只需添加!在l前面,另一个在纬度或经度前面,这将完美修复代码
我正在尝试获取用户当前位置,但我在 l.latitude 和 l.longitude
上遇到了这个错误参数类型'double?'无法赋值给参数类型'double'。
void _onMapCreated(GoogleMapController _cntlr) {
_controller = _cntlr;
_location.onLocationChanged.listen((l) {
_controller.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(l.latitude, l.longitude),
zoom: 15,
),
),
);
});
}
您收到的错误来自空安全,类型 double?
意味着它可以是 double
或 null
,但您的参数只接受 double
,没有 null
.
为此,您可以通过在变量末尾添加 !
来“强制”使用 'non-null' 变量,但这样做时要小心。
CameraPosition(
target: LatLng(l.latitude!, l.longitude!),
zoom: 15,
)
您可以在官方文档中了解更多关于 null-safety 语法和原则:https://flutter.dev/docs/null-safety
您还可以对局部变量进行空检查,从而使您的代码空安全:
when location changes
if (lat/lon are not null) {
animate camera
}
所以这样的事情可能会奏效:
void _onMapCreated(GoogleMapController _cntlr) {
_controller = _cntlr;
_location.onLocationChanged.listen((l) {
if (l.latitude != null && l.longitude != null) {
_controller.animateCamera(
CameraUpdate.newCameraPosition(
CameraPosition(
target: LatLng(l.latitude, l.longitude),
zoom: 15,
),
),
);
}
});
}
从逻辑上讲,将动画设为 null latitude/longitude 是没有意义的,因此如果是这种情况,您可以完全跳过该侦听器调用。
上述解决方案对我不起作用,如果它对您也不起作用,问题将是因为您尝试访问的两个变量都必须进行空检查,所以只需这样做,
CameraPosition(
target: LatLng(l!.latitude!, l!.longitude!),
zoom: 15,
) 只需添加!在l前面,另一个在纬度或经度前面,这将完美修复代码