1.dart中有个特殊的定义常量的关键字final,类同于const
区别是final是运行时常量,可以定义DateTime.Now()/方法等为常量,而const不行,
Final是惰性初始化,在运行时第一次使用前才初始化。
2.string 类型的字符串可以用三个单引号(或三个双引号)圈起来,这样支持换行和格式保留,如下图
3.一种新的字符串拼接方式$变量名(传统用+拼接也可以用)
4.关于字符串换行等特殊字符处理,字符串前加上r可以保留特殊字符
5.数组的定义可以不指定类型,也可以指定类型,两种for循环,foreach
6.合并数组,有个独特的方法,...或...?
7.List.filled(固定长度集合,创建后可以修改元素,不能添加删减元素)
8.取整 a~/b
9.b??=10 此赋值运算符只有b为空的时候才赋值,如果b有值则不赋值
10.number类型 有个方法isNaN 判断是否非数值
11.Set 无序的唯一集合,重复的元素不会被添加
Map,无序的key-value集合,类似dictionary,添加单项用putIfAbsent,多个用addAll
12.dart允许方法嵌套,方法内的方法作用域仅在该方法内
13.可选参数在[可选参数1=默认值,可选参数2=默认值]中定义,在必要参数的后面定义
命名参数,跟可选参数类似,区别是括号由[ ]变成{ },方便查阅参数,提升代码阅读性
14.遍历打印简写
15.箭头函数和自执行方法。
箭头函数类似C#中的lambda中的goes to ,区别是后面只能有一句语句
自执行方法跟js自执行函数类似
16.跟js一样的闭包
17.没有 public等访问修饰符,但有文件内私有变量,不同文件类的私有变量不可直接访问,同一文件内不同文件的私有变量可以访问;私有方法的访问也一样
18.get set
类似C#中的get set方法,可以直接使用
19.级联操作,与方法,用 .. 链接同一对象不同操作
20.类继承关键词 extends 子类 extends 父类
21.子类继承父类 C#中的base关键字在dart中是super
22.实现接口的关键词Implements ;一般没有interface接口,直接定义abstract抽象类当做接口
23.Mixins 组合 混合类会‘继承’父类的所有属性,方法等 混合非多继承;混合类没有构造函数,同名方法后继承的会覆盖先继承的;不能混合继承子类
24.dart三种引入库的方式:
24.1引入自定义库:
Import ‘自定义类名.dart’
import 'TestClass.dart';
24.2引入系统内置库:
Import ‘dart:系统库名’
import "dart:io";
24.3引入第三方:类似于nuget包
第三方包平台:
https://pub.dev/packages
https://pub.flutter-io.cn/packages
https://pub.dartlang.org/flutter/
1)需要在自己项目根目录新建个pubspec.yaml
2)在pubspec .yaml文件然后配置名称、描述、依赖等信息,如下图
3)运行dart pub get ,这一步可能很卡,因为包源在国外
可以通过配置国内的镜像包源环境变量,重启项目解决:
FLUTTER_STORAGE_BASE_URL = https://storage.flutter-io.cn
PUB_HOSTED_URL = https://pub.flutter-io.cn
4)项目中引入库import ' package :http/http.dart' as http;
25.异步方法 async 在方法名称后面写