非移动端开发也需要知道的一点小知识,Dart语言四不像(一)
一直做web端开发,还没做过针对安装在手机端的移动应用,flutter是google推出并开源的移动应用开发框架,可跨平台开发,最近几年发展很迅速。再看看手机,装满了各种App,哪个商家、公司没有自己的移动端应用,那就有点奥特了。
特意看了两本书,一本电子书《Flutter实战》电子书 (flutterchina.club),一本实体书《Flutter从0基础到App上线》。通过这两本书,对移动端app开发的发展路程有了大致了解。
移动开发阶段
移动开发主要经历两个阶段,第一阶段原生开发,第二阶段跨平台开发,也就是所谓的混合开发,这里把移动web app排除在外。跨平台开发之所以叫混合开发,是因为在调用原生平台功能上,还是需要对接原生开发的。对接原生开发调用类似于摄像头等原生控件的调用。既然是跨平台开发,为什么还要用原生调用,那是因为混合开发语言与原生调用无论是性能上还是用户体验上都差的太远。至于差的多远,那就需要深入的学习混合开发才能理解的到。
最近比较流行的混合开发,就是flutter框架了,flutter框架是基于dart语言开发的。
dart数据类型
常用的一些变量、方法的使用,流程的判断,在这里就不举例了,只写一些特别的。
String类型另类使用
String stuName = "小明\n小李\n张三";
// 还可以这样写:
String stuName = """
小明
小李
张三
""";
print(stuName);
关键字var
var name="test",
在dart语言里,变量的声明可以使用关键字var,var是在JavaScript里面使用的,这个写法借鉴JavaScript,var相当于不指定变量类型。
关键字 dynamic
dynamic的用法同var,声明的变量可以在后期改变赋值类型。dynamic声明的对象编译器会提供所有可能的组合。
方法不指定返回类型,也可返回数据,返回数据默认类型为dynamic。
关键字 Object
Object是Dart所有对象的根基类,声明的变量可以在后期改变赋值类型。Object声明的对象只能使用Object的属性与方法, 否则编译器会报错。
箭头语法 =>
String getName()=> "test";
如果一个方法很短,可以直接使用箭头语法,箭头语法=>相当于return。
参数引用$
String name = "小明";
print("Your name is $name ");
在字符串中加入变量时,可以直接使用$符号进行引用。
可选命名参数{}
String getName({name:"test"}){
if(name != "test"){
return name;
}else{
return "测试";
}
}
可选位置参数[]
String getName([String name=“您好”]){
return "$name,欢迎您的使用!";
}
可选命名参数和可选位置参数不可同时使用,必须作为最后一个参数出现。
函数作为变量
var say = (str){
print(str);
};
say("hi world");
函数作为参数传递
void execute(var callback) {
callback();
}
execute(() => print("xxx"));
这两种写法,是不是在JavaScript里面常用呀?
条件运算符
// 三目运算符号 条件1 ?表达式1 :表达式2;
aa ? 1 : 2;
// 两目运算符 表达式1 ?? 表达式2;
aa == null ?? bb == null;
条件成员访问符 ?.
// 如果左边的对象不是null,则返回右边的值;反之,则返回null。
person?.person.name;
// person对象不为null,返回person.name,否则返回null。
级联访问符..
new Person()..setName("小明")..setSex(1).
使用级联访问符,调用更简单,代码更简洁。
更多精彩未完待续~!