Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何从MaterialPageRoute中的builder对象获取小部件类名_Flutter_Dart_Flutter Navigation - Fatal编程技术网

Flutter 如何从MaterialPageRoute中的builder对象获取小部件类名

Flutter 如何从MaterialPageRoute中的builder对象获取小部件类名,flutter,dart,flutter-navigation,Flutter,Dart,Flutter Navigation,我希望有一个自定义MaterialPagerRoute,其中RouteSettings对象将被指定一个默认名称,该名称应为生成器,即小部件类名 我已经重写了下面的方法,不知道如何从生成器对象中获取类名 import 'package:flutter/material.dart'; class CMaterialPageRoute extends MaterialPageRoute { CMaterialPageRoute({@required builder, RouteSettings

我希望有一个自定义MaterialPagerRoute,其中RouteSettings对象将被指定一个默认名称,该名称应为生成器,即小部件类名

我已经重写了下面的方法,不知道如何从生成器对象中获取类名

import 'package:flutter/material.dart';
class CMaterialPageRoute extends MaterialPageRoute {


 CMaterialPageRoute({@required builder, RouteSettings settings, maintainState = true, bool fullscreenDialog = false,})
  : assert(builder != null),
    assert(maintainState != null),
    assert(fullscreenDialog != null),
    assert(opaque),
    super(settings: settings == null ? new RouteSettings(name: (builder as Widget).toStringShort()):settings,fullscreenDialog: fullscreenDialog);

}
在上面的代码中,我试图从构建器获取小部件,并将短名称设置为RouteSettings名称,但问题是强制转换,获取以下错误表示强制转换不可能

类型“(动态)=>CitySelectionScreen”不是类型转换中类型“Widget”的子类型

我这样做的原因是作为Firebase analytics集成的一部分,我需要更改我的整个导航代码,以添加以前没有的新路由设置,我正在尝试解决这些问题,设置默认名称,而不是在整个项目级别进行的更改

请在这方面帮助我。

builder是类型函数,您不能将其强制转换为Widget。我不确定您想要实现什么,但是如果您使用null调用builder,您将能够知道它返回哪个小部件:

final WidgetBuilder=(BuildContext)=>Scaffold();
打印(b(null.toString());
它打印

脚手架