不能无条件调用该函数,因为它可以为“空”

时间:2021-07-12 22:06:10

标签: flutter dart

我收到此错误

<块引用>

该函数不能无条件调用,因为它可以 '空'。

尝试添加空检查 ('!').dart(unchecked_use_of_nullable_value)

Map routeBuilders

routeBuilders[initialRoute](context),

即使添加空检查后,它也没有得到修复,请帮忙

routeBuilders![initialRoute](context),

代码

@override
  Widget build(BuildContext context) {
    final routeBuilders = _routeBuilders();
    return Navigator(
      key: navigatorKey,
      initialRoute: tabNavigatorRoot,
      onGenerateInitialRoutes: (_, initialRoute) {
        return [
          MaterialPageRoute(
            settings: RouteSettings(name: tabNavigatorRoot),
            
            builder: (context) => routeBuilders[initialRoute](context),
          )
        ];
      },
    );
  }



Map<String, WidgetBuilder> _routeBuilders() {
    return {tabNavigatorRoot: (context) => _getScreen(context, item)};
  }

1 个答案:

答案 0 :(得分:1)

看起来你把空检查放错了地方。地图访问运算符的签名是 python nuitka-hints.py main.py,如果 V? operator[](K key) 不存在于地图中,它可以返回 null。

在您的示例中,key 始终为 routeBuilders,因此无需在此处执行空检查。但是,您确实需要对 Map<String, WidgetBuilder> 的结果执行空检查,如下所示:

routeBuilders[initialRoute]

在调用之前对返回的闭包执行空检查。