首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用不包含Scaffold的上下文调用Scaffold.of()。问题

使用不包含Scaffold的上下文调用Scaffold.of()。问题
EN

Stack Overflow用户
提问于 2020-08-11 17:01:06
回答 1查看 215关注 0票数 0

我试图在脚手架上创建一个snackbar,但是使用不包含scaffold的上下文调用了Scaffold.of()。我无法解决它,我试着放一个键,但是上面有一个错误,不能设置一个键,这是我的代码:

代码语言:javascript
复制
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!'),))
                            }))
                  ])
                ],
              ),
            ),
          ),
        ));
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-11 17:10:32

可以通过在RaisedButton周围添加一个名为Builder的小部件来解决这个问题。这会导致出现一个新的上下文来解决问题,因为您使用的是实例化Scaffold的小部件的上下文,而不是Scaffold的子上下文。希望这会有所帮助,我已经在下面包含了一个更新的代码段来帮助!

代码语言:javascript
复制
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!'),))
                                })
                             }
                        )
                   )
                  ])
                ],
              ),
            ),
          ),
        ));
  }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63362957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档