Google地图dequeueBuffer:BufferQueue已被放弃

时间:2019-06-17 13:20:48

标签: flutter dart

我在使用Google Map小部件时遇到了一些麻烦。
简而言之,我有3个页面,带底部导航栏的主页,地图页面-带有Scaffold主体的GoogleMap的基本状态控件,以及另一个页面。每次我从地图页面切换得太快时,都会出现此错误,整个应用程序将冻结。

E/BufferQueueProducer( 9243): [SurfaceTexture-0-9243-14] dequeueBuffer: BufferQueue has been abandoned

据我了解,它归结为一个事实,即在SurfaceTexture销毁后,地图继续加载,例如:https://stackoverflow.com/a/22490648/11318016
我看到有很多方法可以在android上解决它,但是我没有找到一种方法来处理它。

2 个答案:

答案 0 :(得分:0)

该错误是由API密钥格式错误引起的。确保您的API密钥正确。

答案 1 :(得分:0)

我遇到了同样的问题,并修复了该问题,并在其statefulwidget中添加了“ with AutomaticKeepAliveClientMixin”。这将使您的小部件永不死,并使您免于出现过多帧的异常。这:E/BufferQueueProducer( 9243): [SurfaceTexture-0-9243-14] dequeueBuffer: BufferQueue has been abandoned仍将在调试终端中,但这不是错误。

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

class GoThereView extends StatefulWidget {
  @override
  _GoThereViewState createState() => _GoThereViewState();
}

class _GoThereViewState extends State<GoThereView> with AutomaticKeepAliveClientMixin {
  GoogleMapController _controller;

  @override
  bool get wantKeepAlive => true;

  void _onMapCreated(GoogleMapController controller) {
    if( _controller == null )
      _controller = controller;
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: Stack(
        children: <Widget>[
          GoogleMap(
            onMapCreated: _onMapCreated,
            initialCameraPosition: CameraPosition(target: LatLng(26.8206, 30.8025)),
          )
        ],
      ),
    );
  }
}