Flutter
Dart 环境搭建
使用 vscode 开发 flutter 项目需要装Flutter和Dart插件(另外再加一个 code runner 插件,方便运行);
下载 Dart SDK,配置环境变量;
官网下载地址:https://dart.dev/get-dart/archive
;
去终端查看一下版本验证是否配置环境变量成功:dart --version
;
运行案例
dart 有个入口函数,main函数
并且一行代码结尾要用分号结束
main() {
print("hello");
}
输出要是有乱码重启 vscode 即可
声明变量
- 明确声明
- 类型推导
- 动态类型
明确类型
dart 是一门强类型的语言
void main(List<String> args) {
String foo = 'test';
int num = 1;
}
类型推导
- var
- const
- final
- dynamic
var、const、final
const 和 final 声明的变量不可以重新赋值
void main(List<String> args) {
var foo = 'test';
const foo1 = 'test';
final foo2 = 'test';
}
const 和 final 区别
const 必须直接赋值常量,final 可以通过运行时赋值
void main(List<String> args) {
const foo1 = test();// 报错
final foo2 = test();// 可以
}
int test() {
return 10;
}
dynamic
明确类型和类型推导中var、const、final声明的类型都是不可以改变的,而dynamic就可以;
开发中尽量少用 dynamic 类型,存在类型潜在危险
void main(List<String> args) {
dynamic foo = 'test';
foo = 123;
}
类型
- 数字类型 int、double
- 布尔类型 bool
- 字符串 String
- 集合类型 List、Set、Map
bool 类型注意
dart 中没有 非 0 即真 的说法
void main(List<String> args) {
var foo = 'test';
// 错误的写法
if(foo) {
print(foo);
}
// 这样写
if(foo != null) {
print(foo);
}
}
字符串 String
- 单双引号
- 三引号,可以换行
void main(List<String> args) {
var foo = 'test';
var foo1 = "test";
var foo2 = '''
abc
cba
'''
}
拼接
一般是**$**这样,当$直接跟一个变量时是可以省略的;
要是跟表达式就不可以省略;
void main(List<String> args) {
final name = 'zsf';
final age = 18;
print("name:$name age:$age");
print("${name.runtimeType}");
}
集合类型
- List,类似数组
- Set,元素唯一且无序
- Map,键值对
void main(List<String> args) {
List<String> names = ['zsf', 'kebe', 'zsf'];
// Set一般应用于Lsit的去重
Set<int> nums = {101, 111};
List<String> name1 = List.from(Set.from(names));
print(name1); // [zsf, kobe]
Map<String, dynamic> info = {
'name': 'zsf',
'age': 18,
};
}