我想展示一个小吃店。
在我点击手势检测器后,这种零食有两个按钮。
问题是小吃店出现几秒钟,然后消失。
所以我有两个问题:
- 如何阻止小吃栏消失,直到用户采取行动并单击按钮?
- 此外,小吃店的高度相当于整个屏幕。
如何使其在屏幕底部具有特定高度?
您可以使用长duration
HomeScreen.scaffoldKey.currentState.showSnackBar(
SnackBar(duration: const Duration(minutes: 5), content: Text(message)));
另请参阅 https://material.io/design/components/snackbars.html#behavior
出现和消失
小吃栏的显示没有警告,并且不需要用户交互。 它们在至少四个后自动从屏幕上消失 秒,最长 10 秒。
我写了一些关于我如何解决这个问题 https://dev.to/eyewritecode/persisting-flutter-snackbar-until-user-interacts-with-it-2583
你基本上必须设置一个很长的持续时间
duration: Duration(days: 1)
并在要隐藏它时调用以下内容。
Scaffold.of(context).hideCurrentSnackBar();
您可以通过设置不同的最大行数(通常默认为 2(来更改小吃栏的高度:
您可以像这样执行此操作(例如 10 行(:
View snackbarView = snackbar.getView();
TextView snackTextView = (TextView) snackbarView.findViewById(
com.google.android.material.R.id.snackbar_text);
snackTextView.setMaxLines(10);
snackbar.show();
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();