Dart 中的 Mixin 是一种在多个类层次结构中再次使用类代码的方法。我们使用 with 关键字后跟一个或多个 mixins 名称。
Mixins 可以有两种使用方式,第一种情况是当我们想以类没有任何构造函数并且类的对象被扩展的方式使用类代码时。在这种情况下,我们使用 with 关键字。
另一种情况是,当我们希望 mixin 可用作常规类时,我们使用mixin 关键字而不是 class。
现在,让我们在 Dart 中创建不同的类,其中一个是名为 Perimeter 的简单类,另一个是我们将使用其主体代码的 mixin。
考虑下面显示的例子 -
import 'dart:math'; class Position { int x; int y; double distanceFrom(Position dis) { var dx =dis.x- x; var dy =dis.y- y; return sqrt(dx * dx + dy * dy); } } class Perimeter { int length; int breadth; int get area => 2 * (length * breadth); } class PerimeterView extends Perimeter with Position {} void main() { var origin = new Position() ..x = 0 ..y = 0; var p = new PerimeterView() ..x = 5 ..y = 5 ..length = 10 ..breadth = 11; print(p.distanceFrom(origin)); print(p.area); }
应该注意的是,当我们将 Perimeter 类与我们的 Mixin 一起扩展时,我们正在使用 mixin。
输出结果
7.0710678118654755 220