首页 > 解决方案 > 参数类型“双?” 不能分配给参数类型“双”。飞镖(argument_type_not_assignable)

问题描述

我正在尝试获取用户当前位置,但在 l.latitude 和 l.longitude 上出现此错误

参数类型“双?” 不能分配给参数类型“双”。

void _onMapCreated(GoogleMapController _cntlr) {
    _controller = _cntlr;
    _location.onLocationChanged.listen((l) {
      _controller.animateCamera(
        CameraUpdate.newCameraPosition(
          CameraPosition(
            target: LatLng(l.latitude, l.longitude),
            zoom: 15,
          ),
        ),
      );
    });
  }

标签: fluttergoogle-mapsdartposition

解决方案


您得到的错误来自空安全性,该类型double?意味着它可以是 adoublenull,但您的参数只接受 adouble和 no null

为此,您可以通过!在变量末尾添加 a 来“强制”使用“非空”变量,但这样做时要小心。

CameraPosition(
    target: LatLng(l.latitude!, l.longitude!),
    zoom: 15,
)

您可以在官方文档中了解更多关于 null-safety 语法和原则的信息:https ://flutter.dev/docs/null-safety


推荐阅读