Mixin

a Mixin is a way to reuse code across multiple classes without using traditional inheritance. (Represents has-capabilities, and cannot have constructors)

mixin Runner {
  void run() {
    print("Running fast!");
  }
}

class Animal {}

class Dog extends Animal with Runner {}

void main() {
  Dog d = Dog();
  d.run();     // Output: Running fast!
}
mixin Flyer {
  void fly() => print('Flying in the sky');
}

mixin Swimmer {
  void swim() => print('Swimming in water');
}

class Duck with Flyer, Swimmer {}

void main() {
  Duck d = Duck();
  d.fly();
  d.swim();
}