想要学习Dart语言的可以在 https://dartpad.cn/ 练习熟悉。活不多说,直接开始:
1、程序入口
在Dart里,每一个App都必须有一个顶级的 main() 函数作为应用程序的入口
void main() {
print("hello");// 控制台输出日志
}
2、变量
Dart是类型安全的,它使用静态类型检查和运行时的组合,检查以确保变量的值始终与变量的静态值匹配类型。尽管类型是必须的,但某些类型注释是可选的,因为Dart会执行类型推断。
在Dart中,未初始化的变量初始值为null(注意:数字在Dart中也被当成对象,所以带有数字类型的变量未初始化的值也为null)
void main() {
String a = '100';
var b ='100';
int c;
print(a);
print(b);
print(c);
}
--------------------
100
100
null
3、检查null或者0
在Dart中,只有布尔值true被视为true
从Dart 1.12 开始,null-aware运算符可以进行null检查,“?.” 运算符在左边为空的情况下会阻断右边的调用,“??” 主要作用是当表达是左边为null时为其设置默认值。
bool isConnected(a,b){
bool outConn = outgoing[a]?.contains(b) ?? false
bool inConn = incoming[a]?.contains(b) ?? false
return outConn || inConn
}
void main() {
print(null);
print(true??false);
print(false??false);
print(null??false);
}
-----------------------
null
true
false
false
4、异步编程
Dart 支持单线程执行,Dart使用Future来表示异步操作
async和await
async函数返回一个Future,函数的主体是稍后执行,await运算符用于等待Futrue:
getIp() async{
var url = 'https://httpbin.org/ip';
var request =await HttpRequest.request(url);
String ip = json.decode(request.responseText)['origin'];
print(ip);
}
5、声明式UI界面
什么是声明式UI ?
通常Android和ios的框架使用命令式UI编程的风格,也就是我们目前的手写界面,手动构建xml布局,然后在UI变更时使用对应的f方法进行变更。
Flutter 为了减轻开发人员在各种UI状态之间转换的编程负担,Flutter让开发人员描述当前的UI状态,并且不需要关系它如何过渡到框架。
6、导包
7、Flutter项目结构