首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >错误:“试图创建未注册类型的平台视图:umair.mapbox_导航/mapboxMapView”

错误:“试图创建未注册类型的平台视图:umair.mapbox_导航/mapboxMapView”
EN

Stack Overflow用户
提问于 2020-10-27 09:32:03
回答 1查看 276关注 0票数 0

我想使用mapbox_navigation包,但是当我在一个新的颤振项目中粘贴示例时,我得到了以下错误:

代码语言:javascript
运行
复制
E/flutter (11145): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] Unhandled Exception: PlatformException(error, java.lang.IllegalStateException: Trying to create a platform view of unregistered type: umair.mapbox_navigation/mapboxMapView
E/flutter (11145):  at io.flutter.plugin.platform.PlatformViewsController$1.createVirtualDisplayForPlatformView(PlatformViewsController.java:199)
E/flutter (11145):  at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.create(PlatformViewsChannel.java:104)
E/flutter (11145):  at io.flutter.embedding.engine.systemchannels.PlatformViewsChannel$1.onMethodCall(PlatformViewsChannel.java:59)
E/flutter (11145):  at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
E/flutter (11145):  at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
E/flutter (11145):  at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
E/flutter (11145):  at android.os.MessageQueue.nativePollOnce(Native Method)
E/flutter (11145):  at android.os.MessageQueue.next(MessageQueue.java:325)
E/flutter (11145):  at android.os.Looper.loop(Looper.java:142)
E/flutter (11145):  at android.app.ActivityThread.main(ActivityThread.java:6944)
E/flutter (11145):  at java.lang.reflect.Method.invoke(Native Method)
E/flutter (11145):  at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
E/flutter (11145):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
E/flutter (11145): , null, null)
E/flutter (11145): #0      StandardMethodCodec.decodeEnvelope (package:flutter/src/services/message_codecs.dart:582:7)
E/flutter (11145): #1      MethodChannel._invokeMethod (package:flutter/src/services/platform_channel.dart:159:18)
E/flutter (11145): <asynchronous suspension>
E/flutter (11145): #2      MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:332:12)
E/flutter (11145): #3      TextureAndroidViewController._sendCreateMessage (package:flutter/src/services/platform_views.dart:1039:54)
E/flutter (11145): #4      AndroidViewController.create (package:flutter/src/services/platform_views.dart:749:11)
E/flutter (11145): #5      TextureAndroidViewController.create (package:flutter/src/services/platform_views.dart:1018:34)
E/flutter (11145): #6      TextureAndroidViewController.setSize (package:flutter/src/services/platform_views.dart:1002:14)
E/flutter (11145): #7      RenderAndroidView._sizePlatformView (package:flutter/src/rendering/platform_view.dart:174:29)
E/flutter (11145): #8      RenderAndroidView.performResize (package:flutter/src/rendering/platform_view.dart:155:5)
E/flutter (11145): #9      RenderObject.layout (package:flutter/src/rendering/object.dart:1756:9)
E/flutter (11145): #10     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:14)
E/flutter (11145): #11     RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
E/flutter (11145): #12     RenderStack.performLayout (package:flutter/src/rendering/stack.dart:560:15)
E/flutter (11145): #13     RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
E/flutter (11145): #14     MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:12)
E/flutter (11145): #15     _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:498:7)
E/flutter (11145): #16     MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:243:7)
E/flutter (11145): #17     RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:402:14)
E/flutter (11145): #18     RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
E/flutter (11145): #19     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:14)
E/flutter (11145): #20     RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
E/flutter (11145): #21     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:14)
E/flutter (11145): #22     _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1308:11)
E/flutter (11145): #23     RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
E/flutter (11145): #24     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:14)
E/flutter (11145): #25     RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
E/flutter (11145): #26     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:14)
E/flutter (11145): #27     RenderObject.layout (package:flutter/src/rendering/object.dart:1777:7)
E/flutter (11145): #28     RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:113:14)
E/flutter (11145): #29     RenderObject.layout (package:flutter/src

我的代码:

代码语言:javascript
运行
复制
import 'dart:convert';
import 'package:flutter/material.dart';

