Mixins are a way of reusing a class’s code in multiple class hierarchies.
void main() { Animal animal = Animal(); Bird().fly(); Fish().swim(); Duck().move(); Duck().swim(); Duck().fly(); } mixin CanSwim { void swim() { print('change poisiton by swimming'); } } mixin CanFly { void fly() { print('change poisiton by flying'); } } class Animal { void move () { print('change position'); } } class Fish extends Animal with CanSwim{ @override void move () { super.move(); } } class Bird extends Animal with CanFly{ @override void move () { super.move(); } } class Duck extends Animal with CanFly, CanSwim{ @override void move () { super.move(); } }