コードから閉じるまで、一番下のシートを画面に表示したままにします。通常、一番下のシートは、戻るボタン(デバイスまたはアプリバー)を押すか、下向きのジェスチャーで閉じることができます。どうすればそれを無効にできますか?
_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((){
});
コントロールボタンは別のウィジェットです。
Scaffoldにボトムシートの引数が追加され、画面を下にスワイプしてこのボトムシートを閉じることはできません。
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(....),
bottomSheet: Container(
body: Text('Hello World'),
),
);
}
また、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**
)),
);
}
container
プロパティに空のleading
を指定すると、appbarの戻るボタンを削除できます。
AppBar(
leading: Container(),
);
ただし、デバイスの戻るボタンを制御することはできず、戻るとボトムシートが消えます。
多くの代替アプローチの1つは、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
のように下からスライドさせることができます。
これがお役に立てば幸いです。