Как мне добавить тему Google Map во флаттер? - PullRequest
0 голосов
/ 14 января 2020

У меня есть приложение карты, которое я хочу изменить тему на рассвете и закате. Тематическая карта должна быть очень простой, но я получаю следующую ошибку:

Необработанное исключение: NoSuchMethodError: Метод 'setMapStyle' был вызван для нуля.

Здесь мой пабспи c .yaml

assets:
  - assets/themes/map/day/
  - assets/themes/map/night/

Я импортировал следующий пакет.

import 'package:flutter/services.dart' show rootBundle;

Я добавил следующую строку в свой initState ()

rootBundle.loadString('assets/themes/map/night/night.json').then((string) {
      _mapStyle = string;
    });

Вот мой контроллер карты.

Completer<GoogleMapController> _mapController = Completer();

void _onMapCreated(GoogleMapController controller) {
    PermissionHandler()
        .checkPermissionStatus(PermissionGroup
            .locationWhenInUse) //check permission returns a Future
        .then(_updateStatus); // handling in callback to prevent blocking UI

    _mapController.complete(
     controller); // manages camera function (position, animation, zoom).

    controller.setMapStyle(_mapStyle);
    print("MAPSTYLE -> $_mapStyle");
  }

и вот начало кода моей карты

_userLocation == null
    ? Center(
        child: CircularProgressIndicator(
            backgroundColor: Theme.UniColour.primary[900],
        ))
        : GoogleMap(
            onMapCreated: _onMapCreated,
            initialCameraPosition:
                CameraPosition(
                    target: _userLocation,
                    zoom: _defaultZoom,
                    tilt: _tiltAngle),
                    ...
                    ...
                    ...

Буду признателен за любую помощь.

1 Ответ

1 голос
/ 14 января 2020

Этот код работает для меня.

controller.setMapStyle(await rootBundle.loadString('assets/styles/google_map.json'));

Использование asyn c ожидает предотвращения состояния гонки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...