【第三章 flutter学习之Dart基础(上)】

一、入口方法的定义方式

main(){
	print('hello world')
}
//下边这种方法中void表示没有返回值
void main(){
	print('你好dart')
}

二、Dart变量和常量

var str = 'hello'   
Srting srt = 'hello'
int srt = 123
//两种命名变量的方式

const a = 123
final a = 123 
//他们两个是用来声明常量的
区别是
final 可以接受一个可变的数值 例如 New Date()const 就不可

三、Dart常用数据类型

1. 字符串类型
	var || String 声明   
	拼接字符串与js相比多了一种拼接方式
例如:
	String str = "hello"
	var str2 = "world"
	print("$str $str2"){
	
	}
	//就会打印str + str2 一样的 "hello world"
	
2. 数值类型
 int整数值 //只有整数
 double浮点值  double包含整数和小数
 
3. 运算符
+ - * / %

4.布尔值
true false 

4. 条件判断
 if语句 和js一样
 
5. 数组/集合类型
 第一种声明和js一样
  var list=['aaa','a',0,1]
  
 第二种声明可指定类型
 var list = <String>["这里边必须是指定类型数据"]
 
 数组添加的方式 js是通过push...
 它可以通过add添加
 var list = []
 list.add(1)
 
 第三种声明方式 固定长度
 var list = List.filled(2,"") 创建一个长度固定为2的数组集合 默认值""
  可指定类型 不可以增加 可修改数据 修改方式 => list[0]=1
  
6. maps类型 类型对象

第一种方式
var data={
	"name":"xxx",
	"age":20
}
 
第二种
var data = new Map()
data["name"] = "XXX"
data["age"] = 12


类型判断 is
var str = ""
str is String 返回布尔值

四、Dart运算符与类型转换及循环语句

1. 算数运算符
  +、 - 、* 、/ 、 ~/取整 、 %
  ~/取整  a~/b 意思就是a/b的值取整
2. 关系运算符
  == ~= > < >= <=
3. 逻辑运算符
  ! && ||
4. 赋值运算符
  =  ??=
  ??=  a??=12意思就是a的值空吗是的话就把12赋值给a
  += -= *= /= %= ~/=
  ++  --  (++,--在前先运算再赋值,在后先赋值再运算)
5. 条件表达式
   if else  switch case
   三目运算符(三元表达式)
类型转换
	1. 转化为String类型 toString()
	2. 转化为Number类型 double.parse() || int.parse()
try  ... catch  抛出异常
	try{
	XXXX	
	}catch(err){
	//如果XXXX部分代码报错则执行此作用域内代码
	}
isEmpty:判断字符串是否为空
isNotEmpty:判断是否不为空
str.isEmpty
for循环 和js一样
for(int i = 1; i<100; i++){
	parint(i)
}
do while
单个while和if类似,不过只要条件仍满足则扔执行
	do {
			先执行一次再判断
			while中的条件满足,满足则继续执行
			continue;//表示跳过本次循环
			break;//跳出循环
		}while(条件)
数组常用方法
length属性 长度
reversed属性 翻转并转换数组(3,2,1)这样的括号
toList方法 转换(3,2,1)为数组[3,2,1]
add()  添加单个数据
addAll() 添加多个数据,也可用来拼接
indexOf() 查找并返回索引否则返回-1
remove() 传递具体的值删除
removeAt() 传入索引删除
fillRange() 修改,接受三个参数,(起始位置,结束为止,修改的值)
insert()也是接收三个参数,起始,结束,值;用来插入值
insertAll() 插入多个值 两个参数(插入下标位置,插入的值(可以是数组))
join(',') 转换为字符串
split(',') 转化为数组

for in 循环对象
forEach循环
	可以没有箭头
XX.forEach((val){
		print("$value")  
})
map函数
where函数
any函数 只要又满足条件的就返回true
every 每一项都要满足否则就返回false


五、自定义方法

void 自定义名称(){
	print("自定义方法")
}

void main() {
	自定义名称()//调用
	
	int 方法2(){
	//也可以在这里定义方法 
	return 666
 	}
 	var a=方法2()
 	print(a)
}

自执行方法
((a){
	print(a)
})(参数);

class类
定义类
在这里插入图片描述
使用类
在这里插入图片描述
默认就执行构造函数
在这里插入图片描述
简写方式
在这里插入图片描述
类单独抽离成一个组件或方法

  1. 创建一个dart文件,定义好类,
  2. import “路径” 引入 即可使用

私有属性
必须是一个单独的文件
属性或方法前面加_下划线即可为私有属性或者私有方法
不过仍可以间接获取,通过调用共有方法仍可获取到

getter setter修饰符
在这里插入图片描述
在这里插入图片描述
初始化列表

在这里插入图片描述

六、Dart静态成员、操作符、类的继承

Dart静态成员
在这里插入图片描述

在这里插入图片描述
操作符

Dart中的对象操作符
?条件运算符
as 类型转换
is 类型判断
.. 级联操作

在这里插入图片描述
连缀操作
在这里插入图片描述

类的继承
在这里插入图片描述
如果继承类调用方法自己有的话则调用自己的,没有才会去父类找

在这里插入图片描述

在这里插入图片描述

多态
在这里插入图片描述

七、接口

/*
和Java一样,dart也有接口,但是和Java还是有区别的。

  首先,dart的接口没有interface关键字定义接口,而是普通类或抽象类都可以作为接口被实现。

  同样使用implements关键字进行实现。

  但是dart的接口有点奇怪,如果实现的类是普通类,会将普通类和抽象中的属性的方法全部需要覆写一遍。
  
  而因为抽象类可以定义抽象方法,普通类不可以,所以一般如果要实现像Java接口那样的方式,一般会使用抽象类。

  建议使用抽象类定义接口。

*/

/*
定义一个DB库 支持 mysql  mssql  mongodb

mysql  mssql  mongodb三个类里面都有同样的方法

*/


abstract class Db{   //当做接口   接口:就是约定 、规范
    late String uri;      //数据库的链接地址
    add(String data);
    save();
    delete();
}

class Mysql implements Db{
  
  @override
  String uri;

  Mysql(this.uri);

  @override
  add(data) {
    // TODO: implement add
    print('这是mysql的add方法'+data);
  }

  @override
  delete() {
    // TODO: implement delete
    return null;
  }

  @override
  save() {
    // TODO: implement save
    return null;
  }
  remove(){
      
  }

  
}

class MsSql implements Db{
  @override
  late String uri;
  @override
  add(String data) {
    print('这是mssql的add方法'+data);
  }

  @override
  delete() {
    // TODO: implement delete
    return null;
  }

  @override
  save() {
    // TODO: implement save
    return null;
  }


}

main() {

  Mysql mysql=new Mysql('xxxxxx');

  mysql.add('1243214');

  


  
}

八、接口分离写法

在这里插入图片描述
在这里插入图片描述

九、一个类实现多个接口

在这里插入图片描述
之后再入口调用类
在这里插入图片描述


未完待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

灰太狼大王灬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值