完整教程: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的功能

posted on 2025-12-10 11:00  ljbguanli  阅读(21)  评论(0)    收藏  举报