Dart 颤振防止Snackbar在刷卡时被解雇
当用户在不修改Dart 颤振防止Snackbar在刷卡时被解雇,dart,flutter,Dart,Flutter,当用户在不修改Snackbar类的源代码的情况下将其向下滑动时,是否有任何方法可以防止Snackbar关闭 你可以试试这个 @override Widget build(BuildContext context) { return Scaffold( body: Builder(builder: (context) { return RaisedButton( onPressed: () => showSnackbar(context), chi
Snackbar
类的源代码的情况下将其向下滑动时,是否有任何方法可以防止Snackbar
关闭 你可以试试这个
@override
Widget build(BuildContext context) {
return Scaffold(
body: Builder(builder: (context) {
return RaisedButton(
onPressed: () => showSnackbar(context),
child: Text("Show snackbar"),
);
}),
);
}
void showSnackbar(context) {
Scaffold.of(context)
.showSnackBar(SnackBar(
content: Text("I am here"),
backgroundColor: Colors.blue,
))
.closed
.then((reason) {
if (reason == SnackBarClosedReason.swipe)
showSnackbar(context);
});
}
将
手势检测器
放在SnackBar
内容
中,并在VerticalDragStart上收听,使其不那么容易被丢弃,而使用额外的\n\n\n
会让它变得非常烦人,但也可以被丢弃。:)
在本例中,它确实阻止从内容
区域解除,但不能从SnackBar padding/margin区域解除
void _showSnackBar(BuildContext context) {
final snackbar = SnackBar(
duration: Duration(days: 1),
content: GestureDetector(
behavior: HitTestBehavior.opaque,
onVerticalDragStart: (_) => debugPrint("no can do!"),
child: Text("Hi! Don't try to dismiss me.\n\n\n"),
)
);
Scaffold.of(context).showSnackBar(snackbar);
}
我甚至试着简单地将SnackBar
小部件直接放在Scaffold
的bottomsheet
——但是结果是一样的,甚至将GestureDetector
包裹在SnackBar周围,这也创造了一个有趣的“猛击SnackBar!”游戏。哈哈。但是如果不使用源代码,就很难保持snackbar的活力。所以,这是一个解决办法,你可以给它一天的时间,这样它就不会被用户解雇,除非用户这样做。不,这是一个更好的解决办法,然后我可以想出基本上回答“不”。在这个问题上有什么进展吗?@KoenVanLooveren还没有。