Dark 安装 直接使用FlutterSDK环境进行安装
Vscode 安装 Flutter 插件 将sdk下载到sdk 目录下 同时将sdk的环境变量放到里面
E:\SDK\flutter\flutter\bin
文件后缀以.dart 后缀结尾
入口: dart 文件的入口方法为main方法
分号: dart 文件绝大部分语句都需要结尾添加分号 花括号不添加分号
void main (List<String> args) {
print("HelloWorld");
}正式学习!
var 变量
var 第一次声明之后 变量类型就固定了 不允许更改类型了
语法 和 javaScript 一样
var 变量名 = 值/表达式
代码
void main (List<String> args) {
var age = 20; //
print(age);
var age = 22; // 不允许第二次声明
print(age);
}
test.dart:6:9: Error: 'age' is already declared in this scope.
test.dart:6
var age = 22;
^^^
test.dart:2:9: Context: Previous declaration of 'age'.
test.dart:2
var age = 20;
^^^
Exited (254).const 常量
const表达式中不允许有变量值
const 编译时就已经定死 不能修改
const 常量声明之后不允许更改
void main (List<String> args) {
var num1 = 3.1415926;
const num = num1; // 此处会报错
const length = 2 * num * 10;
print(length);
}final 常量
场景 当我们需要当前时间作为唯一的操作时间,时间一旦被确定就不能更改
final 是运行时赋值后不允许修改
关键字 final
语法 final 属性名 = 值/表达式
void main (List<String> args) {
final time = DateTime.now();
print(time);
}Dart 中的常用数据类型
String 字符串
关键字 String 别名 字符串
语法 String 属性名 = "文本内容"
可以被修改
void main (List<String> args) {
String day = "今天是个好日子";
print(day);
day = "今天糟糕透了";
print(day);
}模板字符串
String 属性名 = ‘文本内容$变量名’ 或者 ‘文本内容${变量名}’
更推荐第二种写法
void main (List<String> args) {
String day = "今天是个好日子";
print(day);
day = "今天糟糕透了";
print(day);
var time = DateTime.now();
String text = '现在是${time},我必须立即赶到战场!';
print(text);
}int / num / double 数字类型
区分
int 纯整数类型
num 可整数 可以小数
double 只小数
int 不能直接等于 double 需要使用下面的方法进行间接赋值
使用 .toInt .toDouble 进行间接赋值
double 和 int 之间不能直接赋值
num 不能直接给 double 赋值
double 可直接给 num 赋值
void main (List<String> args) {
int friendCount = 3;
print('我有${friendCount}个好兄弟');
num rest = 1.8;
print('我有${rest}个月假期');
double appleCount = 4.1747;
// friendCount = appleCount; // 不允许直接赋值
friendCount = appleCount.toInt();
}bool 布尔类型
关键字 bool
语法 bool 变量名 = true / flase
List 列表类型
关键字List
语法 List
void main (List<String> args) {
List Student = ['赵三','李四','王五'];
print(Student);
}List 常用的操作方法
第一个元素 .farst
最后一个元素 .last
是否为空 .isEmpy
尾部添加 .add()
尾部添加一个列表 .addAll()
删除满足内容的第一个 .remove()
删除最后一个 removeLast()
删除索引范围内数据 removeRange (strat,end)
end 不在范围内
循环 forEach((item) {});
void main (List<String> args) {
List Student = ['赵三','李四','王五'];
Student.forEach((item){
print(item);
});
}是否都满足条件 every((item) {return 布尔值});
void main (List<String> args) {
List Student = ['赵三','李四','王五'];
print(Student.every((item) {
return item.toString().startsWith("赵");
} ));
}筛选出满足条件的数据 where((item) {return 布尔值} );
void main (List<String> args) {
List Student = ['赵三','赵四','赵五'];
print(Student.where((item){
return item.toString().startsWith("赵");
}));
}列表长度 .lenght
Map 类型
类似js中的键值对 json数据
void main (List<String> args) {
Map transMap = {
"lunch" : '午饭',
"morning" : '早上',
"hello" : '你好'
};
print(transMap);
String value = transMap["lunch"]; // 查找
print(value);
transMap["hello"] = "clalio"; // 修改
print(transMap);
}
循环 forEach
void main (List<String> args) {
Map transMap = {
"lunch" : '午饭',
"morning" : '早上',
"hello" : '你好'
};
transMap.forEach((key,vlaue){
print('正在打印$key,$vlaue');
});
}添加一个字典 .addAll
transMap.addAll({"fine":"非常好"});检查是否包含某个key .containsKey
transMap.containsKey("fine"); // true / false删除某个key .remove
transMap.remove("fine"); 清空 .key
transMap.clear(); dynamic 动态类型
允许自由改变类型 绕过编译时的静态检查