Dart
Dart介绍:
Dart是由谷歌开发的计算机编程语言,它可以被用于web、服务器、移动应用 和物联网等领域的开发。
Dart诞生于2011年,号称要取代JavaScript。但是过去的几年中一直不温不火。直到Flutter的出现现在被人们重新重视。
要学Flutter的话我们必须首先得会Dart。官网
Dart 变量:
dart是一个强大的脚本类语言,可以不预先定义变量类型 ,自动会类型推倒
dart中定义变量可以通过var关键字可以通过类型来申明变量如:
var str='this is var';
String str='this is var';
int str=123;
Dart 常量: final 和 const修饰符
- const: 值不变 一开始就得赋值
- final : 可以开始不赋值 只能赋一次 ; 而final不仅有const的编译时常量的特性,最重要的它是运行时常量,并且final是惰性初始化,即在运行时第一次使用前才初始化,永远不改量的量,请使用final或const修饰它,而不是使用var或其他变量类型。
// final 常量
// final PI=3.14159;
// PI=124214.214124; //错误写法
// print(PI);
final a=new DateTime.now();
print(a); //2022-07-07 14:27:23.856542
//const a=new DateTime.now(); //报错了
Dart中的数据类型:
Numbers(数值): int double
void main(){
//1、int 必须是整型
int a=123;
a=45;
print(a);
//2、double 既可以是整型 也可是浮点型
double b=23.5;
b=24;
print(b);
//3、运算符
// + - * / %
var c=a+b;
print(c);
}
Strings(字符串): String
void main(){
//1、字符串定义的几种方式
var str1='this is str1';
String str2="this is str2";
String str3='''this is str3
this is str3
this is str3
''';
//2、字符串的拼接
print(str1 + str2);
print(str1 +" "+ str2);
}
Booleans(布尔) : bool
void main(){
//1、bool
bool flag1=true;
print(flag1);
bool flag2=false;
print(flag2);
//2、条件判断语句
var flag=true;
if(flag){
print('真');
}else{
print('假');
}
var a=123;
var b='123';
if(a==b){
print('a=b');
}else{
print('a!=b');
}
}
List(数组)
在Dart中,数组是列表对象,所以大多数人只是称它们为列表
常用属性:
属性 | – |
---|---|
length | 长度 |
reversed | 翻转 |
isEmpty | 是否为空 |
isNotEmpty | 是否不为空 |
常用方法:
属性 | – |
---|---|
add | 增加 |
addAll | 拼接数组 |
indexOf | 查找 传入具体值 |
remove | 删除 传入具体值 |
removeAt | 删除 传入索引值 |
fillRange | 修改 |
insert(index,value); | 指定位置插入 |
insertAll(index,list) | 指定位置插入List |
toList() | 其他类型转换成List |
join() | List转换成字符串 |
split() | 字符串转化成List |
forEach | 遍历 |
map | 遍历 |
where | |
any | |
every |
void main() {
//1、第一种定义List的方式
var l1 = ["张三", 20, true];
print(l1); //[张三, 20, true]
print(l1.length); //3
print(l1[0]); //张三
print(l1[1]); //20
//2、第二种定义List的方式 指定类型
var l2 = <String>["张三", "李四"];
print(l2);
var l3 = <int>[12, 30];
print(l3);
//3、第三种定义List的方式 增加数据 ,通过[]创建的集合它的容量可以变化
var l4 = [];
print(l4);
print(l4.length);
l4.add("张三");
l4.add("李四");
l4.add(20);
print(l4);
print(l4.length);
var l5 = ["张三", 20, true];
l5.add("李四");
l5.add("zhaosi");
print(l5);
//4、第四种定义List的方式
var l6 = List.filled(2, ""); //创建一个固定长度的集合
print(l6);
print(l6[0]);
l6[0] = "张三"; //修改集合的内容
l6[1] = "李四";
print(l6); //[张三, 李四]
}
Set
用它最主要的功能就是去除数组重复内容
Set是没有顺序且不能重复的集合,所以不能通过索引去获取值
void main(){
var s=new Set();
s.add('香蕉');
s.add('苹果');
s.add('苹果');
print(s); //{香蕉, 苹果}
print(s.toList());
List myList=['香蕉','苹果','西瓜','香蕉','苹果','香蕉','苹果'];
var s2=new Set();
s2.addAll(myList);
print(s2);
print(s2.toList());
Maps(字典)
通常来说,Map 是一个键值对相关的对象。 键和值可以是任何类型的对象。每个 键 只出现一次, 而一个值则可以出现多次
常用属性:
属性 | – |
---|---|
keys | 获取所有的key值 |
values | 获取所有的value值 |
isEmpty | 是否为空 |
isNotEmpty | 是否不为空 |
常用方法:
属性 | – |
---|---|
remove(key) | 删除指定key的数据 |
addAll({…}) | 合并映射 给映射内增加属性 |
containsValue | 查看映射内的值 返回true/false |
forEach | 遍历 |
map | |
where | |
any | |
every |
void main(){
//第一种定义 Maps的方式
// var person={
// "name":"张三",
// "age":20,
// "work":["程序员","送外卖"]
// };
// print(person);
// print(person["name"]);
// print(person["age"]);
// print(person["work"]);
//第二种定义 Maps的方式
var p=new Map();
p["name"]="李四";
p["age"]=22;
p["work"]=["程序员","送外卖"];
print(p);
print(p["age"]);
}
Dart中的函数
自定义方法的基本格式:
返回类型 方法名称(参数1,参数2,...){
方法体
return 返回值;
}
void printInfo(){
print('我是一个自定义方法');
}
int getNum(){
var myNum=123;
return myNum;
}
调用方法传参:
//调用方法传参
main() {
//1、定义一个方法 求1到这个数的所有数的和 60 1+2+3+。。。+60
int sumNum(int n) {
var sum = 0;
for (var i = 1; i <= n; i++) {
sum += i;
}
return sum;
}
var n1 = sumNum(5);
print(n1);
var n2 = sumNum(100);
print(n2);
//2、定义一个方法然后打印用户信息
String printUserInfo(String username, int age) {
//行参
return "姓名:$username---年龄:$age";
}
print(printUserInfo('张三', 20)); //实参
//3、定义一个带可选参数的方法 ,最新的dart定义可选参数需要指定类型默认值
String printUserInfo2(String username, [int age = 0]) {
//行参
if (age != 0) {
return "姓名:$username---年龄:$age";
}
return "姓名:$username---年龄保密";
}
print(printUserInfo2('张三', 21)); //实参
print(printUserInfo2('张三'));
//4、定义一个带默认参数的方法
String printUserInfo3(String username,[String sex='男',int age=0]){ //行参
if(age!=0){
return "姓名:$username---性别:$sex--年龄:$age";
}
return "姓名:$username---性别:$sex--年龄保密";
}
print(printUserInfo3('张三'));
print(printUserInfo3('小李','女'));
print(printUserInfo3('小李','女',30));
//5、定义一个命名参数的方法,最新的dart定义命名参数需要指定类型默认值
String printUserInfo4(String username, {int age = 0, String sex = '男'}) {//行参
if (age != 0) {
return "姓名:$username---性别:$sex--年龄:$age";
}
return "姓名:$username---性别:$sex--年龄保密";
}
print(printUserInfo4('张三', age: 20, sex: '未知'));
//6、实现一个 把方法当做参数的方法
var fn=(){
print('我是一个匿名方法');
};
fn();
//fn1方法
fn1() {
print('fn1');
}
//fn2方法
fn2(fn) {
fn();
}
//调用fn2这个方法 把fn1这个方法当做参数传入
fn2(fn1);
}
箭头函数:
void main() {
/*需求:使用forEach打印下面List里面的数据*/
List list=['苹果','香蕉','西瓜'];
list.forEach((value){
print(value);
});
list.forEach((value)=>print(value));
//注意和方法的区别: 箭头函数内只能写一条语句,并且语句后面没有分号(;)
list.forEach((value)=>{
print(value)
});