Dart4Flutter -01 – 变量, 类型和 函数bash
Dart4Flutter -拾遗01 - flutter-dart环境搭建ui
flutter入门 - 状态管理this
Flutter 入门-本地访问-MethodChannelspa
dart 版的hello world3d
main(List<String> args) {
print('Hello World');
}
复制代码
和Java语言相似,每一个dart程序都有一个main,是整个程序的入口。code
将程序保存到hello_world.dart
文件中,执行以下命令,就能够运行程序。
dart hello_world.dart
相似在JavaScript中同样,你可使用var关键字定义变量
main(List<String> args) {
var number = 42;
var name = 'Gurleen Sethi';
var salary = 150300.56;
var isDoorOpen = true;
}
复制代码
可是,和JavaScript不一样的是,在Dart2中,一旦你给变量赋值一种类型的值,就不能再赋值另外一种类型的值。Dart 能够自动从右边数据推断数据类型。
你也能够明确指定数据类型定义变量。
main(List<String> args) {
int number = 42;
String name = 'Gurleen Sethi';
double salary = 150300.56;
bool isDoorOpen = true;
}
复制代码
若是你不想改变变量所持有的值,能够用关键字final
或者const
声明。
main(List<String> args) {
final int number = 42;
const String name = 'Gurleen Sethi';
//Omit explicitly defining data types
final salary = 150300.56;
const isDoorOpen = true;
}
复制代码
final 和 const的不一样在于,const是编译时常量。例如,const变量在编译时必需要有一个值。例如,const PI = 3.14
,然而final变量只能被赋值一次,他不须要在编译时就赋值,能够在运行时赋值。
dart语言提供全部现代语言提供的全部基本数据类型。
main(List<String> args) {
//Numbers
int x = 100;
double y = 1.1;
int z = int.parse('10');
double d = double.parse('44.4');
//Strings
String s = 'This is a string';
String backslash = 'I can\'t speak';
//String interpolation
String interpolated = 'Value of x is $x'; //Prints: Value of x is 100
String interpolated2 = 'Value of s is ${s.toLowerCase()}'; //Prints: Value of s is this is a string
//Booleans
bool isDoorOpen = false;
}
复制代码
声明一个list很是的简单,能够简单使用方括号[]定义list。下面是list的经常使用操做。
main(List<String> args) {
var list = [1,2,3,4];
print(list); //Output: [1, 2, 3, 4]
//Length 长度
print(list.length);
//Selecting single value 获取单个值
print(list[1]); //Outout: 2
//Adding a value 添加值到list
list.add(10);
//Removing a single isntance of value 删除单个值
list.remove(3);
//Remove at a particular position 删除指定位置的值
list.removeAt(0);
}
复制代码
若是你想定义一个编译时常量list,例如,list的内容是不可改变的,可使用关键字const
.
main(List<String> args) {
var list = const [1,2,3,4];
}
复制代码
定义map也很简单。可使用花括号{}定义map。
main(List<String> args) {
var map = {
'key1': 'value1',
'key2': 'value2',
'key3': 'value3'
};
//Fetching the values 获取值
print(map['key1']); //Output: value1
print(map['test']); //Output: null
//Add a new value 添加值
map['key4'] = 'value4';
//Length 获取长度
print(map.length);
//Check if a key is present 检查是否存在
map.containsKey('value1');
//Get entries and values
var entries = map.entries;
var values = map.values;
}
复制代码
你也可使用map构造函数定义map。
main(List<String> args) {
var squares = new Map();
squares[4] = 16;
}
复制代码
若是你想定义编译时常量的map,可使用const
关键字。
main(List<String> args) {
var squares = const { //不能改变当前map的值
2: 4,
3: 9,
4: 16,
5: 25
};
}
复制代码
dart中的函数和JavaScript中有点相似。你须要定义就是函数的名字、返回值、参数。
main(List<String> args) {
var name = fullName('John', 'Doe');
print(name);
}
String fullName(String firstName, String lastName) {
return "$firstName $lastName";
}
复制代码
你也能够省略返回值类型,程序一样能够运行。
main(List<String> args) {
var name = fullName('John', 'Doe');
print(name);
}
fullName(String firstName, String lastName) {
return "$firstName $lastName";
}
复制代码
下面是定义一行函数的方法。
main(List<String> args) {
var name = fullName('John', 'Doe');
print(name);
}
fullName(String firstName, String lastName) => "$firstName $lastName";
复制代码
dart有个叫命名参数的东西。当你调用函数的时候,你必须指定参数的名字。要使用命名参数,能够将函数的参数包括在花括号{}内。
main(List<String> args) {
var name = fullName(firstName: 'John', lastName: 'Doe');
print(name);
}
fullName({String firstName, String lastName}) {
return "$firstName $lastName";
}
复制代码
若是你在调用命名参数的函数时,没有指定参数的名字,程序将崩溃。
你能够给函数的命名参数一个默认值。下面的例子给lastName一个默认值。
main(List<String> args) {
var name = fullName(firstName: 'John');
print(name);
}
fullName({String firstName, String lastName = "Lazy"}) {
return "$firstName $lastName";
}
复制代码
在dart中函数比较灵活,例如,你能够将函数当参数传递给另外一个函数。
main(List<String> args) {
out(printOutLoud);
}
out(void inner(String message)) {
inner('Message from inner function');
}
printOutLoud(String message) {
print(message.toUpperCase());
}
复制代码
这里定义一个函数名字为out
,须要一个函数参数。而后我定义一个名为printOutLoud
的函数,他所作的就是将字符串以大写的形式打印。
dart 也有匿名函数,因此上面的例子中不用预约一个函数,而是传递一个匿名函数。
main(List<String> args) {
out((message) {
print(message.toUpperCase());
});
}
out(void inner(String message)) {
inner('Message from inner function');
}
复制代码
另外一个匿名函数的例子。
main(List<String> args) {
var list = [1,2,3,4];
list.forEach((item) {
print(item);
});
}
复制代码
本教程结束。
下一讲 dart4flutter – 02 –控制流 和异常
参考