这是代码。我们有一个 TabController
(来自 sdk),我正在扩展这个 TabController
类:
class TabController extends ChangeNotifier {
int length;
TabController({ int initialIndex = 0,
@required this.length,
@required TickerProvider vSync
}):assert(length != null),
assert(vSync != null);
} //end of TabController
class AppTabController extends TabController {
AppTabController(int mInitialIndex,
int mLength,
TickerProvider mVsync):super(length: mLength, mVsync: vsync ){}
}
现在这个
AppTabController
的构造函数给出了语法错误。好像我不能扩展 TabController class
因为:vsync
不是 TabController
TabController
构造函数本身中有一些断言,因此如果未传递所需的参数,它将崩溃。 这些是编译错误:
vsync
未定义 最佳答案
this.length
需要成员变量。 @required
需要 assert
:
而不是 =
TickerProvider
,因为它是 abstract class
。我以 myTickerProvider
为例。 AppTabController appTabController = new AppTabController(mLength:10, mVsync:new myTickerProvider());
class TabController extends ChangeNotifier {
int length;
TabController({
int initialIndex = 0,
@required this.length,
@required TickerProvider vSync
}) : assert(length != null),
assert(vSync != null);
} //end of TabController
class AppTabController extends TabController {
AppTabController({int mInitialIndex,
int mLength,
TickerProvider mVsync}):super(length: mLength, vSync: mVsync);
}
class myTickerProvider extends TickerProvider{
@override
Ticker createTicker(onTick) {
// TODO: implement createTicker
return null;
}
}