下载dart
选择stable,稳定版
安装dart,配置环境PATH加入,E:\flutter\Dart\dart-sdk\bin(安装路径)
打开CMD输入:
dart.exe --version
mac
fucel@Mac-Pro ~ % nano ~/.zshrc
export PUB_HOSTED_URL=https://pub.flutter-io.cn;
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
export PATH=/Users/fucel/flutter/flutter/bin:$PATH
安装成功
安装Visual Studio Code
安装插件dart,code runner
dart是可以按弱类型赋值的强类型
var num=19;类型信息在编译时确定为int
Dart中的基本数据类型:一切皆为对象,初始值都为NULL
- 数值型数据类型:包括整数(int)和双精度浮点数(double)两种。
- 布尔型数据类型:bool,只有两个值true和false。
- 字符串类型:String,表示一系列字符组成的文本。
- 列表类型:List,表示按照顺序排列的元素集合,可以包含多种数据类型。
- Map类型:Map,表示键值对的映射集合,其中键和值可以是任何类型的对象。
- Runes类型:Runes,表示一个UTF-32编码的Unicode字符序列。
- Symbols类型:Symbol,表示代码符号,常用于反射程序和符号表。
如果不想值被修改可以定义为
final x = 100;
const y = 80;
它们的区别在:const编译时值就要确定, final可以在运行时才确定。
final x = new DateTime.now();//没问题
const y = new DateTime.now();//报错
1,数值型数据类型
var num=19;
var str='hello word';字符串可以是单引号
//string转为int
var one = int.parse('1');
//string转为double
double d = double.parse('1.2');
//int转为string
var str = one.toString();
//double转为string
str = 3.1415926.toStringAsFixed(2);
print(str == '3.14');
2,字符串类型
var strX = "hello world";
//使用$符号,引用变量;
var strY = ('$strX,你好世界!');
print(strY);
//使用'''创建多行字符串
str = '''
第一行,
第二行,
第三行,
。。。。
''';
3,布尔型数据类型
//检查空字符串
str = '';
print(str.isEmpty);
//检查零值
var i = 0;
print(i <= 0);
//检查是否为null
var n;
print(n == null);
//检查NAN
n = 0 / 0;
print(n.isNaN);
4,列表类型
//列表
var l = [1, 2, 3];
print(l.length == 3);
//创建一个常量列表
var constList = const [1, 2, 3];
//constList[0] = 4;//编译不能通过
//扩展运算符...,将列表中的所有元素插入另一个列表,
var list1 = [1, 2, 3];
var list2 = [0, ...list1];
print(list2.length == 4);
//空值感知运算符?
var list3;
var list4 = [0, ...?list3];
print(list4.length == 1);
if和Collection(集合),使用它在if和for循环中构建集合
判断后添加元素,有没有可能回到过去?在这里自然是不可能。
var list5 = ['昨天', '今天', if (1 == 0) '回到过去'];
print(list5.length);
使用for
var list6 = [1, 2, 3];
var list7 = ['#0', for (var i in list6) '#$i'];
print(list7);
[#0, #1, #2, #3]
set,唯一的,无序的集合使用{}定义,加类型就是set,没加类型就是map
var name = <String>{};//创建一个set
set <String> n={};//创建一个set
var name1 = {};//创建一个map
//添加元素
name.add('张三');
name.add('李四');
//添加name中所有的元素
n.addAll(name);
Map 是一种常见的数据结构,用于存储键值对。每个键只能出现一次,但可以多次使用相同的值 ,您可以使用 {} 字面量或 Map 构造函数来创建一个 Map。以下是一个示例:
使用 {} 字面量创建 Map:
var map = {'name': 'John', 'age': 30};
使用 Map 构造函数创建 Map:
var map = Map<String, dynamic>();
map['name'] = 'John';
map['age'] = 30;
通过键访问值:
print(map['name']); // 输出:John
print(map['age']); // 输出:30
遍历 Map 中的键值对:
map.forEach((key, value) { print('$key: $value'); });
输出:
name: John age: 30
请注意,在 Dart 中,Map 的键可以是任何对象,而不仅仅是字符串类型。如果您需要确保 Map 中的键值对具有特定类型,请使用泛型参数,例如 Map<String, int>
表示键为字符串类型,值为整数类型的 Map。
5、Runes类型:Runes,表示一个UTF-32编码的Unicode字符序列
- Unicode转义序列
Unicode转义序列是以“\u”为前缀,后跟四个十六进制数字来表示一个字符的Unicode值。例如,要表示拉丁字母大写A(即字符'A'),可以写成'\u0041'。
- Unicode代码点表示法
Unicode代码点表示法是以“\u{”为前缀,后跟一个或多个十六进制数字来表示Unicode代码点的值。其中代码点可以由0-10FFFF之间的任何值组成。例如,要表示笑脸表情符号(即字符'😊'),可以写成'\u{1F60A}'。
var c1 = '\u{1f44f}';
print(c1);
Runes c2 = new Runes('\u2665 \u{1f605} \u{1f596} \u{1f60e} \u{1f44d}');
print(new String.fromCharCodes(c2));
👏
♥ 😅 🖖 😎 👍
在Dart中,switch case语句用于根据不同的情况执行不同的代码块,每个case语句后面必须跟着一个break
语句,否则会执行下一个case中的代码块。如果不需要执行任何代码,则可以使用default
语句。case语句只是常量,不能是变量或表达式
String grade = 'A';
switch (grade) {
case 'A':
print('优秀');
break;
case 'B':
print('良好');
break;
case 'C':
print('及格');
break;
case 'D':
print('不及格');
break;
default:
print('无效的成绩');
}
for-in
循环是一种方便快捷的遍历迭代器、集合和映射等对象的方式。它使用一种简洁的语法,使得代码易于编写和理解。
var numbers = [1, 2, 3, 4];
for (var n in numbers) {
print(n);
}