在Android开发中,我们知道用户消息分为按键消息和触摸消息,对于TV应用,我们只考虑按键消息。
分析源码可以看出,Android是将按键的数据获取和消息处理放在Native层,并提供回调接口给应用层。由于Flutter框架也是Google团队写的,所以对于按键消息的处理方式,原理上是一样的,只不过为了实现跨平台,原先android native层扮演的角色变成了各个平台应用层按键消息回调接口,在此基础上,又做了一层消息封装,并将按键事件回调接口提供给Flutter UI层。
以android平台为例,首先我们从MainActivity开始分析,这个是应用的主界面。在flutter中,该类继承FlutterActivity,FlutterActivity存在于flutter专门为android系统打包的库里面,这个库叫flutter.jar,负责flutter与android建立联系。
这个库还有一个重要的类:FlutterView,flutter跨平台跨的就是界面,UI绘制不依赖系统组件,那么这个FlutterView就是将dart