Проблема в том, что контекст, используемый для отображения 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();
})));
}
}