我正在使用Scaffold小部件,但在打开底部对话框时却遇到了此异常
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Calendar"),
),
body: SafeArea(
.......
.......
child: GestureDetector(
onTap: (){
//getting exception here
showBottomSheet(
context: context,
builder: (context) => Container(
color: Colors.red,
));
},
我坚持使用此代码,如果有人可以提出任何建议,它将非常有帮助。谢谢你。
问题在于,context
用来显示的BottomSheet
不是context
的Scaffold
。你可以通过使用GlobalKey
或将其包装GestureDetector
在Builder
小部件中来解决此问题,以便为你提供context
包含的引用Scaffold
。
这是一个使用GlobalKey
的状态的示例Scaffold
:
// created the ScaffoldState key
final scaffoldState = GlobalKey<ScaffoldState>();
class MyWidget extends StatelessWidget {
void _showSheet() {
// Show BottomSheet here using the Scaffold state instead ot«f the Scaffold context
scaffoldState.currentState
.showBottomSheet((context) => Container(color: Colors.red));
}
@override
Widget build(BuildContext context) {
return Scaffold(
key: scaffoldState,
appBar: AppBar(
title: Text("Calendar"),
),
body: SafeArea(child: GestureDetector(onTap: () {
//getting exception here
_showSheet();
})));
}
}
使用您的代码时,我遇到了另一个错误。在null上调用了方法'addLocalHistoryEntry'。接收方:null尝试调用:addLocalHistoryEntry(“ LocalHistoryEntry”的实例)
您正在使用Wich类来调用addLocalHistoryEntry吗?