在前面我们已经介绍过Flutter的开发语言是Dart,所以本节我们主要讲下Dart的基本语法,如果需要深究Dart,还需要查阅其他相关资料进行学习。
Dart语言入门成本还是比较低,如果有编程经验的同学能很快入门。废话不多说,下面我们就从基本的开始进行学习。
一、语言特性
- Dart所有的东西都是对象, 即使是数字numbers、函数function、null也都是对象,所有的对象都继承自Object类。
- Dart动态类型语言, 尽量给变量定义一个类型,会更安全,没有显示定义类型的变量在 debug 模式下会类型会是 dynamic(动态的)。
- Dart 在 running 之前解析你的所有代码,指定数据类型和编译时的常量,可以提高运行速度。
- Dart中的类和接口是统一的,类即接口,你可以继承一个类,也可以实现一个类(接口),自然也包含了良好的面向对象和并发编程的支持。
- Dart 提供了顶级函数(如:main())。
- Dart 没有 public、private、protected 这些关键字,变量名以”_”开头意味着对它的 lib 是私有的。
- 没有初始化的变量都会被赋予默认值 null。
- final的值只能被设定一次。const 是一个编译时的常量,可以通过 const 来创建常量值,var c=const[];,这里 c 还是一个变量,只是被赋值了一个常量值,它还是可以赋其它值。实例变量可以是 final,但不能是 const。
- 编程语言并不是孤立存在的,Dart也是这样,他由语言规范、虚拟机、类库和工具等组成:
- SDK:SDK 包含 Dart VM、dart2js、Pub、库和工具。
- Dartium:内嵌 Dart VM 的 Chromium ,可以在浏览器中直接执行 dart 代码。
- Dart2js:将 Dart 代码编译为 JavaScript 的工具。
- Dart Editor:基于 Eclipse 的全功能 IDE,并包含以上所有工具。支持代码补全、代码导航、快速修正、重构、调试等功能。
二、关键字
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|
abstract | as | assert | async | await | break | case | catch |
class | const | continue | covariant | default | deferred | do | dynamic |
else | enum | export | external | extends | factory | false | final |
finally | for | Function | get | hide | if | implements | import |
in | interface | is | library | mixin | new | null | on |
operator | part | rethrow | return | set | show | static | super |
switch | sync | this | throw | true | try | typedef | var |
void | while | with | yield | - | - | - | - |
三、变量和常量
1、变量的声明
可以使用var、Object或dynamic,没有指定类型的变量,系统会根据赋值的类型来决定该变量的类型
var name = "Zhang";
print(name);//Zhang,字符串
Object age = 20;
print(age);//20,Int
dynamic sex = "男";
print(sex);//男,字符串
注意:使用var定义的变量,后面是不能重新赋值不同类型的值,也就是说类型不能变。其他两种定义的变量,后续是可以变更值的类型。
```dart
var name = "Zhang";
print(name);
name = "Hai"; //这样是可以的
print(name);
name = 1;//这样就会报错
print(name);
2、显式声明变量类型
int money = 1;
print(money);//1
String address = "chengdu";
print(address);//chengdu
bool is_boy = true;
print(is_boy);//true
注意:显式声明的变量,后续也不能更改值的类型。
3、变量的默认值
在Dart中,所以没有赋值的变量的默认值都是null,如int、String、bool等
int money;
print(money);//null
String address;
print(address); //null
bool is_boy;
print(is_boy);//null
4、final 和 const
- 4.1、如果你不想改变一个变量的值,那么就可以使用Final和const来定义。区别在于,const是编译时常量,final是运行时常量,值可以被复制一次。如下:
var age = 10;
final g_age = age; //值可以从其他变量来
print(g_age);//10
const sex = "男";//值必须是固定的
print(sex);//男
//在后面去设置两个常量的值,就会
- 4.2、常量不能跟var同时使用
//会提示:Expected an identifier,
//因为var是用来修饰变量的,而final修饰的变量称之为常量(不能改变,只能赋值一次),所以不能这么混合使用
final var age = true;
//这一句提示这个:The const variable 'var' must be initialized
//The name 'var' is already defined.
const var name= 'Zhang';
- 4.3、如果是类级别的常量,需要使用static const
void main() {
(new Test()).main();
}
class Test {
static const name = "test";
main() {
print(name);
}
}
四、数据类型
1、num类型
num是数字类型的父类,它下面有两个子类int和double
//整型
int a = 1;
print(a);//1
//字符串数字转整数
int b = int.parse('111');
print(b);//111
//浮点类型
double c = 10;
print(c);//10.0
//字符串转浮点
double d = double.parse('12');
print(d);//12.0
//整数转字符串
String e = 100.toString();
print(e+"-string");//100-string
//浮点数转整数
String f = 123.123.toString();
print(f+'-string');//123.123-string
//整数或浮点数保留几位小数转成字符串,并且会四舍五入
String g = 123.toStringAsFixed(3);
print(g+'-string');//123.000-string
String h = 123.1367.toStringAsFixed(3);
print(h+'-string');//123.137-string
2、String类型
- Dart里面的String是一系列UTF-16代码单元
- 可以使用单引号或双引号来创建一个字符串
- 单引号或者双引号里面嵌套使用引号
- 可以使用${表达式}将表达式的值放入字符串中
- 字符串拼接使用“+”
//双引号
String str_1 = "ChengDu";
print(str_1);//ChengDu
//单引号
String str_2 = "ShangHai";
print(str_2);//ShangHai
//字符串拼接使用+号
print(str_1+str_2);//ChengDuShangHai
//双引号中有单引号
String str_3 = "Hello,'XiaoHai',hi917";
print(str_3);//Hello,'XiaoHai',hi917
//单引号中签到双引号
String str_4 = 'Hello,"XiaoHai",hi917';
print(str_4);//Hello,"XiaoHai",hi917
//表达式
String str_5 = "${str_3.toUpperCase()},haha";
print(str_5);//HELLO,'XIAOHAI',HI917,haha
参考文档:
https://blog.csdn.net/lyh1299259684/article/details/80526492
https://www.jianshu.com/p/9e5f4c81cc7d