Dart的mixin机制

mixin是混入类,

一般在c++中利用abstract类来继承接口,但如果A类已经继承了某个abstract类,但还需要加另一个类里的方法怎么办?

dart中可以利用with 关键字混入其它类的方法直接使用/对其进行覆写后再使用

例子,这个类继承了BDLifecycleState,并且混入了BDNetPageMixin:

class LearnReminderState extends BDLifecycleState<LearnReminder> with BDNetPageMixin {

如果你愿意:可以同时混入多个类,比如class X extends y with a b c

如果abc中有冲突的方法,会以最后混入的为准。

定义被混入类可以和普通的class一样定义即可。但如果你只想某些类可以混入当前类,可以这样写:

mixin myMinxi on StatefulWidget{
  void printt() => print('fuck');
}

这样myMixin类就只能被混入到StatefulWidget/继承于StatefulWidget的子类,别的类是不能混入的。

原文地址:https://www.cnblogs.com/FdWzy/p/13496985.html