一个mixin可以依赖另一个吗?

时间:2020-08-31 17:17:13

标签: dart

我正在尝试创建一个可在Flutter中管理某些AnimationController的mixin,但是要创建动画,我们必须为其提供一个TickerProvider。通常,这将由另一个mixin TickerProviderStateMixin提供。

这迫使我强制转换mixin实例以使其起作用:

mixin MultiAnimationStateMixin on State {
...
    _anim1 = AnimationController(vsync: this as TickerProviderStateMixin);
...
}

这似乎很脆弱。没办法为MultiAnimationStateMixin定义它应该要求TickerProviderStateMixin吗?

1 个答案:

答案 0 :(得分:1)

有一种方法:

mixin MultiAnimationStateMixin on State, TickerProvider {
  ...
  _anim1 = AnimationController(vsync: this);
  ...
}

on子句中具有两种(或更多)类型意味着必须将mixin应用于实现两个(或所有)接口的对象。