未处理的异常:类型 'Future<dynamic>' 不是类型转换中类型 'PersistentBottomSheetController<dynamic>' 的子类型

Unhandled Exception: type 'Future<dynamic>' is not a subtype of type 'PersistentBottomSheetController<dynamic>' in type cast

我现在正在将我的代码转换为空安全。所以现在我已经对我的代码进行了这些更改。最初 return 类型是 void 然后我变成了 Future?但是我确实得到了这个 Unhandled Exception: type 'Future<dynamic>' is not a subtype of type 'PersistentBottomSheetController<dynamic>' in type cast 的错误。我可以做哪些其他更改来修复它。

Future<dynamic>? _showBottomSheet(
      context, MapDashboardDetails details) async {
   
    //_showPersBottomSheetCallBack = null;
    showingBottomSheet = true;

    _controller = _scaffoldKey.currentState!
        .showBottomSheet((context) {
          return VBottomSheet(
            details: details,            
            onCloseTapped: () {
              Navigator.of(context).pop();
            },
          );
        })
        .closed
        .whenComplete(() {
          if (mounted) {
            showingBottomSheet = false;
            _showPersBottomSheetCallBack = _showBottomSheet;
          }
        }) as PersistentBottomSheetController;
    return null;
  }

我是这样称呼它的。即使这是在 void 之前,然后我添加了 Future 和 async 但仍无法解决它。

Future<dynamic> _onMarkerTapped(MapDashboardDetails details) async {
  
    if (showingBottomSheet) {
      Navigator.of(context).pop();
      showingBottomSheet = false;
    }   
    _showBottomSheet(context, details);
  }
_scaffoldKey.currentState!
        .showBottomSheet((context) {
        ...
        })
        .closed
        .whenComplete(() {
          ...
        });

这 return 是一个 Future 而不是 PersistentBottomSheetController。 因此,您的 cast(= as ...) 试图将 Future 投射到它不是的东西。所以解决方案就是 return whenComplete return 的未来 :

return _scaffoldKey.currentState!
        .showBottomSheet((context) {
        ...
        })
        .closed
        .whenComplete(() {
          ...
        });