我尝试像这样编码
showModalBottomSheet(
context: context, // I got error here (Undefined name 'context'.dart(undefined_identifier))
builder: (context){
return Container(
);
);
我在context: context
上收到错误,错误信息是
未定义的名称'context'.dart(undefined_identifier)
这就是你如何在showModalBottomSheet
中调用StatelessWidget
class TestStatelessWidget extends StatelessWidget{
@override
Widget build(BuildContext context) {
return RaisedButton(
child: Text('Press me'),
onPressed: ()=>showPress(context),
);
}
void showPress(BuildContext context){
showModalBottomSheet(context:context, builder: (context){
return Text('hello');
});
}
}
您收到此错误是因为您无法在context
类中访问StatelessWidget
。所有你需要做的是从context
传递build()
,如果你在build()
方法之外使用它,否则在build()
方法中使用它。
解决方案1.(在build()
内部使用)
@override
Widget build(BuildContext context) {
return RaisedButton(
child: Text("Show sheet"),
onPressed: () {
showModalBottomSheet(context: context, builder: (context) => YourWidget());
},
);
}
解决方案2.(在build()
之外使用)
@override
Widget build(BuildContext context) {
return RaisedButton(
child: Text("Show sheet"),
onPressed: () => _showSheet(context),
);
}
void _showSheet(BuildContext context) {
showModalBottomSheet(context: context, builder: (context) => YourWidget());
}
你没有正确关闭你的showModalBottomSheet
的builder
。有一个}
失踪。
这将是正确的用法:
showModalBottomSheet(
context: context,
builder: (builder){
return Container();
}
);