未处理的异常:类型 '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(() {
...
});
我现在正在将我的代码转换为空安全。所以现在我已经对我的代码进行了这些更改。最初 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 ...) 试图将 FuturewhenComplete
return 的未来
:
return _scaffoldKey.currentState!
.showBottomSheet((context) {
...
})
.closed
.whenComplete(() {
...
});