永久持久底部 sheet 颤动

Permanent Persistent Bottom sheet flutter

我想让我的臀部 sheet 一直显示在屏幕上,直到我用代码关闭它。通常底部 sheet 可以通过按下后退按钮(设备或应用程序栏)或什至只是通过向下的手势来关闭。我怎样才能禁用它?

_scaffoldKey.currentState
        .showBottomSheet<Null>((BuildContext context) {
      final ThemeData themeData = Theme.of(context);
      return new ControlBottom(
        songName: songName,
        url: url,
        play: play,
        pause: pause,
        state: test,
        themeData: themeData,
      );
    }).closed.whenComplete((){

    });

控制按钮是一个不同的小部件。

您可以通过在 leading 属性 中提供一个空 container 来删除应用栏后退按钮。

AppBar(
  leading: Container(),
);

但我们无法控制设备的后退按钮,按下后退按钮时底页会消失。
许多替代方法之一可能是使用 stackpositioned & opacity widget

示例:

Stack(
  children: <Widget>[
  // your code here
    Positioned(
      left: 0.0,
      right: 0.0,
      bottom: 0.0,
      child: Opacity(
        opacity: _opacityLevel,
        child: Card(
          child: //Your Code Here,
        ),
      ),
    ),
  // your code here
  ],
);

您可以在选择歌曲时将 _opacityLevel 从 0.0 更改为 1.0。

从你的代码中我可以看出,你将在顶部有一个列表视图,在底部有一个音乐控件。确保在 listView 的末尾添加一些 Padding,这样当您一直向下滚动时,您的最后一个列表项不会隐藏在您的音乐控制器卡后面。

如果您想进一步自定义音乐控制器的外观。您可以使用 animationControllersizeAnimationbottomSheet 一样从底部滑动它。

希望对您有所帮助。

您还可以使用 WillPopScope 小部件来控制按下后退按钮:

Widget _buildBottomSheet() {
    return WillPopScope(
        onWillPop: () {
            **here you can handle back button pressing. Just leave it empty to disable back button**
        },
        child: **your bottom sheet**
        )),
    );
}

脚手架现在有一个底部 sheet 参数,这个底部 sheet 不能通过向下滑动屏幕来关闭。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(....),
        bottomSheet: Container(
            child: Text('Hello World'),
        ),
    );
  }

将此参数添加到 showmodalbottomsheet, isDismissible: false, enableDrag: false,