如何向 Snackbar 添加边距或填充?

Alo*_*lok 15 material-design snackbar flutter

我一直在 Snackbar 上工作,并在我的项目中取得了成功。但是,我想将这个小东西添加到 Snackbar 中,那就是margins. 我在这个链接中看到过:Snackbars - Material Design

我真的希望我的 Snackbar 像这样:

目标图片

我现在得到的是这个:

结果图片

我的代码是:

final snackBar = SnackBar(
    content: Text("Feild(s) are empty!"),
    duration: new Duration(seconds: 1),
    backgroundColor: Theme.of(context).primaryColor,
  );
  Scaffold.of(context).showSnackBar(snackBar);
}
Run Code Online (Sandbox Code Playgroud)

Osa*_*Fel 33

Flutter 团队已更新了小吃店以匹配此PR中的材料设计。您可以通过设置简单地获得新行为

行为:SnackBarBehavior.floating

这是一个示例代码

final snackBar = SnackBar(
  elevation: 6.0,
  backgroundColor: Configs.current.COLORS_PRIMARY,
  behavior: SnackBarBehavior.floating,
  content: Text(
    "Snack bar test",
    style: TextStyle(color: Colors.white),
  ),
);
Run Code Online (Sandbox Code Playgroud)

结果看起来像这样

在此处输入图片说明


spg*_*ara 7

不确定利润率。圆角 SnackBar 可以像这样创建:

Scaffold
    .of(context)
    .showSnackBar(
        SnackBar(
            content: Text(message),
            shape: RoundedRectangleBorder(
                borderRadius: BorderRadius.all(Radius.circular(20)))));
Run Code Online (Sandbox Code Playgroud)

在上面使用所需的边界半径。

更新:您可以使用浮动SnackBar来添加默认边距。下面传递给SnackBar构造函数:

Scaffold
.of(context)
.showSnackBar(
    SnackBar(
        content: Text(message),
        behavior: SnackBarBehavior.floating,
        shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.all(Radius.circular(20)))));
Run Code Online (Sandbox Code Playgroud)


Cop*_*oad 6

截屏:

在此输入图像描述


最小代码:

var snackbar = SnackBar(
  content: Text('Hello World!'),
  margin: EdgeInsets.all(20),
  behavior: SnackBarBehavior.floating,
);
Scaffold.of(context).showSnackBar(snackbar);
Run Code Online (Sandbox Code Playgroud)

完整代码:

@override
Widget build(BuildContext context) {
  return Scaffold(
    body: Center(
      child: Builder(builder: (context) {
        return RaisedButton(
          onPressed: () {
            var snackbar = SnackBar(
              content: Text('Hello World!'),
              margin: EdgeInsets.all(20),
              behavior: SnackBarBehavior.floating,
            );
            Scaffold.of(context).showSnackBar(snackbar);
          },
          child: Text('Show SnackBar'),
        );
      }),
    ),
  );
}
Run Code Online (Sandbox Code Playgroud)