我想在底部的页面中单击某个项目时显示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.of()
注意:该问题不是this
的重复项 PS:我知道我可以在GlobalKey
中使用Scaffold
来显示Snackbar
,但是我想像使用docs suggest一样使用Builder
来显示Builder
。我确实使用了构建器,但没有用。
答案 0 :(得分:2)
这终于解决了。
@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
移到树上。不知道为什么它起作用了。