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.
Let’s understand this better with a code example.
The following code shows how to implement mixin
in Dart.
// Creating a Bark mixinmixin Bark {void bark() => print('Barking');}mixin Fly {void fly() => print('Flying');}mixin Crawl {void crawl() => print('Crawling');}// Creating an Animal classclass Animal{void breathe(){print("Breathing");}}// Createing a Dog class, which extends the Animal class// Bark is the mixin with the method that Dog can implementclass 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 implementclass Bat extends Animal with Fly {}class Snake extends Animal with Crawl{// Invoking the methods within the displayvoid display(){print(".....Snake.....");breathe();crawl();}}main() {var dog = Dog();dog.breathe();dog.bark();var snake = Snake();snake.display();}
Bark
using the bark()
method.Fly
using the fly()
method.Crawl
using the crawl()
method.Animal
using the breathe()
method.Dog
which extends the Animal
class. The Dog
class uses the with
keyword to access the method in the Bark
mixin class.Bat
which extends the Animal
class. The Bat
class uses the with
keyword to access the method in the Fly
mixin class.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.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.