首页 > 解决方案 > Snackbar 未在颤动中显示

问题描述

我似乎无法弄清楚为什么这不起作用。当我点击按钮时,我应该得到一个小吃店。有什么帮助吗?Flutter api 上的代码片段运行良好


void main() => runApp(SnackBarDemo());

class SnackBarDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: SafeArea(
        child: Scaffold(
          body: Center(
            child: InkWell(
              // When the user taps the button, show a snackbar.
              onTap: () {
                Scaffold.of(context).showSnackBar(SnackBar(
                  content: Text('Tap'),
                ));
              },
              child: Container(
                padding: EdgeInsets.all(12.0),
                child: Text('Flat Button'),
              ),
            ),
          )
        )
      )
    );
  }
}

标签: flutterdart

解决方案


您正在调用showSnackbar同一级别的小部件Scaffold,因此您发送到此方法的上下文不包含Scaffold,

解决方案:使这个小部件低于Scaffold

void main() => runApp(SnackBarDemo());

class SnackBarDemo extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home: SafeArea(
            child: Scaffold(
                body: Center(
                  child: Builder(
                    builder: (context)=>InkWell(
                      // When the user taps the button, show a snackbar.
                      onTap: () {
                        Scaffold.of(context).showSnackBar(SnackBar(
                          content: Text('Tap'),
                        ));
                      },
                      child: Container(
                        padding: EdgeInsets.all(12.0),
                        child: Text('Flat Button'),
                      ),
                    ),
                  ),
                )
            )
        )
    );
  }
}

推荐阅读