首页 > 解决方案 > 如何从路线类列表中生成路线图

问题描述

我想通过创建路线列表来自动化我的应用程序中的路线分配。然后这个列表将被映射。我的目标是改进我现有的代码。我知道这很令人困惑,您可以通过下面给出的代码更好地理解它:

MaterialApp(
        navigatorObservers: <NavigatorObserver>[observer],
        home: getWidgetByRouteName(hasRoute), //GameDetails(),
        routes: <String, WidgetBuilder>{
          SplashPage.routeName: (BuildContext context) => SplashPage(),
          Phone.routeName: (BuildContext context) => Phone(),
          OTP.routeName: (BuildContext context) => OTP(),
          Team.routeName: (BuildContext context) => Team(),

        },
      ),

我想将上面的代码转换成这种类型:


    List route = [SplashPage, Phone, OTP];

    Map<String, WidgetBuilder> namedRoutes = {};

    route.forEach((element) {
      namedRoutes[element.routeName] = (BuildContext context) => element();
    });



  MaterialApp(
        navigatorObservers: <NavigatorObserver>[observer],
        home: getWidgetByRouteName(hasRoute), //GameDetails(),
        routes: namedRoutes
      ),

如果您对什么是 routeName 感到困惑:

class SplashPage extends StatelessWidget {
  static const routeName = '/splash';
..
..
..
}

我收到此错误:

The following NoSuchMethodError was thrown building MainApp(dirty):
Class '_Type' has no instance getter 'routeName'.
Receiver: SplashPage
Tried calling: routeName

标签: flutterdart

解决方案


您不能从表示类的 Type 对象创建类的实例,至少不能没有镜像(Flutter 和 Web 平台都不支持镜像)。


推荐阅读