2026/3/20 14:05:57
网站建设
项目流程
建站平台有哪些,昆明网站开发价格,wordpress 页面开发,自助搭建网站系统作者#xff1a;个人主页#xff1a;ujainu
前言
#x1f680; Dart 基础语法详解#xff1a;函数、类与构造函数全面解析 本文带你系统掌握 Dart 中的核心语法 —— 函数定义、参数类型、匿名函数、箭头函数以及类和构造函数的使用方法。适合 Flutter 开发初学者快速上手…作者个人主页ujainu前言 Dart 基础语法详解函数、类与构造函数全面解析本文带你系统掌握 Dart 中的核心语法 —— 函数定义、参数类型、匿名函数、箭头函数以及类和构造函数的使用方法。适合 Flutter 开发初学者快速上手Dart中的函数定义在 Dart 中函数是程序的基本构建块之一。一个完整的函数通常包括返回类型、函数名、参数列表和函数体。✅返回值有返回值具体类型 函数名称(){}StringgetName(){returnDart;}无返回值void 函数名称(){}voidprintHello(){print(Hello Dart!);}注意返回值类型可以省略Dart会知道推断类型为dynamic// 不推荐类型不明确getAge()25;实例函数中的必传参数和可选位置参数✅必传参数特点必传参数不能为空必须按顺序传递。voidintroduce(Stringname,int age){print(我叫$name今年$age岁);}调用时必须传入所有参数introduce(张三,20);// ✅ 正确// introduce(李四); ❌ 错误缺少参数实例代码✅可选位置参数特点用方括号 [] 包裹表示该参数可选且必须放在必传参数之后。voidintroduce(Stringname,[int?age,String?city]){print(我叫$name${age!null?$age岁:}${city!null?来自$city:});}语法函数名(String a,[String?b,…]),传递时安照顺序传递。introduce(张三);// 输出我叫张三introduce(李四,25);// 输出我叫李四25岁introduce(王五,30,北京);// 输出我叫王五30岁来自北京实例代码✅可选命名参数特点使用花括号 {} 定义调用时通过 参数名: 值 的形式传参无需关心顺序。voidintroduce(Stringname,{int?age,String?city}){print(我叫$name${age!null?$age岁:}${city!null?来自$city:});}调用方式自由指定参数introduce(张三);introduce(李四,age:25);introduce(王五,city:上海,age:30);// 参数顺序无关✅ 优势代码更具可读性尤其适用于参数较多的情况。实例代码匿名函数和箭头函数✅匿名函数Anonymous Function特点声明一个没有名称的函数赋值给变量进行调用。语法Function变量名 (){};注意函数的类型使用Function来声明。没有函数名的函数常用于回调或赋值给变量。varsayHi(){print(Hello这是一个匿名函数);};// 调用sayHi();也可以带参数vargreet(Stringname){print(你好$name);};greet(Dart);实例✅箭头函数Arrow Function特点函数体只有一行代码可以用箭头函数。语法函数名() 代码逻辑注意使用箭头函数可以省略关键字。// 普通函数voidprintName(){print(张三);}// 箭头函数简化版voidprintName()print(张三);// 带参数的箭头函数varmultiply(int a,int b)a*b;print(multiply(3,4));// 输出12实例Dart 中的类Classclass定义包含属性和方法来定义对象的行为和状态。需求定义一个Person类包含姓名、年龄、性别包括学习方法。语法class Person{属性方法}实例化对象Person 变量 Person(); 属性和方法变量.属性/方法()✅ 示例定义一个 Person 类// 简单的Dart类样例classPerson{// 属性成员变量Stringname;int age;String?address;// 可选属性使用?表示可为null// 构造函数Person(this.name,this.age,{this.address});// 方法成员函数voidsayHello(){print(你好我叫$name今年$age岁。);if(address!null){print(我来自$address。);}}// getter方法Stringgetinfo$name-$age岁;// setter方法setupdateAge(int newAge){if(newAge0){agenewAge;}}// 静态方法staticvoidprintDefaultMessage(){print(这是Person类的静态方法。);}}✅ 使用类创建对象并调用成员voidmain(){// 创建Person对象finalperson1Person(张三,20,address:北京);finalperson2Person(李四,25);// 调用实例方法person1.sayHello();person2.sayHello();// 使用getterprint(\nperson1的信息${person1.info});print(person2的信息${person2.info});// 使用setterperson1.updateAge21;print(\n更新后person1的年龄${person1.age});// 调用静态方法Person.printDefaultMessage();}结果dart类中的默认和命名构造函数✅ 1. 默认构造函数Default ConstructorDart 会自动生成无参构造函数如果未定义其他构造函数但我们通常手动定义带参数的构造函数。Person(this.name,this.age,{this.address});等价于Person(Stringname,int age,{String?address}):namename,ageage,addressaddress;✅ 2. 命名构造函数Named Constructor允许为同一个类定义多个不同用途的构造函数语法为 ClassName.identifier。示例fromJson 和 defaultPerson// 从 JSON 创建对象Person.fromJson(MapString,dynamicjson):namejson[name],agejson[age],addressjson[address];// 创建默认用户Person.defaultPerson():name未知,age18,address未知地址;默认和命名构造函数对比示例// Dart类构造函数样例classPerson{// 属性成员变量Stringname;int age;String?address;// 可选属性使用?表示可为null// 1. 默认构造函数// 语法类名(参数列表)Person(this.name,this.age,{this.address});// 2. 命名构造函数从JSON创建对象// 语法类名.构造函数名(参数列表) : 初始化列表Person.fromJson(MapString,dynamicjson):namejson[name],agejson[age],addressjson[address];// 3. 命名构造函数创建默认对象Person.defaultPerson():name未知,age18,address未知地址;// 方法成员函数voidsayHello(){print(你好我叫$name今年$age岁。);if(address!null){print(我来自$address。);}}// getter方法Stringgetinfo$name-$age岁;// setter方法setupdateAge(int newAge){if(newAge0){agenewAge;}}// 静态方法staticvoidprintDefaultMessage(){print(这是Person类的静态方法。);}}voidmain(){print( Dart类构造函数示例 \n);// 1. 使用默认构造函数print(1. 使用默认构造函数);finalperson1Person(张三,20,address:北京);finalperson2Person(李四,25);person1.sayHello();person2.sayHello();// 2. 使用命名构造函数fromJsonprint(\n2. 使用命名构造函数fromJson);finalpersonJson{name:王五,age:28,address:上海};finalperson3Person.fromJson(personJson);person3.sayHello();// 3. 使用命名构造函数defaultPersonprint(\n3. 使用命名构造函数defaultPerson);finalperson4Person.defaultPerson();person4.sayHello();// 使用getterprint(\n4. 使用getter获取信息);print(person1的信息${person1.info});print(person2的信息${person2.info});// 使用setterprint(\n5. 使用setter更新年龄);person1.updateAge21;print(更新后person1的年龄${person1.age});// 调用静态方法print(\n6. 调用静态方法);Person.printDefaultMessage();}运行结果 结语Dart 作为 Flutter 的开发语言其语法简洁而强大。掌握好 函数定义、参数机制、类与构造函数 是迈向 Flutter 高效开发的第一步。 后续我们将深入讲解继承、混入mixin、泛型、异步编程Future/Stream 等高级内容敬请关注欢迎加入开源鸿蒙跨平台社区开源鸿蒙跨平台开发者社区