我想在底部工作表中单击项目时显示Snackbar
。我试过了。
@override
Widget build(BuildContext defaultContext) {
return Scaffold(
body: Center(
child: RaisedButton(
onPressed: () => showModalBottomSheet(
context: defaultContext,
builder: (BuildContext context) {
return Builder(
builder: (BuildContext builderContext) {
return ListTile(
title: Text("Click me"),
onTap: () {
Navigator.pop(builderContext); // hiding bottom sheet
Scaffold.of(builderContext).showSnackBar(SnackBar(content: Text("Hi")));
},
);
},
);
},
),
),
),
);
}
但是我有错误
使用不包含Scaffold 的上下文调用的Scaffold.of((注意此问题与不重复
PS:我知道我可以在Scaffold
中使用GlobalKey
来显示Snackbar
,但我想像文档建议使用Builder
那样使用Builder
。我确实用了建造者,但没用。
这终于成功了。
@override
Widget build(BuildContext defaultContext) {
return Scaffold(
body: Center(
child: Builder(builder: (builderContext) {
return RaisedButton(
onPressed: () => showModalBottomSheet(
context: defaultContext,
builder: (BuildContext context) {
return ListTile(
title: Text("Click me"),
onTap: () {
Navigator.pop(builderContext); // hiding bottom sheet
Scaffold.of(builderContext).showSnackBar(SnackBar(content: Text("Hi")));
},
);
},
),
);
},),
),
);
}
我需要把Builder
移到树上。不知道原因,但它起了作用。