gpt4 book ai didi

flutter - 当可选参数之一不是成员变量并且是必需的时,如何扩展类?

转载 作者:IT王子 更新时间:2023-10-29 06:33:22 30 4
gpt4 key购买 nike

这是代码。我们有一个 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 类 因为:

  1. vsync 不是TabController的成员变量
  2. TabController 构造函数本身有一些断言,如果没有传递所需的参数,它就会崩溃。

这些是编译错误:

  1. 错误:未定义命名参数 vsync

最佳答案

  1. this.length需要成员变量。
  2. @required 需要断言
  3. 使用 : 而不是 =
  4. 创建一个扩展类TickerProvider,因为它是抽象类。我以 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;
}
}

关于flutter - 当可选参数之一不是成员变量并且是必需的时,如何扩展类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56311221/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com