You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter集成Google Maps时map_view包安装错误求助

解决Flutter集成Google Maps时map_view包安装失败的问题

首先,你遇到的问题根源很清晰:map_view: ^0.0.10是一个非常老旧且已停止维护的包,它依赖的uri包版本要求是^0.11.1,但当前Flutter生态中的uri包早已更新到更高版本,直接安装会触发版本冲突——哪怕单独安装uri包也没用,因为map_view会强制要求它的旧版本。

下面给你两种解决方案,优先推荐第一种:

方案一:改用官方维护的Google Maps插件(强烈推荐)

map_view已经多年没有更新,功能有限且兼容性差,Google官方推出的google_maps_flutter是目前Flutter集成Google Maps的首选方案,支持最新Flutter版本,功能更全面(标记、多边形、地图交互等)。

步骤如下:

  1. 打开你的pubspec.yaml,替换原有依赖:

    dependencies:
      flutter:
        sdk: flutter
      # 替换成官方插件,使用最新稳定版即可
      google_maps_flutter: ^2.5.0
    
  2. 执行命令更新依赖:

    flutter pub get
    
  3. 配置API密钥:

    • Android:在android/app/src/main/AndroidManifest.xml的<application>标签内添加:
      <meta-data
          android:name="com.google.android.geo.API_KEY"
          android:value="你的Google Maps API密钥"/>
      
    • iOS:在ios/Runner/Info.plist中添加:
      <key>GoogleMapsAPIKey</key>
      <string>你的Google Maps API密钥</string>
      

    注意:要确保你已经在Google Cloud控制台开启了Maps SDK for Android和Maps SDK for iOS服务,并生成了对应的API密钥。

  4. 简单示例代码:

    import 'package:flutter/material.dart';
    import 'package:google_maps_flutter/google_maps_flutter.dart';
    
    class MapScreen extends StatefulWidget {
      const MapScreen({super.key});
    
      @override
      State<MapScreen> createState() => _MapScreenState();
    }
    
    class _MapScreenState extends State<MapScreen> {
      late GoogleMapController mapController;
      final LatLng _center = const LatLng(45.521563, -122.677433);
    
      void _onMapCreated(GoogleMapController controller) {
        mapController = controller;
      }
    
      @override
      Widget build(BuildContext context) {
        return Scaffold(
          appBar: AppBar(
            title: const Text('Google Maps Demo'),
            backgroundColor: Colors.green[700],
          ),
          body: GoogleMap(
            onMapCreated: _onMapCreated,
            initialCameraPosition: CameraPosition(
              target: _center,
              zoom: 11.0,
            ),
          ),
        );
      }
    }
    

方案二:强制指定uri包版本(不推荐)

如果你非要继续使用老旧的map_view包,可以尝试强制指定uri包为map_view要求的版本,但这可能会和其他依赖产生冲突,后续维护风险很高:

在pubspec.yaml中同时添加两个依赖:

dependencies:
  map_view: ^0.0.10
  uri: 0.11.1

然后执行flutter pub get,但如果其他依赖需要更高版本的uri,就会触发新的报错,所以这个方案仅作为临时应急使用。

内容的提问来源于stack exchange,提问作者sidharth satapathy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:28:11