Skip to content

Instantly share code, notes, and snippets.

@Ekeminie
Created June 11, 2020 15:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Ekeminie/2229a0087fa1905e8ad87db4f6dbca4a to your computer and use it in GitHub Desktop.
Save Ekeminie/2229a0087fa1905e8ad87db4f6dbca4a to your computer and use it in GitHub Desktop.
Flutter Bottom Sheet
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
debugShowCheckedModeBanner: false,
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(title: 'Bottom Sheet'),
);
}
}
class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);
final String title;
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final GlobalKey<ScaffoldState> _scaffoldKey = GlobalKey<ScaffoldState>();
void displayPersistentBottomSheet() {
_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 persistent bottom sheet. Drag downwards to dismiss it.',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 24.0,
),
),
),
);
});
}
void displayModalBottomSheet(context) {
showModalBottomSheet(
context: context,
builder: (BuildContext bc) {
return Container(
child: new Wrap(
children: <Widget>[
new ListTile(
leading: new Icon(Icons.music_note),
title: new Text('Music'),
onTap: () => {}),
new ListTile(
leading: new Icon(Icons.videocam),
title: new Text('Video'),
onTap: () => {},
),
],
),
);
});
}
@override
Widget build(BuildContext context) {
return new Scaffold(
key: _scaffoldKey,
appBar: AppBar(
title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
onPressed: () {
displayModalBottomSheet(context);
},
child: const Text('Modal BottomSheet')),
RaisedButton(
onPressed: displayPersistentBottomSheet,
child: Text('Persistent BottomSheet'))
])));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment