我想打电话
Scaffold.of(context).showSnackBar(SnackBar(
content: Text("Snack text"),
));
Run Code Online (Sandbox Code Playgroud)
里面onPressed的floatingActionButton支架.
我收到这个错误
I/flutter (18613): Scaffold.of() called with a context that does not contain a Scaffold.
I/flutter (18613): No Scaffold ancestor could be found starting from the context that was passed to
....
Run Code Online (Sandbox Code Playgroud)
当你Scaffold.of(context)在一个体内打电话时,它指向一个解决方案.
https://docs.flutter.io/flutter/material/Scaffold/of.html
但是如果你在onPressed中调用它,同样的解决方案就不起作用了 FloatingActionButton
Ant*_*ace 12
您应该将floatingActionButton小部件放在Builder小部件中.以下代码应该有效:
@override
Widget build(BuildContext context) {
return new Scaffold(
floatingActionButton: new Builder(builder: (BuildContext context) {
return new FloatingActionButton(onPressed: () {
Scaffold
.of(context)
.showSnackBar(new SnackBar(content: new Text('Hello!')));
});
}),
body: new Container(
padding: new EdgeInsets.all(32.0),
child: new Column(
children: <Widget>[
new MySwitch(
value: _switchValue,
onChanged: (bool value) {
if (value != _switchValue) {
setState(() {
_switchValue = value;
});
}
},
)
],
),
),
);
Run Code Online (Sandbox Code Playgroud)
添加一个脚手架状态的全局键,并使用它来显示小吃店,如下所示,
GlobalKey<ScaffoldState> scaffoldState;
Scaffold {
key: scaffoldState,
....
scaffoldState.currentState.showSnackBar(new SnackBar(content: new Text('Hello!')));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2856 次 |
| 最近记录: |