import 'package:mapbox_navigation/mapbox_navigation.dart';

void main() {
  runApp(MaterialApp(
    home: MainPage(),
  ));
}

class MainPage extends StatefulWidget {
  @override
  _MainPageState createState() => _MainPageState();
}

class _MainPageState extends State<MainPage> {
  MapViewController controller;
  var mapBox = MapboxNavigation();
  var isLoading = false;
  var isRouteInProgress = false;

  @override
  void initState() {
    super.initState();
    mapBox.init();

    mapBox.getMapBoxEventResults().onData((data) {
      printWrapped("Event: ${data.eventName}, Data: ${data.data}");

      var event = MapBoxEventProvider.getEventType(data.eventName);

      if (event == MapBoxEvent.route_building) {

        setState(() {
          isLoading = true;
        });

        print("Building route..");
      } else if (event == MapBoxEvent.route_build_failed) {

        setState(() {
          isLoading = false;
        });

        print("Route building failed.");

      } else if (event == MapBoxEvent.route_built) {

        setState(() {
          isLoading = false;
        });

        var routeResponse = MapBoxRouteResponse.fromJson(jsonDecode(data.data));

        controller.getFormattedDistance(routeResponse.routes.first.distance)
            .then((value) => print("Route Distance: $value"));

        controller.getFormattedDuration(routeResponse.routes.first.duration)
            .then((value) => print("Route Duration: $value"));

      } else if (event == MapBoxEvent.progress_change) {

        setState(() {
          isRouteInProgress = true;
        });

        var progressEvent = MapBoxProgressEvent.fromJson(jsonDecode(data.data));

        controller.getFormattedDistance(progressEvent.legDistanceRemaining)
            .then((value) => print("Leg Distance Remaining: $value"));

        controller.getFormattedDistance(progressEvent.distanceTraveled)
            .then((value) => print("Distance Travelled: $value"));

        controller.getFormattedDuration(progressEvent.legDurationRemaining)
            .then((value) => print("Leg Duration Remaining: $value"));

        print(
            "Instruction: ${progressEvent.currentStepInstruction},"
                "Current Direction: ${progressEvent.currentDirection}");

      } else if (event == MapBoxEvent.milestone_event) {

        var mileStoneEvent = MapBoxMileStoneEvent.fromJson(jsonDecode(data.data));

        controller.getFormattedDistance(mileStoneEvent.distanceTraveled)
            .then((value) => print("Distance Travelled: $value"));

      } else if (event == MapBoxEvent.speech_announcement) {

        var speechEvent = MapBoxEventData.fromJson(jsonDecode(data.data));
        print("Speech Text: ${speechEvent.data}");

      } else if (event == MapBoxEvent.banner_instruction) {

        var bannerEvent = MapBoxEventData.fromJson(jsonDecode(data.data));
        print("Banner Text: ${bannerEvent.data}");

      } else if (event == MapBoxEvent.navigation_cancelled) {

        setState(() {
          isRouteInProgress = false;
        });

      } else if (event == MapBoxEvent.navigation_finished) {

        setState(() {
          isRouteInProgress = false;
        });

      } else if (event == MapBoxEvent.on_arrival) {

        setState(() {
          isRouteInProgress = false;
        });

      } else if (event == MapBoxEvent.user_off_route) {

        var locationData = MapBoxLocation.fromJson(jsonDecode(data.data));
        print("User has off-routed: Location: ${locationData.toString()}");

      } else if (event == MapBoxEvent.faster_route_found) {

        var routeResponse = MapBoxRouteResponse.fromJson(jsonDecode(data.data));

        controller.getFormattedDistance(routeResponse.routes.first.distance)
            .then((value) => print("Faster route found: Route Distance: $value"));

        controller.getFormattedDuration(routeResponse.routes.first.duration)
            .then((value) => print("Faster route found: Route Duration: $value"));
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('MapBox Demo'),
      ),
      body: Stack(
        children: <Widget>[
          MapBoxMapView(onMapViewCreated: _onMapViewCreated),
          !isLoading
              ? Align(
            alignment: Alignment.bottomCenter,
            child: !isRouteInProgress
                ? Column(
              children: <Widget>[
                Row(
                  mainAxisAlignment:
                  MainAxisAlignment.spaceEvenly,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    RaisedButton(
                        child: Text("Add Marker"),
                        color: Colors.blue,
                        textColor: Colors.white,
                        onPressed: () async {
                          await controller.addMarker(
                              latitude: 33.569126,
                              longitude: 73.1231471);
                          await controller.moveCameraToPosition(
                              latitude: 33.569126,
                              longitude: 73.1231471);
                        }),
                    RaisedButton(
                        child: Text("Move Camera"),
                        color: Colors.blue,
                        textColor: Colors.white,
                        onPressed: () async {
                          await controller.moveCameraToPosition(
                              latitude: 33.6392443,
                              longitude: 73.278358);
                        })
                  ],
                ),
                Row(
                  mainAxisAlignment:
                  MainAxisAlignment.spaceEvenly,
                  crossAxisAlignment: CrossAxisAlignment.center,
                  children: <Widget>[
                    RaisedButton(
                        child: Text("Build Route"),
                        color: Colors.blue,
                        textColor: Colors.white,
                        onPressed: () async {
                          setState(() {
                            isLoading = true;
                          });
                          print("My controller: $controller");
                          await controller.buildRoute(
                              originLat: 46.320324,
                              originLong: -0.581215,
                              destinationLat: 46.319783,
                              destinationLong: -0.584455,
                              zoom: 9.5);
                        }),
                    RaisedButton(
                        child: Text("Navigate"),
                        color: Colors.blue,
                        textColor: Colors.white,
                        onPressed: () async {
                          await controller.startNavigation(
                              shouldSimulateRoute: true);
                        }),
                    RaisedButton(
                        child: Text("Navigate Embedded"),
                        color: Colors.blue,
                        textColor: Colors.white,
                        onPressed: () async {
                          await controller
                              .startEmbeddedNavigation(
                              zoom: 18.0,
                              tilt: 90.0,
                              bearing: 50.0,
                              shouldSimulateRoute: true);
                        })
                  ],
                )
              ],
            )
                : RaisedButton(
                child: Text("Cancel Navigation"),
                color: Colors.blue,
                textColor: Colors.white,
                onPressed: () async {
                  setState(() {
                    isRouteInProgress = false;
                    isLoading = false;
                  });
                  await controller.stopNavigation();
                }),
          )
              : Align(
              alignment: Alignment.center,
              child: CircularProgressIndicator()),
        ],
      ),
    );
  }

