我在flutter开发文档中编写演示代码以显示电池电量。 但是代码不起作用,方法通道在调用时显示日志错误: -未处理的异常:MissingPluginException(在通道samples.flutter.dev/battery上未找到方法getBatteryLevel的实现) 请帮我!谢谢大家!
答案 0 :(得分:0)
假设您在本机应用程序中使用缓存的flutter引擎。
您的应用程序类应设置FlutterPluginCache。
class Application : MultiDexApplication() {
lateinit var flutterEngine : FlutterEngine
override fun onCreate() {
super.onCreate()
// Instantiate a FlutterEngine.
flutterEngine = FlutterEngine(this)
// Start executing Dart code to pre-warm the FlutterEngine.
flutterEngine.dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
)
// Cache the FlutterEngine to be used by FlutterActivity.
FlutterEngineCache
.getInstance()
.put("flutter_engine_id", flutterEngine)
}
}
在应用程序的活动中,获取启动引擎并设置方法调用处理程序。
class FlutterDemoActivity : FlutterActivity() {
private val CHANNEL = "samples.flutter.dev/battery"
private val flutter_engine_id = "flutter_engine_id"
@SuppressLint("SetTextI18n")
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_flutter_demo)
//Get your flutter engine using engine id.
val engine = FlutterEngineCache.getInstance().get(flutter_engine_id)
engine?.let{
//Set method call handler to that engine.
MethodChannel(it.dartExecutor.binaryMessenger,
CHANNEL).setMethodCallHandler {
call, result ->
if(call.method=="getBatteryLevel"){
result.success(89) //send whatever you need here.
}
}
}
}
}
答案 1 :(得分:0)
由于没有有关代码的详细信息,因此我假设您传递的是正确的方法名称和正确的通道名称。确保您的Android本机代码中的FlutterActivity在任何时间都不会被破坏。方法频道使用flutter引擎来调用android本机代码,以防万一FlutterActivity被销毁了。