Flutter 如何为dart上的变量分配类类型

Flutter 如何为dart上的变量分配类类型,flutter,dart,Flutter,Dart,我对飞舞和飞镖还不熟悉 我想和下面的抽屉过渡 class Page { String title; var page; Page(this.title, this.page); } class CommonDrawer extends StatelessWidget { var _pages = [Page('Home', HomePage), Page('Form', FormPage)]; @override Widget build(

我对飞舞和飞镖还不熟悉

我想和下面的抽屉过渡

class Page {
  String title;
  var page;
  Page(this.title, this.page);
}

class CommonDrawer extends StatelessWidget {
  var _pages = [Page('Home', HomePage),
              Page('Form', FormPage)];

  @override
  Widget build(BuildContext context) {
    return Drawer(
        child: ListView(
      children: <Widget>[
        for (final p in _pages) genTile(p, context),
      ]

  ListTile genTile(Page page, context) {
      ~~~~~~~ Omitted ~~~~~~~~~~
      Navigator.push(
        context, MaterialPageRoute(builder: (context) => page.page()));
  }
}
new page.page出现编译错误


有人知道dart的正确方法吗?

您不能在dart中抽象类。 使用类型变量泛型,可以对类型进行抽象,但即使这样也不允许调用构造函数

尝试将代码更改为:

类页{ 字符串标题; 动态函数createPage; Pagethis.title,this.createPage; } 类CommonDrawer扩展了无状态小部件{ var_pages=[主页,=>主页, 页面'格式',=>FormPage]; ... 导航器。推 context,materialPackageRouteBuilder:context=>page.createPage; } }
对于createPage的返回类型,我会使用不同于dynamic的类型,但我看不出HomePage和FormPage的常见超类型是什么。

像这样使用HomePage并删除page.page到page.page
Attempted to use type 'FormPage' as a function. Since types do not define a method 'call', this is not possible. Did you intend to call the FormPage constructor and forget the 'new' operator?