我们知道flutter使用的是dart语言,所以学习flutter之前最好学习一下dart。
一个简单的dart程序
// 函数的定义
printInteger(int aNumber) {
print('The number is $aNumber.');
}
main() {
var number = 42;
printInteger(number);//函数的调用
}
${expression} 的方式内嵌表达式。 如果表达式是一个标识符,则 {} 可以省略。看个例子
void main() {
var s = 'this is dart';
printString(s);
}
printString(String s) {
print('this is $s.');
print('this is ${s.toUpperCase()}');
}
运行结果为
this is this is dart.
this is THIS IS DART
概念
- 任何变量都是一个对象,并且每个对象都是类的一个实例。甚至数字,函数,和null也都是对象,所有的对象都继承Object类
- Dart 可以推断类型,如果要明确说明不需要任何类型, 需要使用特殊类型 dynamic
- Dart 支持泛型,比如 List (整数列表)或 List (任何类型的对象列表)。
- 与 Java 不同,Dart 没有关键字 “public” , “protected” 和 “private” 。 如果标识符以下划线(_)开头,则它相对于库是私有的。
关键字
下面是dart语言的一些关键字
变量
初始化一个变量
var name = '山大王';
name 变量的类型被推断为 String,当然还可以指定类型
String name = '山大王';
如果一个对象没有被严格的限制为一个类型,可以指定他为Object或dynamic类型
dynamic name = '山大王';
默认值
未被初始化的变量都有一个为null的默认值,即使变量是数字类型默认值也被初始化为null
int lineCount;
assert(lineCount == null);
Final and const
如果你不打算改变一个变量,使用final或者const,如果是类级别的需要加static,类似于java中的静态。const类似于C语言中经常定义的常数。 实例变量可以是 final 类型但不能是 const 类型,如果需要在编译时就固定变量的值,可以使用 const 类型变量。final和const都可以定义为一个常量,但const比final更严格,赋值给final的可以是一个变量,但赋值给const的必须是一个常量,举个例子
void main() {
final name = '山大王'; // 正确
const sex ='男';// 正确
// 正确,可以把一个变量name赋值给final定义的name1
final name1=name;
final sex1=sex;//正确
// 错误,不可以把一个变量赋值给const定义的name2,即使name被定义为final也不行
const name2=name;
const sex2=sex;//正确
}
所以上面的把final定义的name赋值给const定义的name2就会下面的错误