Dart mixins
Usaremos Mixins do Dart neste artigo.
Mixins permitem reutilizar código da mesma forma que hierarquias de múltiplas classes.
Como posso utilizar um mixin?
Use mixins com uma palavra-chave para aplicar a uma ou mais classes em uma única classe.
Sem estender a classe, as classes mixin fornecem as propriedades da classe pai.
O dilema da herança ou subclasse é resolvido através de mixins.
Todos os membros não estáticos declarados pelo mixin estão incluídos na declaração do mixin.
Caso de uso:
Por exemplo, você pode ter uma classe Maximal com o método eat(). Tanto “Maximal” quanto “Bird” podem ser úteis para o código da classe já mencionada. Imagine, entretanto, que você está introduzindo uma classe chamada Maximal . Você provavelmente tem recursos em “Bird” (como um método chamado fly()) que gostaria de usar no Maximal, mas não adicionar em “Bird”. Um excelente aplicativo para o mixin “Bird” está aqui.
Vamos criar um exemplo para Mixins de compreensão da massa.
Estou usando https://dartpad.dev/? para criar exemplo
abra o Dart Pad e você pode mostrar o método de execução no lado direito do Dartpad, limpe o código entre o método de execução.
Agora criamos uma classe Animal
class Animal{ void animalPrint(){ print("Animal"); } }
Depois disso eu crio a classe Bird
class Bird{ void birdPrint(){ print("Bird"); } }
E agora criamos funcionalidades usando mixin.
primeiro criamos a funcionalidade eat
mixin Eat{ void eat(){ print("Eating"); } }
agora a próxima funcionalidade é executada
mixin Run{ void run(){ print("Runing"); } } mixin Fly{ void fly(){ print("Flying"); } }
Agora estamos usando a funcionalidade com palavra-chave ‘with’ nas classes animal e bird
class Animal with Run,Eat{ void animalPrint(){ print("Animal"); } } class Bird with Eat,Fly{ void birdPrint(){ print("Bird"); } }
agora vamos para o método principal e agora criamos um objeto de classe como animal e bird e podemos usar diretamente sem estender a classe.
void main() { Animal animal=Animal(); animal.animalPrint(); animal.eat(); animal.run(); Bird bird=Bird(); bird.birdPrint(); bird.eat(); bird.fly(); }
para mais informações, consulte: (Maxin)