mirrored_repositories/awesome-flutter/examples/plugins/packages/google_maps_flutter/google_maps_flutter/example
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'dart:typed_data';
import 'package:flutter/services.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

/// Inspect Google Maps state using the platform SDK.
///
/// This class is primarily used for testing. The methods on this
/// class should call "getters" on the GoogleMap object or equivalent
/// on the platform side.
class GoogleMapInspector {
  GoogleMapInspector(this._channel);

  final MethodChannel _channel;

  Future<bool?> isCompassEnabled() async {
    return await _channel.invokeMethod<bool>('map#isCompassEnabled');
  }

  Future<bool?> isMapToolbarEnabled() async {
    return await _channel.invokeMethod<bool>('map#isMapToolbarEnabled');
  }

  Future<MinMaxZoomPreference> getMinMaxZoomLevels() async {
    final List<double> zoomLevels =
        (await _channel.invokeMethod<List<dynamic>>('map#getMinMaxZoomLevels'))!
            .cast<double>();
    return MinMaxZoomPreference(zoomLevels[0], zoomLevels[1]);
  }

  Future<double?> getZoomLevel() async {
    final double? zoomLevel =
        await _channel.invokeMethod<double>('map#getZoomLevel');
    return zoomLevel;
  }

  Future<bool?> isZoomGesturesEnabled() async {
    return await _channel.invokeMethod<bool>('map#isZoomGesturesEnabled');
  }

  Future<bool?> isZoomControlsEnabled() async {
    return await _channel.invokeMethod<bool>('map#isZoomControlsEnabled');
  }

  Future<bool?> isLiteModeEnabled() async {
    return await _channel.invokeMethod<bool>('map#isLiteModeEnabled');
  }

  Future<bool?> isRotateGesturesEnabled() async {
    return await _channel.invokeMethod<bool>('map#isRotateGesturesEnabled');
  }

  Future<bool?> isTiltGesturesEnabled() async {
    return await _channel.invokeMethod<bool>('map#isTiltGesturesEnabled');
  }

  Future<bool?> isScrollGesturesEnabled() async {
    return await _channel.invokeMethod<bool>('map#isScrollGesturesEnabled');
  }

  Future<bool?> isMyLocationButtonEnabled() async {
    return await _channel.invokeMethod<bool>('map#isMyLocationButtonEnabled');
  }

  Future<bool?> isTrafficEnabled() async {
    return await _channel.invokeMethod<bool>('map#isTrafficEnabled');
  }

  Future<bool?> isBuildingsEnabled() async {
    return await _channel.invokeMethod<bool>('map#isBuildingsEnabled');
  }

  Future<Uint8List?> takeSnapshot() async {
    return await _channel.invokeMethod<Uint8List>('map#takeSnapshot');
  }

  Future<Map<String, dynamic>?> getTileOverlayInfo(String id) async {
    return (await _channel.invokeMapMethod<String, dynamic>(
        'map#getTileOverlayInfo', <String, String>{
      'tileOverlayId': id,
    }));
  }
}
