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

var 变量
未初始化的变量null
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}')); 

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 , hidden”);
//可忽略的参数在函数定义时用[]符号指定
void enable3Flags(bool bold, [bool hidden]) => print(“ b o l d , bold , hidden”);
//定义可忽略参数时增加默认值
void enable4Flags(bool bold, [bool hidden = false]) => print(“ b o l d , 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);

运算符
可以覆写或者自定义运算符

发布了58 篇原创文章 · 获赞 1 · 访问量 6869

猜你喜欢

转载自blog.csdn.net/chentaishan/article/details/103229567