Flutter 中 runApp 启动入口其实是一个 WidgetsFlutterBinding ,它主要是通过 BindingBase 的子类 GestureBinding 、ServicesBinding 、 SchedulerBinding 、PaintingBinding 、SemanticsBinding 、 RendererBinding 、WidgetsBinding 等,通过 mixins 的组合而成的。
- 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的桥梁
网友评论