调用 Scaffold.of() 时出现了一个问题,该问题是由不包含 Scaffold 的上下文引起的。
调用 Scaffold.of() 时出现了一个问题,该问题是由不包含 Scaffold 的上下文引起的。
此问题已经在以下地方有答案:
Scaffold.of() called with a context that does not contain a Scaffold
我试图在scaffold上创建一个snackbar,但是出现了Scaffold.of() called with a context that does not contain a Scaffold的错误,并且我无法解决它,我尝试设置一个key但是出现了错误并且无法设置一个key,这是我的代码:
class Login extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( centerTitle: true, backgroundColor: Colors.transparent, elevation: 0.0, title: Text('Log in', style: TextStyle(color: Colors.black), textAlign: TextAlign.center), ), SizedBox( width: 500, height: 50.0, child: RaisedButton( textColor: Colors.white, color: Colors.blue, child: Text('Log In'), onPressed: () => { Scaffold.of(context).showSnackBar(SnackBar(content: Text('Done!'),)) })) ]) ], ), ), ), )); } }
admin 更改状态以发布 2023年5月21日
通过在RaisedButton周围添加一个名为Builder的小部件,可以解决这个问题。这将导致出现一个新的上下文,这是因为您使用的是实例化Scaffold的小部件的上下文,而不是Scaffold子对象的上下文,从而解决了问题。希望这能帮到你,下面我会附上更新的代码片段来帮助你!
class Login extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( centerTitle: true, backgroundColor: Colors.transparent, elevation: 0.0, title: Text('Log in', style: TextStyle(color: Colors.black), textAlign: TextAlign.center), ), SizedBox( width: 500, height: 50.0, child: Builder( builder: (context) { return RaisedButton( textColor: Colors.white, color: Colors.blue, child: Text('Log In'), onPressed: () => { Scaffold.of(context).showSnackBar(SnackBar(content: Text('Done!'),)) }) } ) ) ]) ], ), ), ), )); } }