Dart语法

发布时间:2026/7/16 10:09:00
Dart语法 一、Dart的类1、构造函数命名构造函数允许定义多个构造函数C允许构造函数重载classPerson{Stringname;int age;Person(this.name,this.age);// 默认构造函数Person.origin(){name;age0;}}factory‌工厂构造函数允许类控制实例的创建过程而不总是返回一个新的实例。本质上是静态方法//实现单例模式classSingleton{staticfinalSingleton_instanceSingleton._internal();factorySingleton(){return_instance;}Singleton._internal();// 私有构造函数}2、继承extendsclass_HomePageStateextendsStateHomePage{}3、私有// 私有实例变量String_userName;// 私有函数/方法仅当前文件可用void_calcData(){}// 私有常量constint _MAX_COUNT100;// 私有类仅本文件使用class_LocalHelper{}4、final变量和初始化列表(final类似于C的引用一旦绑定 / 赋值就不能重新指向别的对象classDemo{finalint a;finalStringb;// Dart 初始化器列表冒号后面Demo(int val):aval,bhello{// 函数体内不能再给 a、b 赋值}}5、静态 static同C静态变量和方法属于类而不是对象6、Getter获取器‌和 ‌Setter设置器用于访问和修改对象属性的特殊方法提供了对类内部状态的受控访问classPerson{String_name;Person(this._name);// 公共 GetterStringgetname_name;// 公共 Settersetname(Stringvalue){_namevalue;}}7、接口每个类都隐式地定义了一个接口该接口包含类的所有实例成员方法、getter、setter以及它实现的其他接口1通过implements 关键字实现// 定义一个类作为接口规范abstractclassAnimal{voidspeak();// 抽象方法Stringgetname;// 抽象 getter}// 实现接口classDogimplementsAnimal{overrideStringgetnameDog;overridevoidspeak(){print(Woof!);}}// 也可以实现普通类作为接口classCat{voidmeow()print(Meow);}classRobotCatimplementsCat{overridevoidmeow(){print(Beep Boop Meow);}}2通过extends 关键字实现继承抽象类abstractclassShape{doublearea();// 抽象方法子类必须实现voiddescribe(){// 具体方法子类可直接继承print(This is a shape.);}}classCircleextendsShape{finaldouble radius;Circle(this.radius);overridedoublearea(){return3.14*radius*radius;}// describe() 方法无需重写直接可用}3Mixins (with)类似“多继承”的功能来复用代码// 如果发生命名冲突后引入的 Mixin 会覆盖先前的classMyClasswithMixinA,MixinB{}mixinSwimmer{voidswim(){print(Swimming);}}classHumanwithSwimmer{}voidmain(){HumanhumanHuman();human.swim();// 输出: Swimming}二、符号// 运算符// ? : 三元运算符// ?? (空值检测,第一个操作数为null时返回第二个操作数)// ?. (当前调用只在被访问者不为null的情况下才执行)// ?? (空值判断赋值只在左值为null的情况下才执行赋值操作)// .. (级联操作符用于对同一对象执行一系列操作链式操作)// person.name bob; person.age 28;person..namebob..age28;// as (将对象转换为某类型如果转换失败将抛出异常)// ?可空类型声明声明一个变量或参数可以为 nullString?nullableStringnull;// !非空断言操作符将可空类型强制转换为非可空类型若值为 null 则抛出异常String?nullableStrhello;StringnonNullableStrnullableStr!;// 强制断言不为null// (箭头函数用于缩写单行函数)voidprintInt(int i){print(i);}voidprintInt(int i)print(i);// ... (展开操作符,将一个可迭代对象展开为多个元素)finallist[1,2,...[3,4]];// [1, 2, 3, 4]// ...? (空安全展开操作符 ,当可迭代对象为 null 时跳过展开)Listint?nullableListnull;finallist[1,2,...?nullableList];// [1, 2]dart analyze // 分析dart format . // 格式化