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】运算符
可以覆写或者自定义运算符
推荐阅读
- dart|Flutter 架构
- Android开发|移动端系统生物认证技术详解
- Flutter Provider状态管理框架
- 在 Flutter 使用 GetX 对话框
- Flutter开发|zsh: command not found: flutter
- IOS|Flutter运行Ios真机时报错(Failed to register observatory port with mDNS with error)
- dio拦截器|dio拦截器 flutter_Flutter 中 Dio 拦截器
- flutter|Flutter最酷炫瀑布流实现
- Flutter|Flutter 基于Dio的网络库封装(开源项目)