Flutter Snackbar和例外:scaffold.of()的

Flutter Snackbar和例外:scaffold.of()的,flutter,dart,scaffold,Flutter,Dart,Scaffold,为什么在点击myiconButtonmysnackBar后,会使用Scaffold.of()抛出异常 我的代码: : Scaffold( backgroundColor: Colors.white, body: Container( child: ListView.builder( itemCount: user.getInvolvedEvents.length,

为什么在点击my
iconButton
my
snackBar
后,会使用
Scaffold.of()抛出异常

我的代码:

        : Scaffold(
          backgroundColor: Colors.white,
          body: Container(
            child: ListView.builder(
              itemCount: user.getInvolvedEvents.length,
              itemBuilder: (context, i){
                    return GestureDetector(
                        onTap: () {
                          //
                        },
                        child: Container(
                          height: 160.0,
                          margin: EdgeInsets.all(5),
                          child: Card(
                            child: Container(
                              decoration: BoxDecoration(
                                child: Stack(
                                  alignment: Alignment.bottomLeft,
                                  children: <Widget>[
                                    Positioned(
                                      bottom: 15,
                                      right: 20,
                                      child: Row(
                                        children: <Widget>[
                                          IconButton(
                                            icon: Icon(Icons.cancel, color: Colors.red, size: 35),
                                            onPressed: () {
                                              return showDialog(
                                                context: context,
                                                builder: (BuildContext context){
                                                  return AlertDialog(
                                                    content: Text('Czy napewno chcesz odwołać swój udział w wydarzeniu "${user.getInvolvedEvents[i].title}"?'),
                                                    actions: <Widget>[
                                                    FlatButton(
                                                      child: Text(
                                                        'TAK',
                                                        style: TextStyle(
                                                            fontWeight: FontWeight.bold,
                                                            color: Colors.black),
                                                      ),
                                                      onPressed: () async {
                                                        bool status = await removeFromInterested(user.getInvolvedEvents[i].id);
                                                        if(status){
                                                          Navigator.of(context).pop(null);

                                                          final snackBar = SnackBar(
                                                            duration: const Duration(seconds: 3),
                                                            content: Text('Nie weźmiesz udziału w wydarzeniu'),
                                                          );

                                                          Scaffold.of(context).showSnackBar(snackBar);
                                                        }
                                                      },
                                                    ),
:脚手架(
背景颜色:Colors.white,
主体:容器(
子项:ListView.builder(
itemCount:user.getInvolvedEvents.length,
itemBuilder:(上下文,i){
返回手势检测器(
onTap:(){
//
},
子:容器(
身高:160.0,
保证金:所有(5),
孩子:卡片(
子:容器(
装饰:盒子装饰(
子:堆栈(
对齐:对齐。左下角,
儿童:[
定位(
底数:15,
右:20,,
孩子:排(
儿童:[
图标按钮(
图标:图标(Icons.cancel,颜色:Colors.red,大小:35),
已按下:(){
返回显示对话框(
上下文:上下文,
生成器:(BuildContext上下文){
返回警报对话框(
内容:文本('Czy napewno chcesz odwołaćswój udziałw wydarzeniu“${user.getInvolvedEvents[i].title}”?),
行动:[
扁平按钮(
子:文本(
"德",,
样式:TextStyle(
fontWeight:fontWeight.bold,
颜色:颜色。黑色),
),
onPressed:()异步{
bool status=wait removefrominterest(user.getInvolvedEvents[i].id);
如果(状态){
Navigator.of(context.pop)(null);
最终蛇杆=蛇杆(
持续时间:常数持续时间(秒数:3),
内容:文本(“Nie weźmiesz udziału w wydarzeniu”),
);
脚手架.of(上下文).showSnackBar(snackBar);
}
},
),

感谢您的帮助:)

这是因为您使用的是
警报
上下文
,该上下文不包含
scaffold

您可以改用
GlobalKey

  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
    )
  }

这是因为您使用的是
警报
上下文
,该上下文不包含
脚手架

您可以改用
GlobalKey

  final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      key: _scaffoldKey,
    )
  }
_scaffoldKey.currentState.showSnackBar(
  SnackBar(
    content: Text('Text'),
  )
);