Flutter-runApp

2019-08-27  本文已影响0人  秋分落叶

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的桥梁

上一篇 下一篇

猜你喜欢

热点阅读