【问题标题】:Snackbar duration and height小吃店的持续时间和高度
【发布时间】:2019-02-28 05:16:58
【问题描述】:

我正在尝试展示一个小吃店。
在我点击一个手势检测器后,这个零食有两个按钮。
问题是小吃栏出现几秒钟然后消失。

所以我有两个问题:

  1. 在用户执行操作并单击按钮之前,如何阻止小吃栏消失?
  2. 此外,snackbar 具有整个屏幕的高度。
    如何使其在屏幕底部具有特定高度?

【问题讨论】:

  • 在进行故障排除时,最好共享代码的相关 sn-ps,以便我们帮助您找出解决问题的方法。

标签: flutter height duration snackbar


【解决方案1】:

您可以使用长duration

HomeScreen.scaffoldKey.currentState.showSnackBar(
    SnackBar(duration: const Duration(minutes: 5), content: Text(message)));

另见https://material.io/design/components/snackbars.html#behavior

出现和消失

Snackbars 会在没有警告的情况下出现,并且不需要用户交互。 至少四次后,它们会自动从屏幕上消失 秒,最多十秒。

【讨论】:

  • 感谢您的回复。我想过这个问题,但即使在用户单击按钮后它也不会消失,它会一直保持,这不是我想要的。
  • 您可以在ScaffoldState 上调用hideCurrentSnackBar(...) 以在按钮docs.flutter.io/flutter/material/ScaffoldState/…onPressed: ... 中将其删除
  • 如何在 ScaffoldState 上调用它?
  • 使用您传递给 Scaffold 的 GlobalKey。
【解决方案2】:

我写了一些关于我是如何解决这个问题的https://dev.to/eyewritecode/persisting-flutter-snackbar-until-user-interacts-with-it-2583

你基本上必须设置一个很长的持续时间

duration: Duration(days: 1)

并在您想隐藏它时调用以下命令。

Scaffold.of(context).hideCurrentSnackBar();

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 我的错,我添加了更多细节。
  • "Scaffold.of(context).hideCurrentSnackBar();"已被弃用。最新的是“ScaffoldMessenger.of(context).hideCurrentSnackBar();”。谢谢
【解决方案3】:

您可以通过设置不同的最大行数来更改快餐栏的高度(通常默认为 2):

你可以这样做(例子有 10 行):

 View snackbarView = snackbar.getView();
            TextView snackTextView = (TextView) snackbarView.findViewById(
            com.google.android.material.R.id.snackbar_text);

            snackTextView.setMaxLines(10);
            snackbar.show();

【讨论】:

    【解决方案4】:
    final Snackbar snack = Snackbar.make(findViewById(android.R.id.content),  helpMsg, Snackbar.LENGTH_INDEFINITE);
    snack.setAction("OK", new View.OnClickListener() {
           @Override
           public void onClick(View v) {
              // Respond to the click dismiss is automatic with this
    
               }
    });
    View view = snack.getView();
    FrameLayout.LayoutParams params =(FrameLayout.LayoutParams)view.getLayoutParams();
    params.gravity = Gravity.TOP;
    view.setLayoutParams(params);
    snack.show();
    

    【讨论】:

    • 您能否显示您的代码,以便我们了解您获得整页的原因
    • 你仔细阅读问题标签了吗?没有androidjava 标签
    猜你喜欢
    • 2016-02-06
    • 2017-04-07
    • 2017-03-04
    • 2022-01-15
    • 2020-07-25
    • 2018-06-15
    • 2019-09-14
    • 2018-09-27
    • 1970-01-01
    相关资源
    最近更新 更多