I\'m very familiar with the concepts of interfaces and abstract classes, but not super familiar with the concepts of mixins.
Right now, in Dart, every clas
The difference lies in the concept. If you understand this, you will use it in the right way.
But unlike other traditional programming languages like C# and JAVA, Dart does not have explicit interface types. Each class, by default, defines its own interface composed of public fields and methods. So, every class can act as an interface in Dart.
implements keyword is to implement an interface. Also, a class can implement multiple interfaces.
If you want to share the behavior across these two classes, you should use the extends keyword.
So a mixin neither imposes usage restriction nor forces type restriction.
You will usually put common functions inside a mixin. Make use of the mixin by using the with keyword.
Taken from here