In this article, I'm going to share an example code for persistent bottom sheet in Flutter.
Before seeing this code, here is the output of this app.
Key things to note here are that touches on the empty area of the screen don't take away the bottom sheet.
Before going further, let's get some basics on bottom sheets.
There are two kinds of bottom sheets in material design: Persistent and Modal.
In this example, we are going to see Persistent type.
For Modal bottom sheet, check this article. https://fluttercentral.com/Articles/Post/1081
This gives an alternate behavior, where touches on the empty area of the screen should take away the bottom sheet
Another example, showing how to send data to the model sheet. https://fluttercentral.com/Articles/Post/1110
Here is the full code of this sample. In order to run this, copy paste this code into main.dart file in your newly created flutter project.
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
void _showBottomSheetCallback() {
_scaffoldKey.currentState.showBottomSheet<void>((BuildContext context) {
return Container(
decoration: BoxDecoration(
border: Border(top: BorderSide(color: Colors.black)),
color: Colors.grey
),
child: Padding(
padding: const EdgeInsets.all(32.0),
child: Text('This is a Material persistent bottom sheet. Drag downwards to dismiss it.',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 24.0,
),
),
),
);
});
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home:Scaffold(
key: _scaffoldKey,
appBar: AppBar(
title: const Text('Persistent bottom sheet')
),
body: Center(
child: RaisedButton(
onPressed: _showBottomSheetCallback,
child: const Text('Show Persistent Bottom Sheet')
)
)
),
);
}
}
Hope this is helpful.
Thanks,
Srikanth