在底部的页面中点击项目时显示小吃栏

时间:2018-12-20 12:46:53

标签: dart flutter

我想在底部的页面中单击某个项目时显示Snackbar。我试过了

@override
Widget build(BuildContext defaultContext) {
  return Scaffold(
    body: Center(
      child: RaisedButton(
        onPressed: () => showModalBottomSheet(
              context: defaultContext,
              builder: (BuildContext context) {
                return Builder(
                  builder: (BuildContext builderContext) {
                    return ListTile(
                      title: Text("Click me"),
                      onTap: () {
                        Navigator.pop(builderContext); // hiding bottom sheet
                        Scaffold.of(builderContext).showSnackBar(SnackBar(content: Text("Hi")));
                      },
                    );
                  },
                );
              },
            ),
      ),
    ),
  );
}

但是我有错误

  在不包含脚手架的上下文中调用

Scaffold.of()

注意:该问题不是this

的重复项

PS:我知道我可以在GlobalKey中使用Scaffold来显示Snackbar,但是我想像使用docs suggest一样使用Builder来显示Builder。我确实使用了构建器,但没有用。

1 个答案:

答案 0 :(得分:2)

这终于解决了。

@override
Widget build(BuildContext defaultContext) {
  return Scaffold(
    body: Center(
      child: Builder(builder: (builderContext) {
        return RaisedButton(
          onPressed: () => showModalBottomSheet(
            context: defaultContext,
            builder: (BuildContext context) {
              return ListTile(
                title: Text("Click me"),
                onTap: () {
                  Navigator.pop(builderContext); // hiding bottom sheet
                  Scaffold.of(builderContext).showSnackBar(SnackBar(content: Text("Hi")));
                },
              );
            },
          ),
        );
      },),
    ),
  );
}

我需要将Builder移到树上。不知道为什么它起作用了。