  void _onMapViewCreated(MapViewController _controller) async {
    print("MapView is created");
    this.controller = _controller;
    await controller.showMap(MapBoxOptions(
        initialLat: 33.569126,
        initialLong: 73.1231471,
        enableRefresh: true,
        alternatives: true,
        zoom: 13.0,
        tilt: 0.0,
        bearing: 0.0,
        clientAppName: "MapBox Demo",
        voiceInstructions: true,
        bannerInstructions: true,
        continueStraight: false,
        profile: "driving-traffic",
        language: "en",
        testRoute: "",
        debug: true));
  }

  void printWrapped(String text) {
    final pattern = RegExp('.{1,800}'); // 800 is the size of each chunk
    pattern.allMatches(text).forEach((match) => print(match.group(0)));
  }
}

我的颤栗医生:

代码语言:javascript
运行
复制
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 1.22.0, on Linux, locale en_US.utf8)
 
[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Android Studio (version 4.0)
[✓] Connected device (1 available)

• No issues found!

我的公共关系:

代码语言:javascript
运行
复制
dependencies:
  flutter:
    sdk: flutter
  mapbox_navigation: ^1.0.4

我认为我在使用mapbox naviagtion包时忽略了一个步骤,但是我没有找到其他指定使用它的步骤

如果我错了,请注意我

谢谢你的阅读

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-03 16:04:36

我要结束这个问题,因为它似乎是一个错误的作者的软件包。我根本没有找到答案,所以我会尝试另一个包裹,希望它能成功。

否则我会辞职使用谷歌地图

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64551555

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档