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

Flutter 3.7.3中google_maps_flutter包意外崩溃问题求助

Google Maps Flutter 切换标签页时出现渲染器为null及崩溃问题

问题描述

我已按照google_maps_flutter包的文档完成所有配置,并且在main文件中添加了渲染器设置。应用启动时日志显示preferredRenderer为LEGACY,但切换到Maps标签页时,日志出现preferredRenderer为null以及Invalid ID 0x00000000的报错,反复切换标签页会导致应用崩溃。

应用布局

应用布局

完整代码

import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
import 'package:google_maps_flutter_android/google_maps_flutter_android.dart';
import 'package:google_maps_flutter_platform_interface/google_maps_flutter_platform_interface.dart';

/// MapsDemo is the Main Application.
class MapsDemo extends StatefulWidget {
  const MapsDemo({super.key});

  @override
  State<MapsDemo> createState() => _MapsDemoState();
}

class _MapsDemoState extends State<MapsDemo> {
  final LatLng sourceLocation = const LatLng(37.422, -122.084);

  late GoogleMapController _mapController;

  @override
  void dispose() {
    _mapController.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('GoogleMaps examples')),
      body: SizedBox(
        height: MediaQuery.of(context).size.height,
        child: DefaultTabController(
          length: 2,
          child: Column(
            children: [
              const SizedBox(
                height: 30,
              ),
              const SizedBox(
                height: 40,
                child: TabBar(
                  labelColor: Colors.black,
                  tabs: [
                    Text(
                      "Posts",
                    ),
                    Text(
                      "Maps",
                    ),
                  ],
                ),
              ),
              const SizedBox(
                height: 20,
              ),
              Expanded(
                child: TabBarView(
                  children: [
                    const Center(
                      child: Text(
                        "Posts Available",
                      ),
                    ),
                    GoogleMap(
                      mapType: MapType.normal,
                      initialCameraPosition: CameraPosition(
                        target: sourceLocation,
                        zoom: 14.5,
                      ),
                      markers: <Marker>{
                        Marker(
                          markerId: const MarkerId('sourceLocation'),
                          position: sourceLocation,
                          infoWindow: const InfoWindow(
                            title: 'Your Location',
                          ),
                          onTap: () {
                            // Handle marker tap event here, if needed
                          },
                        ),
                      },
                      onMapCreated: (GoogleMapController controller) {
                        _mapController = controller;
                      },
                    ),
                  ],
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

void main() {
  WidgetsFlutterBinding.ensureInitialized();

  final GoogleMapsFlutterPlatform mapsImplementation =
      GoogleMapsFlutterPlatform.instance;
  if (mapsImplementation is GoogleMapsFlutterAndroid) {
    mapsImplementation.useAndroidViewSurface = true;
    mapsImplementation.initializeWithRenderer(AndroidMapRenderer.legacy);
  }
  runApp(const MaterialApp(home: MapsDemo()));
}

应用启动日志

D/MapsInitializer( 1186): preferredRenderer: LEGACY
D/zzcb    ( 1186): preferredRenderer: LEGACY
I/zzcb    ( 1186): Making Creator dynamically
I/DynamiteModule( 1186): Considering local module com.google.android.gms.maps_legacy_dynamite:0 and remote module ]
I/DynamiteModule( 1186): Selected remote version of 
V/DynamiteModule( 1186): Dynamite loader version >= 2, using loadModule2NoCrashUtils
W/ProtoDataStoreFlagStore( 1186): Unable to retrieve flag snapshot for com.google.android.gms.maps#com.example.test_project, using defaults.

切换到Maps标签页日志

D/MapsInitializer( 1186): preferredRenderer: null
D/zzcb    ( 1186): preferredRenderer: null

I/TetheringManager( 1186): registerTetheringEventCallback:com.example.test_project
E/le.test_projec( 1186): Invalid ID 0x00000000.
2
E/le.test_projec( 1186): Invalid ID 0x00000000.

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 22:43:05