目录
前言
要学习flutter ,我们需要先学习flutter的基础逻辑语法dart
学习dart
1、在安装flutter SDK时已经自动安装了dart SDK ,不需要再重复安装dart SDK,在VScode中安装插件 dart 、flutter、code runner。
2、在空文件夹下创建一个文件,后缀要为.dart,要执行的代码都要放在main (){ }入口中, 然后右键执行 Run Code 查看执行结果
注意,一句话执行完之后要加分号
入口函数
1、正规写法
main(){
要执行的代码
}
2、没有返回值的入口函数
//表示main方法没有返回值
void main (){
要执行的代码
}
变量
dart 是一个强大的脚本类语言,可以不预定定义变量类型,自动会推断类型
dart 中定义变量可以通过 var 关键字可以通过类型来申明变量
1、可以使用 var 来申明变量,也可以直接使用类型关键词来申明变量
注意 var 和类型不要一起写
1.1 使用 var 和 String 字符串来申明变量
1.2 使用 int 来申明 number数字类型
1.3 var 和 关键词申明变量的区别
var 有推断类型,关键词申明后面的值一定要和关键词一致
例如:
String str = '';
str = 133456;
// 这里就表示 str 是字符串
int arr = '123456';
// 这里就会报错,因为 int是申明 number类型的,而后面的值却是字符串
arr =
常量
final 和 const 修饰符
const 值不变,一开始就得赋值
final 可以开始不赋值,只能赋一次,而 final 不仅有const 的编译时常量的特性,最重要的它是运行时常量,并且final 是惰性初始化,即在运行时第一次使用前才初始化
永远不改量的量,请使用 final 或const 修饰它,而不是使用 var 或者其他变量类型
相同点:final 和 const 都是定义常量的,值不可改变
不同点:使用方法时要使用 final 才有效,使用 const 无效
例如:获取当前系统时间
有效:final a = new DateTime.now();
print(a);
无效:const a = new DateTime.now();
print(a);
dart 命名规则
1.变量名称必须由数字、字母、下划线和美元符号($)组成。
2.注意:标识符开头不能是数字
3.标识符不能是保留字和关键字。如 if var
4.变量的名字是区分大小写的 如:age 和 Age是不同的变量,在实际的运用中,也建议不要用同一个
5.标识符(变量名称)一定要见名思意,变量名称建议用名词,方法名称建议用动词
dart数据类型
字符串类型
1、定义字符串的几种方式
-
使用var 定义
var str1 = 'shis is str1'
2.使用字符串关键词定义
String str1 = 'this is str1'
注意:这里书写单引号和双引号都行,只要是成双出现即可,
3.三个引号的用法
var str1 = '''shis is str1'''
var str1 = """shis is str1"""
String str1 = '''this is str1'''
String str1 = """this is str1"""
三个引号的区别就是,当引号里面的内容有多行时,可以输入空格不换行
2、字符串拼接
2.1、使用 $ 符号拼接
2.2、 使用 + 号拼接
2.3 、 + 号中间加双引号,可以输出空格
数值类型
int 和 double 修饰符
1、int 定义
定义的值必须是整型,也就是必须是整数,不能为小数
2、double 定义
定义的值可以是整型(整数),也可以是浮点型(小数),整数输出时会自动添加上小数后一位
3、运算符
加(+)减(-)乘(*)除(/)余(%)
举例: 相加:+ 两个变量可以相加得出结果
布尔类型
bool 修饰符
值要么是true ,要么是false
条件判断语句
1.true或false判断
2.变量比较判断
注意:一个等号是赋值,两个等号才是比较符
这里的结果为什么 是a!=b呢?因为在dart 中不会对变量类型进行转换,a是number 数值类型,b是string字符串,所以不相等
list类型 (数组/集合)
和 JavaScript 一样,可以通过 数组名.length 获取数组长度,也可以通过 下标来获取数组指定元素
1、第一种定义 list 的方式
2.第二种定义 list 的方式 指定类型
在数组前面用尖括号包裹要指定的数据类型,指定数据类型后,数组中只能存放该数据类型元素,存放其他数据类型元素会报错
第三种定义 list 的方式 增加数据
通过 [] 创建的数组 ,他的容量可以变化
1.定义一个数组
2.通过数组名.add() 方法给数组添加数据
非空数组,只要是 [ ] 创建的数组,都是可以变化的
4、第四种定义 list 的方式 指定长度
// var l6 = List.filled(length, fill): 创建一个固定长度的集合,要传入两个参数,第一个是长度,第二个参数是元素
1、创建一个长度为2 ,两个元素都为空的数组
2、通过数组的下标,给数组指定元素赋值
数组名[下标] = 值
注意:使用 list.filled 创建的数组,不能使用 数组名.add()方法添加数据,也不能通过 数组名.length 来改变长度
5.第五种定义 list 的方式 ,使用 list.filled 创建的数组 指定长度并且指定类型
// var l6 = List<类型>.filled(length, fill): 创建一个固定长度的集合,要传入两个参数,第一个是长度,第二个参数是元素,当前面指定类型了,后面元素的类型也要对应,没有对应的话会报错
Maps类型(字典)
第一种定义 maps 的方式
注意:这里 和 Javascript 不同的是 获取指定 key 值不能通过点方法,要用 对象名['指定key']
第二种定义 maps 的方式
new Map()
判断数据类型
is 关键词来判断数据类型
dart 运算符
基本上和 Javascript 一致
算术运算符
+(加) -(减) *(乘) /(除) ~/(取整) %(取余)
关系运算符
== (相等) !=(不等) >(大于) <(小于) >=(大于等于) <=(小于等于)
逻辑运算符
!(取反) &&(并且) ||(或)
!(取反)
&& (并且)
|| (或者)
赋值运算符
基础赋值运算符
= ??=
1、= 直接赋值
2、??= 先判断变量是否有值,如果有值结果就是原来的值,如果没有值,就是重新赋值
复合赋值运算符
+= -= *= /= %= ~/=
1、+=
2、-=
3、*=
条件表达式
1、if else / 与JavaScript中用法一致 /
if(条件判断){
//执行代码
} else if(条件判断){
//执行代码
} else{
//执行代码
}
2、switch case / 与JavaScript用法一致 /
void main() {
var xingBie = '男';
switch (xingBie) { // 括号中传入要判断的变量
case '男': // 判断条件
print('性别是男'); // 条件满足时执行代码,可以是多句
break; // 一定要加break结束
case '女':
print('性别是女');
print('性别是女');
break;
default: // 其他条件都不满足时执行
print('参数传入错误');
break;
}
}
区分: Switch case 能判断的用if else 都能判断 ,但是Switch case 更常用来判断固定值
三目运算符
/与JavaScript中的三元表达式用法一致/
条件表达式 ?值1 :值2;
结果为:当条件表达式的结果为true时,结果就为值1 ,否则就为值2
?? 运算符
var a;
var b = a ?? 10;
print(b); // 10
判断 a 是否有值,如果a 有值就将 a 的值赋值给b ;如果 a没有值、就将10 赋值给 b。
dart数据类型转换
1、number 与 String 数据类型之间的转换
number 类型转换成 string 类型
用 toString()方法
string 类型转换成 number 类型
1、整型 用 int.parse()方法
1、浮点型 用 double.parse()方法