撸代码
flutter环境和运行环境搭建好后就可以快乐撸代码了,对于学过面向对象java的菜鸟的我,都非常简单的。官方文档说不需要Dart语言和移动端编程经验,只需要有面向对象编程即可
flutter简介
flutter是一个跨平台的移动开发框架,使用Dart语言,他的目的时创建一个高性能,高稳定性,高帧率,低延迟的安卓和ios移动应用。并且有原生的应用一样的体验。
核心
其中框架有函数式响应、2D引擎渲染、直接可用的Widget库和各种开发工具。
Widget是每个Flutter应用的基础。mvc框架的原理是三层view,controller,Layou分开定义不一样,它是一致的
一个小部件可以定义为
- 一个结构性的元素。例如按钮或者菜单
- 一个元素的风格。例如字体和颜色
- 制定布局属性。例如padding内边距
- 也可以包含业务逻辑
以及其他
最后widget是经过组合使用的。每个小部件嵌在父类中,并且继承了父类的属性。并没有单独的application
组合大于继承的
例如控件中的Container容器小部件,他就是由以下几个widget组成LimitedBox ConstrainedBox
- Align
- padding
- DecoratedBox
- Transform
Container 源码
Widget build(BuildContext context) {
Widget current = child;
if (child == null && (constraints == null || !constraints.isTight)) {
current = new LimitedBox(
maxWidth: 0.0,
maxHeight: 0.0,
child: new ConstrainedBox(constraints: const BoxConstraints.expand())
);
}
if (alignment != null)
current = new Align(alignment: alignment, child: current);
final EdgeInsetsGeometry effectivePadding = _paddingIncludingDecoration;
if (effectivePadding != null)
current = new Padding(padding: effectivePadding, child: current);
if (decoration != null)
current = new DecoratedBox(decoration: decoration, child: current);
if (foregroundDecoration != null) {
current = new DecoratedBox(
decoration: foregroundDecoration,
position: DecorationPosition.foreground,
child: current
);
}
if (constraints != null)
current = new ConstrainedBox(constraints: constraints, child: current);
if (margin != null)
current = new Padding(padding: margin, child: current);
if (transform != null)
current = new Transform(transform: transform, child: current);
return current;
}
当然还有其他的控件,只学到这,慢慢补充