7

在我的代码中,我调用底部表来显示瓷砖列表。这些磁贴包含显示快餐栏的按钮。该功能工作正常,唯一的问题是小吃栏显示在底部工作表后面,因此只有关闭底部工作表才能看到它。它们中的每一个都使用以下代码调用:

1. 底片:

  void _settingModalBottomSheet(context, stream, scaffoldKey ) {
    if (_availableRides.length == 0) {
      return null;
    } else {
      return scaffoldKey.currentState.showBottomSheet((context) {
        return Column(
          children: Widgets;
      });
    }
  }

2.小​​吃店

widget.scaffoldKey.currentState.showSnackBar(SnackBar(
         content: Text("Created", textAlign: 
    TextAlign.center,),),

有谁知道我如何将小吃店放在底部纸的前面

4

6 回答 6

6

所以我可以通过在我的底部表中添加另一个 Scaffold() 并传递一个新的脚手架键来解决这个问题

于 2019-03-14T04:28:17.003 回答
5

SnackBar有一个属性。它被称为behavior,你可以这样做:

SnackBar(
    behavior: SnackBarBehavior.floating,
    ...

SnackBarBehavior 枚举

浮动 → const SnackBarBehavior

此行为将导致 SnackBar 显示在 Scaffold 中的其他小部件上方。这包括显示在 BottomNavigationBar 和 FloatingActionButton 上方。

有关更多详细信息,请参见 material.io/design/components/snackbars.html。

于 2019-10-21T06:30:07.187 回答
2

我通过 Set (padding from bottom to SnackBar) 解决了 (bottomSheet : height) 的高度。

在这种情况下,我有这个底部表:

bottomSheet: Container(
          child: RaisedButton(...),
          width: MediaQuery.of(context).size.width,
          height: AppBar().preferredSize.height * 0.85,
        ),

还有这个snackbar:

_scaffoldKey.currentState.showSnackBar(SnackBar(
padding:EdgeInsetsDirectional.only(
bottom:AppBar().preferredSize.height * 0.85),
backgroundColor: Colors.red,
duration: new Duration(milliseconds: 3000),
content: Text('ETC..'),
                ));
于 2020-10-10T10:23:35.890 回答
0

我通过更改bottomSheet为解决了这个问题,bottomNavigationBar因为浮动小吃店解决方案对我不起作用。

于 2020-09-02T15:44:22.747 回答
0

你可以使用flushbar包。如果需要与 bottomSheet 一起使用,我认为这是更好的选择。

bottomSheet 内的任何事件

 CustomFlushBar().flushBar(text: 'Thank you for your payment!', context: context,duration: 2);

CustomFlushBar 类

  class CustomFlushBar {
      void flushBar({int duration, @required String text, Color iconColor, IconData iconData, Color backgroundColor, @required BuildContext context}) async {
        await dismiss();
        Flushbar(
          margin: EdgeInsets.all(8),
          borderRadius: 8,
          backgroundColor: backgroundColor ?? Palette.greenButton,
          icon: Icon(iconData ?? Icons.done, color: iconColor ?? Palette.white),
          flushbarStyle: FlushbarStyle.FLOATING,
          message: text,
          duration: Duration(seconds: duration ?? 3),
        )..show(context);
      }
    
      Future<void> dismiss() async {
        if (!Flushbar().isDismissed()) {
          await Flushbar().dismiss();
        }
      }
    }
于 2020-12-17T11:00:58.797 回答
0

您可以通过使用 Scaffold 包装您的 BottomSheet 小部件来实现此目的。

例如:

 void _settingModalBottomSheet(context, stream, scaffoldKey ) {
    if (_availableRides.length == 0) {
      return null;
    } else {
      return scaffoldKey.currentState.showBottomSheet((context) {
        return Scaffold(
           body: Column(
             children: Widgets;
           })
         );
    }
  }
于 2022-01-27T12:02:18.907 回答