我在 flutter 开发文档中编写演示代码来显示电池电量。
但是代码不起作用,方法 channel 在调用时显示日志错误:
- 未处理的异常:MissingPluginException(在 channel samples.flutter.dev/battery 上找不到方法 getBatteryLevel 的实现)
请帮我!谢谢大家!
最佳答案
假设您在 native 应用程序中使用缓存的 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)
}
}
在您的应用程序的 Activity 中,获取 flutter 引擎并设置方法调用处理程序。 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.
}
}
}
}
}
关于android - 方法 channel 在 Flutter 模块中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56660099/