Flutter-Google地图调整大小时崩溃

时间:2019-09-25 21:47:11

标签: google-maps flutter dart flutter-layout

在我的用例中,我需要确保地图可以动态调整大小而不会崩溃,您可能建议使用resizeToAvoidBottomPadding,但是我的问题还不止于此,例如,如果我使用的是Facebook messanger聊天头,则应用程序将崩溃并打开它的键盘(这会使应用程序调整大小,从而迫使地图调整大小,从而导致崩溃)

以下代码位于子路径内(包含底部标签栏的路径内,因此以下代码位于该栏的按钮之一内)

@override
  Widget build(BuildContext context) {
    return Stack(
      children: <Widget>[
        GoogleMap(
          onMapCreated: _onMapCreated,
          mapType: MapType.normal,
          initialCameraPosition: CameraPosition(
            target: LatLng(30, 40),
            zoom: 11,
          ),
          onCameraMove: (pos) {
            setState(() {
              // do something
            });
          },
          onCameraIdle: () {
            setState(() {
              // do something
            });
          },
        ),
        TextField(),
      ],
    );
  }

编辑:这是我在控制台中收到的错误消息:

E/flutter (16068): [ERROR:flutter/shell/platform/android/platform_view_android_jni.cc(39)] java.lang.AbstractMethodError: abstract method "void io.flutter.plugin.platform.PlatformView.onInputConnectionLocked()"
E/flutter (16068):  at io.flutter.plugin.platform.VirtualDisplayController.onInputConnectionLocked(VirtualDisplayController.java:166)
E/flutter (16068):  at io.flutter.plugin.platform.PlatformViewsController.lockInputConnection(PlatformViewsController.java:370)
E/flutter (16068):  at io.flutter.plugin.platform.PlatformViewsController.access$1000(PlatformViewsController.java:36)
E/flutter (16068):  at io.flutter.plugin.platform.PlatformViewsController$1.resizePlatformView(PlatformViewsController.java:165)
E/flutter (16068):  at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.resize(PlatformViewsChannel.java:120)
E/flutter (16068):  at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.onMethodCall(PlatformViewsChannel.java:57)
E/flutter (16068):  at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:222)
E/flutter (16068):  at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:96)
E/flutter (16068):  at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:656)
E/flutter (16068):  at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (16068):  at android.os.MessageQueue.next(MessageQueue.java:323)
E/flutter (16068):  at android.os.Looper.loop(Looper.java:136)
E/flutter (16068):  at android.app.ActivityThread.main(ActivityThread.java:6776)
E/flutter (16068):  at java.lang.reflect.Method.invoke(Native Method)
E/flutter (16068):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1496)
E/flutter (16068):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1386)
E/flutter (16068):  at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:107)
E/flutter (16068): 
F/flutter (16068): [FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(76)] Check failed: CheckException(env). 
F/libc    (16068): Fatal signal 6 (SIGABRT), code -6 in tid 16068 (m.dm.dm_testing)
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'samsung/a7xeltexx/a7xelte:7.0/NRD90M/A710FXXU2CQG4:user/release-keys'
Revision: '3'
ABI: 'arm'
pid: 16068, tid: 16068, name: m.dm.dm_testing  >>> com.dm.dm_testing <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
Abort message: '[FATAL:flutter/shell/platform/android/platform_view_android_jni.cc(76)] Check failed: CheckException(env). 
'
    r0 00000000  r1 00003ec4  r2 00000006  r3 00000008
    r4 ec60358c  r5 00000006  r6 ec603534  r7 0000010c
    r8 ffcc802c  r9 db59415c  sl 00000032  fp db594110
    ip 0000000b  sp ffcc7f08  lr ea8f04c7  pc ea8f2d30  cpsr 000e0010
backtrace:
    #00 pc 0004ad30  /system/lib/libc.so (tgkill+12)
    #01 pc 000484c3  /system/lib/libc.so (pthread_kill+34)
    #02 pc 0001dd99  /system/lib/libc.so (raise+10)
    #03 pc 00019521  /system/lib/libc.so (__libc_android_abort+34)
    #04 pc 00017160  /system/lib/libc.so (abort+4)
    #05 pc 00fa7b9f  /data/app/com.dm.dm_testing-1/lib/arm/libflutter.so (offset 0xf99000)
    #06 pc 00f9dde1  /data/app/com.dm.dm_testing-1/lib/arm/libflutter.so (offset 0xf99000)
    #07 pc 00f9cad7  /data/app/com.dm.dm_testing-1/lib/arm/libflutter.so (offset 0xf99000)
    #08 pc 00fcfb83  /data/app/com.dm.dm_testing-1/lib/arm/libflutter.so (offset 0xf99000)
    #09 pc 00fa81f5  /data/app/com.dm.dm_testing-1/lib/arm/libflutter.so (offset 0xf99000)
    #10 pc 00fab943  /data/app/com.dm.dm_testing-1/lib/arm/libflutter.so (offset 0xf99000)
    #11 pc 00011e77  /system/lib/libutils.so (_ZN7android6Looper9pollInnerEi+614)
    #12 pc 00011b83  /system/lib/libutils.so (_ZN7android6Looper8pollOnceEiPiS1_PPv+26)
    #13 pc 00097325  /system/lib/libandroid_runtime.so (_ZN7android18NativeMessageQueue8pollOnceEP7_JNIEnvP8_jobjecti+22)
    #14 pc 7594bd55  /data/dalvik-cache/arm/system@framework@boot.oat (offset 0x38c0000)
Lost connection to device.

感谢您的帮助。

2 个答案:

答案 0 :(得分:4)

这是一个错误related to changes in Gradle 3.5.0。目前已在Flutter主频道中修复。

如果您现在要解决此问题,请将android.enableDexingArtifactTransform=false添加到gradle.properties文件中以禁用新的Gradle更改。

答案 1 :(得分:0)

  1. 使用扩展小部件包装您的堆栈
  2. 用列包裹扩展窗口小部件

您完成了...