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还没有。