我希望我的底页可以一直留在屏幕上,直到从代码中关闭它为止。通常情况下,可以通过按返回按钮(设备或应用程序栏)或什至仅通过向下手势来关闭底页。如何禁用它?
_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是一个不同的小部件。
答案 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(),
);
但是我们对设备的后退按钮没有任何控制权,按下后会消失底片。
许多替代方法之一可能是使用stack
和positioned
小部件的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
,以便当您向下滚动时,最后一个列表项不会隐藏在音乐控制器卡的后面。
如果要进一步自定义音乐控制器的外观。您可以使用animationController
或sizeAnimation
像bottomSheet
一样从底部滑动它。
我希望这会有所帮助。
答案 3 :(得分:0)
将此参数添加到showmodalbottomsheet,
isDismissible: false, enableDrag: false,