Flutter-runApp

Flutter 中 runApp 启动入口其实是一个 WidgetsFlutterBinding ,它主要是通过 BindingBase 的子类 GestureBinding 、ServicesBinding 、 SchedulerBinding 、PaintingBinding 、SemanticsBinding 、 RendererBinding 、WidgetsBinding 等,通过 mixins 的组合而成的。

  1. WidgetsFlutterBinding
    WidgetsFlutterBinding混入了不少的其他的Binding

BindingBase 那些单一服务的混入类的基类

GestureBinding framework手势子系统的绑定,处理用户输入事件

ServicesBinding 接受平台的消息将他们转换成二进制消息,用于平台与flutter的通信

SchedulerBinding 调度系统,用于调用Transient callbacks(Window.onBeginFrame的回调)、Persistent callbacks(Window.onDrawFrame的回调)、Post-frame callbacks(在Frame结束时只会被调用一次,调用后会被系统移除,在Persistent callbacks后Window.onDrawFrame回调返回之前执行)

PaintingBinding 绘制库的绑定,主要处理图片缓存

实例:

void main() {
    runApp(FlutterReduxApp());
    //缓存个数 100
    PaintingBinding.instance.imageCache.maximumSize=100;
    //缓存大小 50m
    PaintingBinding.instance.imageCache.maximumSizeBytes= 50 << 20;
}

SemanticsBinding 语义化层与Flutter engine的桥梁,主要是辅助功能的底层支持

RendererBinding 渲染树与Flutter engine的桥梁

WidgetsBinding Widget层与Flutter engine的桥梁

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容