Dart Mixins: Mixin in Code

Dart Mixins: Mixin in Code

Dart Mixins

A mixin is a class with methods and properties utilized by other classes in Dart.

It is a way to reuse code and write code clean.

To declare a mixin, we use the mixin keyword:

mixin Mixin_name{
 }

Mixins, in other words, are regular classes from which we can grab methods (or variables) without having to extend them. To accomplish this, we use the with keyword.


Mixin in Code

The following code shows how to implement mixin in Dart.

// Creating a Bark mixin
mixin Bark {
  void bark() => print('Barking');
}

mixin Fly {
  void fly() => print('Flying');
}

mixin Crawl {
  void crawl() => print('Crawling');
}
// Creating an Animal class
class Animal{
  void breathe(){
    print("Breathing");
  }
}
// Createing a Dog class, which extends the Animal class 
// Bark is the mixin with the method that Dog can implement
class Dog extends Animal with Bark {}

// Creating a Bat class Bat, which extends the Animal class
// Fly is the mixin with the method that Bat can implement
class Bat extends Animal with Fly {}

class Snake extends Animal with Crawl{
  // Invoking the methods within the display
  void display(){
    print(".....Snake.....");
    breathe();
    crawl();
  }
}

main() {
  var dog = Dog();
  dog.breathe();
  dog.bark();

  var snake = Snake();
  snake.display();

}
//Output
Breathing // Output of dog.breathe()
Barking // Output of dog.bark()
.....Snake.....
Breathing // Output of snake.display()
Crawling  // Output of snake.display()

Explanation

  • We create a mixin named Bark using the bark() method.

  • We create a mixin named Fly using the fly() method.

  • We create a mixin named Crawl using the crawl() method.

  • We create a class named Animal using the breathe() method.

  • We create a class named Dog which extends the Animal class. The Dog class uses the with keyword to access the method in the Bark mixin class.

  • We create a class named Bat which extends the Animal class. The Bat class uses the with keyword to access the method in the Fly mixin class.

  • We create a class named Snake which extends the Animal class. The Dog class uses the with keyword to access the method in the Crawl mixin class. In the Snake class, we create a method called display() which invokes the methods the class can implement.

  • We create the main() function. In main(), we create objects of the Dog and Snake classes, which are “dog” and “snake” respectively. Finally, we use the objects created to invoke the methods.

Note: A mixin cannot be instantiated.