Flutter---Dart基础
1.1变量与常量
·变量可以使用var,object,dynamic关键字来声明
·未初始化的变量默认是null
·声明常量使用final和const关键字,final关键字修饰的变量的值只能被设置一次,const关键字修饰的变量在编译时就已经固定
1.2内置数据类型
·常见的基本数据类型有8种:Number,String,Bool,List,Se,Map,Rune和Symbol
·Number类型分为整型和浮点型两种,使用int和double进行声明
·Number类型除了可以进行基本的加减乘除和位移操作,还提供了将字符串和数字相互转换的方法(
①int.parse():String类型转换int类型;
②double.parse():String类型转换为double类型;
③.toString:int类型转换为String类型;
思.toStringAsFixed():Double类型转换为String类型
)
·String类型通过单引号或者双引号进行声明
·Bool类型只有true和false两个值
·List表示列表,和数组是同一个概念,第一个元素的索引是0,最后一个元素的索引是list.length-1。
·Set用来表示集合,它的对象不需要按照特定的规则排序,对集合的访问和操作都是通过对象来实现的,因此集合不能有重复的对象,要创建一个空集合,可以使用带有类型参数的{},(eg:var name = <String>{}),Dart的集合还提供了add(),addAll()等常用的方法。
·Map以键值对(key-value)的形式进行存储。key和value可以是任何类型的对象,一个Map中,key只能出现一次,但是value可以出现多次
·Rune类型用来表示UTF-32字符串,并且可以将文字转换成符号表情或代表特殊含义的文字。
·Symbol很少用到
1.3函数
·Dart是一门面向对象的编程语言,所以函数也是对象,而函数属于Function类型,所以Dart可以把函数当成变量传给另外一个函数,也可以把Dart类的实例当作方法来调用。
想要理解这句话,可以参考以下
Flutter---函数-CSDN博客
·main()是应用的入口函数
·函数的参数类型有两种,可选参数和必传参数(用@required修饰)。必传参数会显示在参数列表的前面,后面再跟上可选参数。可选参数分为可选命名参数和可选位置参数,可选命名参数的参数部分使用{}包裹,可选位置参数部分使用[]包裹。可选命名参数通过参数名来传递值,与顺序无关。这种在参数较多或者你想明确每个参数含义时特别有用。可选位置参数严格按照位置顺序进行传递,适合那些自然顺序或逻辑关联的参数
可选命名参数的例子
// 定义函数,使用 {} 声明可选命名参数void configureApp({String? theme, int fontSize = 14, bool darkMode = false}) {print('主题: $theme, 字号: $fontSize, 深色模式: $darkMode');}// 调用示例void main() {configureApp(theme: "蓝色", fontSize: 16); // 只传部分参数configureApp(darkMode: true, theme: "暗黑"); // 顺序可交换configureApp(); // 所有参数都使用默认值}
可选位置参数的例子
// 定义函数,使用 [] 声明可选位置参数String introduce(String name, [String? role, int years = 0]) {var intro = '我是 $name';if (role != null) {intro += ', 是一名 $role';}if (years > 0) {intro += ', 有 $years 年经验';}return intro;}// 调用示例void main() {print(introduce("小明")); // 我是小明print(introduce("小红", "工程师")); // 我是小红, 是一名工程师print(introduce("小刚", "设计师", 5)); // 我是小刚, 是一名设计师, 有 5 年经验}
·几乎所有函数都会有一个返回值,如果没有明确指定返回值,那么函数会隐式地添加一个“return null;”语句。
1.4运算符
·算术运算符:+加法,-减法,*乘法,/除法,~/除法取整,expr取负,%取余
·自增和自减:++var先执行自增操作,var++先使用值再执行自增操作(谁在前,就先用谁),--var先执行自减操作,var--先使用值再执行自减操作。
·关系运算符:==,!=,> , < ,>= , <= ,
·类型判定运算符:as:判断是否属于某种类型,还可以将对象强制转换为特定类型。
is:指对象具有指定的类型,返回true。is!:指对象具有指定的类型,返回false
(当不确定类型时,用is或is!来问一问。当非常确定类型时,用as来命令它转换)
·位运算符:&按位与,&~按位取反,|按位或,^按位异或,<<按位左移,>>按位右移
·逻辑运算符:&&与,||或,!非
·条件表达式:
三目表达式(判定条件是Bool值):condition ? expr1 : expr2
??表达式(判定条件是否为null):expr1 ?? expr2
·级联运算符(..)允许你在同一个对象上连续调用多个方法或访问多个属性,而无需重复引用该对象(两个点的级联运算符算不上是一个运算符,它只是一种特殊语法,用于简化表达式)
例子
class Person {String name = '';int age = 0;String city = '';void introduce() {print('我叫$name,$age岁,来自$city');}}void main() {// 不使用级联运算符var person1 = Person();person1.name = '张三';person1.age = 25;person1.city = '北京';person1.introduce();// 使用级联运算符var person2 = Person()..name = '李四'..age = 30..city = '上海'..introduce();}
·Mixin:Java中类的继承都是很简单的单继承,也就是说一个子类只有一个父类。而Dart的Mixin相当于多继承,也就是说一个子类可以继承多个父类。Dart使用with关键自来实现Mixin的功能
