永久性底片颤动

时间:2018-08-22 17:08:52

标签: flutter bottom-sheet flutter-layout

我希望我的底页可以一直留在屏幕上,直到从代码中关闭它为止。通常情况下,可以通过按返回按钮(设备或应用程序栏)或什至仅通过向下手势来关闭底页。如何禁用它?

_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((){

    });

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

4 个答案:

答案 0 :(得分:1)

您还可以使用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**
        )),
    );
}

答案 1 :(得分:1)

脚手架现在具有一个底页参数,并且不能通过向下滑动屏幕来消除此底页。

  @override
  Widget build(BuildContext context) {
    return Scaffold(
        appBar: AppBar(....),
        bottomSheet: ....
    );
  }

答案 2 :(得分:0)

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

AppBar(
  leading: Container(),
);

但是我们对设备的后退按钮没有任何控制权,按下后会消失底片。
许多替代方法之一可能是使用stackpositioned小部件的opacity

示例:

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,在底部拥有音乐控件。确保在listView的末尾添加一些Padding,以便当您向下滚动时,最后一个列表项不会隐藏在音乐控制器卡的后面。

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

我希望这会有所帮助。

答案 3 :(得分:0)

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