簡體   English   中英

Flutter Google Maps 和 CachedNetworkImage 不適用於 Android 模擬器

[英]Flutter Google Maps and CachedNetworkImage not working on Android emulator

我在 Android 模擬器上遇到了 Google Maps 和 CachedNetworkImage 的奇怪問題。 應用程序在 iPhone 模擬器上完美運行,但在 Android 模擬器 CachedNetworkImage 和 Google Maps 上無法正常工作。

  • CachedNetworkImage 顯示CircularProgressIndicator但不加載圖像。 圖像大小也小於 40k。
  • 帶有 GoogleMaps 的小部件顯示空屏幕並將錯誤打印到控制台。

我確實為 Android 和 iOS 激活了 Google Maps API。 我確實將 Android 的 API 添加到 AndroidManifest.xml,並將 iOS 的 API 添加到 AppDelegate.swift。 我的計費帳戶處於活動狀態(我還創建了不同的 API KEY 但結果相同):

<meta-data android:name="com.google.android.geo.API_KEY" android:value="MY_API_KEY_FOR_ANDROID"/>

我確實添加了互聯網權限:

  <uses-permission android:name="android.permission.INTERNET" />

我跑過幾次

flutter clean 

flutter run 

我從模擬器重新安裝了應用程序。

  • MinSdkVersion 設置為 24。
  • compileSdkVersion 設置為 30。

這是我的 MapWidget:

import 'dart:async';
import 'package:duty/models/announcement.dart';
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';

class OrderMapWidget extends StatelessWidget {
  final Announcement announcement;

  OrderMapWidget({required this.announcement});

  @override
  Widget build(BuildContext context) {
    final CameraPosition position = CameraPosition(
      target: LatLng(announcement.address.geoloc.latitude,
          announcement.address.geoloc.longitude),
      zoom: 9,
    );
    Set<Circle> _circle = Set.from([
      Circle(
        circleId:
            CircleId(('circle_id_${DateTime.now().millisecondsSinceEpoch}')),
        center: LatLng(announcement.address.geoloc.latitude,
            announcement.address.geoloc.longitude),
        radius: 8000,
        strokeWidth: 2,
        strokeColor: Theme.of(context).accentColor,
        fillColor: Theme.of(context).accentColor.withAlpha(20),
      )
    ]);
    return Container(
      height: 120,
      child: GoogleMap(
        mapType: MapType.normal,
        onMapCreated: (GoogleMapController controller) {},
        compassEnabled: false,
        myLocationEnabled: false,
        myLocationButtonEnabled: false,
        initialCameraPosition: position,
        onCameraMove: null,
        circles: _circle,
        zoomGesturesEnabled: false,
        tiltGesturesEnabled: false,
        scrollGesturesEnabled: false,
        rotateGesturesEnabled: false,
      ),
    );
  }
}

還有我的 CachedNetworkImage:

ClipOval(
         child: CachedNetworkImage(
          imageUrl: userData.profileImage,
          progressIndicatorBuilder: (context, url, downloadProgress) =>
              CircularProgressIndicator(value: downloadProgress.progress),
          errorWidget: (context, url, error) => Icon(Icons.error),
        ),
    ),

我的 pubspec.yaml:

version: 1.0.0+1

environment:
  sdk: ">=2.12.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  intl: ^0.17.0
  cloud_firestore: ^2.5.3
  firebase_auth: ^3.1.3
  firebase_core: ^1.7.0
  flutter_google_places: ^0.3.0
  google_maps_flutter: ^2.0.9
  uuid: ^3.0.4
  geocoding: ^2.0.1
  cupertino_icons: ^1.0.2
  cached_network_image: ^3.1.0

我嘗試使用不同的模擬器。 在 Android 上使用 GoogleMaps 時的錯誤如下:

E/flutter (15357): [ERROR:flutter/lib/ui/ui_dart_state.cc(199)] Unhandled Exception: PlatformException(error, java.lang.IllegalStateException: 
Trying to create a platform view of unregistered type: plugins.flutter.io/google_maps
E/flutter (15357):  at io.flutter.plugin.platform.PlatformViewsController$1.createVirtualDisplayForPlatformView(PlatformViewsController.java:192)

非常相似的問題

我已經嘗試了一切,但現在沒有任何幫助。 再一次,一切都在 iOS 上完美運行,但在 Android 上卻不是。 感謝您的任何幫助! 馬特

好的,我查看了所有依賴項,似乎flutter_facebook_auth正在解決問題。 奇怪,但在刪除flutter_facebook_auth一切似乎都在工作。 Google Maps 和 CachedNetworkImage 現在可以正常工作了。 我有最新版本的flutter_facebook_auth ,我試圖降級但它仍然導致了問題。 只有刪除此依賴項才能解決我的問題。 奇怪的...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM