背景描述:是一个安卓和flutter混合开发的项目。
我有一个flutter的页面,在项目中的两个场景中使用到,其中都涉及了和原生安卓端的交互(showToast),第一处是安卓端直接嵌入这个页面,另一个是在flutter里面作为一部分使用。
问题在于,第一个页面里,能正确的调用安卓里的showToast方法,但是也报错。
E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method showToast on channel androidtoflutter/cowquery)
#0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:314:7)
<asynchronous suspension>
#1 _CowQuery.getCowInfo (package:cowflutter/cowQuery.dart:47:21)
<asynchronous suspension>
#2 _CowQuery.platformCallHandler (package:cowflutter/cowQuery.dart:195:9)
<asynchronous suspension>
#3 MethodChannel._handleAsMethodCall (package:flutter/src/services/platform_channel.dart:397:55)
<asynchronous suspension>
#4 MethodChannel.setMethodCallHandler.<anonymous closure> (package:flutter/src/services/platform_channel.dart:365:54)
#5 _DefaultBinaryMessenger.handlePlatformMessage (package:flutter/src/services/binary_messenger.dart:110:33)
<asynchronous suspension>
#6 _invoke3.<anonymous closure> (dart:ui/hooks.dart:282:15)
#7 _rootRun (dart:async/zone.dart:1124:13)
#8 _CustomZone.run (dart:async/zone.dart:1021:19)
#9 _CustomZone.runGuarded (dart:async/zone.dart:923:7)
#10 _invoke3 (dart:ui/hooks.dart:281:10)
#11 _dispatchPlatformMessage (dart:ui/hooks.dart:143:5)
然后作为flutter Widget中的一部分的使用中,没有显示toast,同时报错如下:
E/flutter: [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: MissingPluginException(No implementation found for method showToast on channel androidtoflutter/cowquery)
#0 MethodChannel.invokeMethod (package:flutter/src/services/platform_channel.dart:314:7)
<asynchronous suspension>
#1 _CowQuery.getCowInfo (package:cowflutter/cowQuery.dart:47:21)
<asynchronous suspension>
#2 _CowQuery.initState (package:cowflutter/cowQuery.dart:235:9)
#3 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4061:58)
#4 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3912:5)
#5 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3094:14)
#6 Element.updateChild (package:flutter/src/widgets/framework.dart:2897:12)
#7 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3954:16)
#8 Element.rebuild (package:flutter/src/widgets/framework.dart:3731:5)
#9 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3917:5)
#10 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3912:5)
#11 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3094:14)
#12 Element.updateChild (package:flutter/src/widgets/framework.dart:2897:12)
#13 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5120:14)
#14 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3094:14)
#15 Element.updateChild (package:flutter/src/widgets/framework.dart:2897:12)
#16 SingleChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:5120:14)
#17 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3094:14)
#18 Element.updateChild (package:flutter/src/widgets/framework.dart:2897:12)
#19 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3954:16)
#20 Element.rebuild (package:flutter/src/widgets/framework.dart:3731:5)
#21 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3917:5)
#22 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3912:5)
#23 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3094:14)
#24 Element.updateChild (package:flutter/src/widgets/framework.dart:2897:12)
#25 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3954:16)
#26 Element.rebuild (package:flutter/src/widgets/framework.dart:3731:5)
#27 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3917:5)
#28 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3912:5)
#29 ParentDataElement.mount (package:flutter/src/widgets/framework.dart:4307:11)
#30 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3094:14)
#31 Element.updateChild (package:flutter/src/widgets/framework.dart:2897:12)
#32 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3954:16)
#33 Element.rebuild (package:flutter/src/widgets/framework.dart:3731:5)
#34 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3917:5)
#35 StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:4081:11)
#36 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3912:5)
#37 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3094:14)
#38 Element.updateChild (package:flutter/src/widgets/framework.dart:2897:12)
#39 ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:3954:16)
#40 Element.rebuild (package:flutter/src/widgets/framework.dart:3731:5)
#41 ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:3917:5)
#42 ComponentElement.mount (package:flutter/src/widgets/framework.dart:3912:5)
#43 Element.inflateWidget (package:flutter/src/widgets/framework.dart:3094:14)
#44 Element.updateChild (package:flutter/src/widgets/framework.dart:2897:12)
#45 SliverMultiBoxAdaptorElement.updat
基本一致,都是MissingPluginException(No implementation found for method showToast on channel androidtoflutter/cowquery)错误,但是行数不一样?
其实只要能显示toast就行,即使报错也没事,但是很奇怪,就是一个页面,使用场景不同,结果也不一样,限于才疏学浅,不知道原因和解决办法,期待路过大牛多多指教!感谢!!!
是我智障了。两个场景的activity不一样。两个地方都要有channel的声明。不同页面的channel不能串通。