具有变元动态的新颤振偏移问题



我尝试使用一些颤振示例,但现在颤振非常严格(零问题(,所以大多数颤振示例都必须修改。大多数都很简单(您只需要添加"?"(。但我不知道如何解决这个问题:

class Navigation {
static Future<T?> navigateTo<T>({
required BuildContext context,
required Widget screen,
required NavigationRouteStyle style,
}) async {
Route? route;
if (style == NavigationRouteStyle.cupertino) {
route = CupertinoPageRoute<T>(builder: (_) => screen);
} else if (style == NavigationRouteStyle.material) {
route = MaterialPageRoute<T>(builder: (_) => screen);
}
return await Navigator.push<T>(context, route);
}
}

并且线路CCD_ 1导致错误:参数类型"Route?"无法分配给参数类型"Route"。

我不能100%确定NavigationRouteStyle是什么,因为它没有出现在flutter sdk中,而且你也没有为它提供定义。我假设它是一个只有cupertinomaterial的枚举,如下所示:

enum NavigationRouteStyle {
cupertino,
material
}

我建议将route的类型从Route?更改为Route<T>,因为Navigator.push需要Route<T>。其次,我会将if-else转换为switch语句,因为switch语句可以对枚举进行穷尽性检查,这允许return await Navigator.push<T>(context, route)0在所有情况下都是不可为null的,只要它是赋值的。

class Navigation {
static Future<T?> navigateTo<T>({
required BuildContext context,
required Widget screen,
required NavigationRouteStyle style,
}) async {
Route<T> route;
switch (style) {
case NavigationRouteStyle.cupertino:
route = CupertinoPageRoute<T>(builder: (_) => screen);
break;
case NavigationRouteStyle.material:
route = MaterialPageRoute<T>(builder: (_) => screen);
break;
}
return await Navigator.push<T>(context, route);
}
}

最新更新