接下来的一段时间,我会推一些学习Flutter过程中的笔记,取需.
1 . Dart 基础语法
1.1 hello world
先来看个hello world,入口依然是main方法.
printInteger(int a) { print('Hello world, this is $a.'); } main() { var number = 2019; printInteger(number); }
1.2 变量与类型
定义变量使用var或者具体类型来定义 未初始化的变量的值都是null 所有东西都是对象,都是继承自Object.包括数字、布尔值、函数和 null 内置了一些基本数据类型num、bool、String、List 和 Map int和double都继承自num 常见的运算符也是继承自num Dart 的 String 由 UTF-16 的字符串组成,可以使用$或或${xx}来把表达式放入字符串中 List和Map,可以显式指定元素类型,也可以推断 常量定义使用final(运行时常量)或const(编译期常量) 尽量为变量指定类型,这样编辑器额编译器能更好的理解你的意图var a = 1; int b = 1; num c = 3; int x = 1; int hex = 0xEEADBEEF; double y = 1.1; double exponents = 1.13e5; int roundY = y.round(); //List var arr1 = ["Tom", "Andy", "Jack"]; var arr3 = <String>["Tom", "Andy", "Jack"]; var arr2 = List.of([1, 2, 3]); var arr4 = List<int>.of([1, 2, 3]); arr2.add(499); arr2.forEach((v) => print(v)); //Map var map1 = {"name": "Tom", "sex": "male"}; var map2 = new Map(); //添加或修改 map2["name"] = "Tom"; map2["name"] = "Tom22"; map2["sex"] = "male"; print(map2); map2.forEach((k, v) => print('k = $k v=$v'));
1.3 函数
函数是一个对象,类型Function,可以定义为变量 函数可以只写一句代码,不要 {} 提供了可选命名参数和可选参数 返回值类型可以省略void main() { Function f = isZero; int x = 10; int y = 10; printInfo(x, f); printInfo(y, f); enable1Flags(bold: true); } bool isZero(int a) { return a == 0; } bool isNull(var a) => a == null; void printInfo(int number, Function check) { print('$number is zero: ${check(number)}'); } //可选命名参数 Flutter 中大量使用 void enable1Flags({bool bold, bool hidden}) => print("$bold $hidden"); //可选命名参数 加默认值 void enable2Flags({bool bold = true, bool hidden = false}) => print('$bold $hidden'); //可忽略参数,也可以加默认值 void enable3Flags(bool bold, [bool hidden]) => print("$bold $hidden"); //返回值类型 省略 price() { double sum = 0.0; for (var i in booking) { sum += i.price; } return sum; }
1.4 类
没有public、protected、private这些修饰符,可以在变量和方法前面加 _ , 「加 _ 的限制范围并不是类级别的,而是库访问级别」 . 对象调用方法时可以加 ? ,加了之后如果对象是空,则跳过 类A可以implements另一个类B,这时相当于implements B的方法和字段. 当类A需要复用类B的方法时,可以使用混入(Mixin). class A with B{} a ?? b a不为null,返回a.否则返回b.void main() { //类 都是继承自Object //无修饰符关键字 变量与方法前面加"_"则表示private,不加则为public //加"_"的限制范围并不是类访问级别的,而是库访问级别的 Test test = Test(); print(test.b); var p = Point(1, 2); p.printInfo(); Point.factor = 10; Point.printZValue(); //为空时跳过执行 Point?.printZValue(); var p2 = Point2.test(1); } class Test { int _a = 1; int b = 2; } class Point { num x, y; static num factor = 0; //语法糖,等同于在函数体内:this.x = x;this.y = y; Point(this.x, this.y); void printInfo() => print('($x,$y)'); static void printZValue() => print('factor=$factor'); } class Point2 { num x, y, z; //z也得到了初始化 Point2(this.x, this.y) : z = 0; //重定向构造函数 Point2.test(num x) : this(x, 0); } class Point3 { num x = 0, y = 0; void printInfo() => print('($x,$y)'); } class Vector extends Point3 { num z = 0; //覆写了父类的方法 @override void printInfo() => print('x = $x,y=$y'); } class Coordinate implements Point3 { //成员变量需要重新声明 num x = 0, y = 0; //成员函数需要重新实现 @override void printInfo() {} } //混入Mixin 可以视为具有实现方法的接口 //非继承的方法,使用其他类中的变量与方法 class Coordinate2 with Point3 {}
查看更多关于Flutter 入门笔记(Part 0) Dart入门知识的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did129229