这是代码。我们有一个 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;
      }
    }
    

    10-08 19:55