Flutter|flutter 学习笔记-1

flutter 架构 Embedder 操作系统适配层,实现渲染surface设置,线程设置及平台插件的适配
Engine主要包含skia Dart Text,实现渲染引擎,文字排版,事件处理,Dart运行时等功能。
FrameWork层是一个用Dark实现的UI sdk 包含动画,图形绘制,手势识别等功能。
flutter 计时器demo 工程结构
android:包含Android特定子工程
build:编译文件
ios:
lib
main.dart 运行入口文件
test
flutter_app_demo.iml
pubspec.lock
pubspec.yaml 管理第三方库及资源配置文件
flutter 一切核心皆widget
Dart 1.var 变量
未初始化的变量null
2.基本数据类型:
num bool string list map
num的子类: int, double-int bool string utf-16的字符串 list 数组对象

var arr = ["2","3","4"]; var arr = List.of([1,2,3]); arr.forEach((v)=> print('${v}'));

map
var map1 = {"name":"lishan"}; map[name] = "haha"; map.forEach((k,v)=> print('${k}:${v}')); ///Map遍历 ages.forEach((k, v) { print('$k $v'); }); Map ages2 = ages.map((k, v) { //迭代生成一个新Map return MapEntry(v, k); }); print(ages2); for (var key in ages.keys) { print('$key ${ages[key]}'); }

const
final
在 Dart 中,所有类型都是对象类型,都继承自顶层类型 Object,因此一切变量都是对象,数字、布尔值、函数和 null 也概莫能外;
函数
如果函数体只有一行表达式,
bool isZero(int number) => number == 0;
不支持重载
给参数增加{},以 paramName: value 方式指定调用参数,也就是可选命名参数;
给参数增加 [],则意味着这些参数是可以忽略的,也就是可选参数。
要达到可选命名参数的用法,那就在定义函数的时候给参数加上 {}
void enable1Flags({bool bold, bool hidden}) =>print("$bold , $hidden");
//定义可选命名参数时增加默认值
void enable2Flags({bool bold = true, bool hidden = false}) => print(“ b o l d , bold , bold,hidden”);
//可忽略的参数在函数定义时用[]符号指定
void enable3Flags(bool bold, [bool hidden]) => print(“ b o l d , bold , bold,hidden”);
//定义可忽略参数时增加默认值
void enable4Flags(bool bold, [bool hidden = false]) => print(“ b o l d , bold , bold,hidden”);
Dart 中并没有 public、protected、private 这些关键字,我们只要在声明变量与方法时,在前面加上" _ “即可作为 private 方法使用。如果不加” _ ",则默认为 public。不过,“_”的限制范围并不是类访问级别的,而是库访问级别。
继承 接口
运算符
?.p?.print()p is null skip ??=a??=value a 为null 则给a 赋值 ?? (a!=null)? a:b

继承 :继承父类意味着,子类由父类派生,会自动获取父类的成员变量和方法实现,子类可以根据需要覆写构造函数及父类方法;
接口:接口实现则意味着,子类获取到的仅仅是接口的成员变量符号和方法符号,需要重新实现成员变量,以及方法的声明和初始化,否则编译器会报错。
mixin(混入)–with 类似多继承
避免继承歧义问题,
class Coordiate with Point{}var yy = Coordiate(); print(yy is Point);

【Flutter|flutter 学习笔记-1】运算符
可以覆写或者自定义运算符

    推荐阅读