class BetterSnackBar extends StatelessWidget implements SnackBar {
Widget build(BuildContext context) {
// Tweak the build method for maximum customization
}
// rest of the class, you can just copy-paste it
// from SnackBar, if you want to make sure you support
// everything the original snack bar supports
}
5条答案
按热度按时间doinxwow1#
首先,根据你的截图,也许这已经被
SnackBarBehavior
支持了,只要传递snackbar构造函数behavior: SnackBarBehavior.floating
,就像这样:如果这仍然不够好,最好的方法是从
SnackBar
小部件开始并对其进行定制。虽然小部件的构造器参数使小部件非常灵活,但SnackBar
小部件不允许您修改它的每个小细节。例如,我想删除一些填充在小吃店和添加一些边界上的顶部,并在撰写本文时,这是不可能的。
你不应该直接修改
snack_bar.dart
,因为它会修改你的本地副本Flutter。直接修改snack_bar.dart
有几个缺点:1.你所有的本地Flutter项目都会有这些修改。
1.如果你在一个团队中,没有其他人会有这些自定义。
1.如果您使用“标准”CI/CD管道(因为您只修改了Flutter的本地副本),则构建的应用程序将不会有这些自定义,发布的应用程序也不会有这些自定义。
1.升级Flutter(或更换频道)可能会更困难,因为Flutter在后台使用git(分支,提交)进行升级
添加任何复杂的调整,实现对
SnackBar
小部件的任何自定义(当然除了其公共接口)的最佳解决方案是implement
it。这样,您仍然可以像使用原始的
BetterSnackBar
小部件一样使用自定义小部件,例如使用scaffold来显示它:Scaffold.of(context).showSnackBar(betterSnackBar);
。这个解决方案也不会影响你的本地Flutter副本(其他项目不会受到影响,你可以轻松地在Flutter频道之间切换,并在你的计算机上升级你的Flutter版本),这意味着你可以版本控制你的项目的
BetterSnackBar
(CI工作,同事会看到变化)。kqlmhetl2#
如果你想实现浮动的外观,从底部向上滑动漂亮的动画,你可以手动完成,对标准SnackBar实现进行一些自定义,而不必编辑Flutter的源代码:
bqjvbblv3#
这不会是一个小吃店,但它可以工作一样。
1)使用LinearLayout、Relative或Constraint创建一个视图,该视图看起来像您要在其上显示的页面中的快餐栏。
2)将可见性设置为“消失”或“不可见”。
3)将onCLickListener添加到按钮,以使Snackbar(您刚刚创建的布局)在单击按钮时可见。
de90aj5v4#
编辑:警告!!!!!!!我检查它,它为您的所有项目更改,所以我认为这不是一个真正的好选择
你好,我一直在尝试做同样的你,和方式,我发现,可以帮助是编辑的主要snack_bar.dart文件。您可以通过按住control键并单击代码中的Snackbar小部件来访问它。
在那之后,只需要在开头加上这个“import 'package:flutter/material. dart”;”并更改此:
为此:
当你实现你的snackbar时,结果将是下一个:
4jb9z9bj5#
如果你想展示一个完全定制的snackBar,那么我希望我的这个答案能帮助你。
1:将此包添加到pubspec.yaml文件(smart_snackbars:^1.0.0)
2:import 'package:smart_snackbars/smart_snackbars.dart';在您所需的文件中。
比如说,
你想在按钮点击时显示一个snackBar,然后在你的回调函数中粘贴以下代码
结果:
这就是如何制作完全定制的snackBar