Dart 基础笔记
Flutter线上运行环境(PlayGround):
控制台输出
print("Hello Word")
变量
Dart是类型安全的 - 他使用静态类型检查和运行时的组合,检查以确保变量的值时钟鱼变量的静态值匹配类型。尽管类型是必须的,单某些类型的注释是可选的,因为Dart会执行类型推断。
创建和分配变量
在Dart中,变量必须是明确的,类型或系统能够解析的类型。
String name = 'dart';
var otherName = 'Dart';
默认值
在Dart中,未初始化的变量的初始值为null。
注意:数字在Dart中也没当成对象,所以只要是带有数字类型的未初始化的变量的值都是null
var name ;//==null
int x;//==null
检查null或零
只有布尔值“true”被视为true。
var myNull = null;
if (myNull == null){
print('use "== null" to check null');
}
var zero = 0;
if (zero == 0){
print('use " == 0 " to check zero');
}
Dart null 检查的最佳实践
null-aware 运算符
bool isConnected(a,b){
bool outConn = outgoing[a]?.contains(b) ?? false;
bool inConn = incoming[a]?.contains(b) ?? false;
return outConn || inConn;
}
`?.` 运算符在左边为null的情况下会阻断右边的调用,`??`运算符的主要作用是在左边表达式为null是为其设置默认值
对于表达式:
outgong[a]?.contains(b)
如果outgning
为 nul l或outgoing[a]
为 null 或contains(b)
为 null,都会导致表达式为 null。
Functions
Dart中不需要关键字定义方法
异步编程
Futures
Dart支持单线程执行。使用Future表示异步操作:
_getIPAddress(){
final url = 'http://.....';
HttpRequest.request(url).then((value){
print(json.decode(value.responseText)['origin']);
}).catchError((error) =>print(error))
}
async 和 await
async
函数声明定义了一个异步函数。
Dart中,async
函数返回一个Future
,函数的主体是稍后执行。await
运算符用于等待Future
:
_getIPAddress() async {
final url = 'https://.....';
var request = await HttpRequest.request(url);
String ip = json.decode(request.responseText)['origin'];
print(ip);
}