Marker.from constructor

Marker.from(
  1. dynamic value, {
  2. Key? key,
  3. num? size,
  4. num? width,
  5. num? height,
  6. num? opacity,
  7. MarkerAlignment? align,
  8. MarkerOffset? offset,
  9. dynamic widget,
  10. dynamic data,
})

Implementation

factory Marker.from(
  dynamic value, {
  Key? key,
  num? size,
  num? width,
  num? height,
  num? opacity,
  MarkerAlignment? align,
  MarkerOffset? offset,
  dynamic widget,
  dynamic data,
}) {
  if (value is Marker) {
    return Marker(
      value.latlng,
      size: size ?? value.size,
      width: width ?? value.width,
      height: height ?? value.height,
      opacity: opacity as double? ?? value.opacity,
      align: align ?? value.align,
      offset: offset ?? value.offset,
      widget:
          value.icon ?? value.image ?? value.svg ?? value.widget ?? widget,
      data: data ?? value.data,
    );
  }

  bool isLatLng = value is LatLng;
  bool isList = (value is List &&
      value.isNotEmpty &&
      (value.first is int || value.first is double));

  if (isLatLng || isList) {
    LatLng latlng = value is LatLng ? value : LatLng.from(value);

    return Marker(
      latlng,
      size: size,
      width: width,
      height: height,
      opacity: opacity as double?,
      align: align,
      offset: offset,
      widget: widget,
      data: data,
    );
  }

  throw Exception("Invalid value...");
}