Skip to content

Instantly share code, notes, and snippets.

@ethanliew
Forked from branflake2267/main.dart
Created September 23, 2019 10:26
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 ethanliew/a4501edbc6dfcdfaee235cf842a8bf37 to your computer and use it in GitHub Desktop.
Save ethanliew/a4501edbc6dfcdfaee235cf842a8bf37 to your computer and use it in GitHub Desktop.
Flutter - Display the SnackBar using the GlobalKey
import 'package:flutter/material.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return new MaterialApp(
title: 'Flutter Demo',
theme: new ThemeData(
primarySwatch: Colors.blue,
),
home: new MyHomePage(),
routes: {
TabsPage.routeName: (context) => new TabsPage(),
},
);
}
}
/// HOME
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => new _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
@override
Widget build(BuildContext context) {
return new Scaffold(
appBar: new AppBar(
title: new Text("Home Page"),
),
body: new ListView(
children: <Widget>[
new ListTile(
title: new Text("Home Body"),
),
new ListTile(
title: new RaisedButton(
child: new Text("Route to Tabs".toUpperCase()),
onPressed: () {
Navigator.of(context).pushNamed(TabsPage.routeName);
}),
),
],
),
);
}
}
/// Tabs
class TabsPage extends StatefulWidget {
static String routeName = "/tabsPage";
@override
_TabsPageState createState() => new _TabsPageState();
}
class _TabsPageState extends State<TabsPage> {
var _scaffoldKey = new GlobalKey<ScaffoldState>();
@override
Widget build(BuildContext context) {
return new DefaultTabController(
length: 2,
child: new Scaffold(
key: _scaffoldKey,
appBar: new AppBar(
bottom: new TabBar(
tabs: [
new Tab(icon: new Icon(Icons.directions_car), text: "Cars"),
new Tab(
icon: new Icon(Icons.directions_transit), text: "Transit"),
],
),
title: new Text('Tabs'),
),
body: new TabBarView(
children: [
new CarsTab(scaffoldKey: _scaffoldKey,),
new TransitTab(scaffoldKey: _scaffoldKey,),
],
),
),
);
}
}
/// Cars
class CarsTab extends StatefulWidget {
final GlobalKey<ScaffoldState> scaffoldKey;
CarsTab({Key key, this.scaffoldKey}) : super(key: key);
@override
_CarsTabState createState() => new _CarsTabState();
}
class _CarsTabState extends State<CarsTab> {
bool _enabled = false;
@override
Widget build(BuildContext context) {
return new ListView(
children: <Widget>[
new SwitchListTile(
title: new Text("Enable Cars Route"),
value: _enabled,
onChanged: (bool value) {
setState(() {
_enabled = value;
});
if (value) {
var snackbar = new SnackBar(content: new Text("Cars enabled"));
widget.scaffoldKey.currentState.showSnackBar(snackbar);
}
}),
],
);
}
}
/// Transit
class TransitTab extends StatefulWidget {
final GlobalKey<ScaffoldState> scaffoldKey;
TransitTab({Key key, this.scaffoldKey}) : super(key: key);
@override
_TransitTabState createState() => new _TransitTabState();
}
class _TransitTabState extends State<TransitTab> {
bool _enabled = false;
@override
Widget build(BuildContext context) {
return new ListView(
children: <Widget>[
new SwitchListTile(
title: new Text("Enable Transit Route"),
value: _enabled,
onChanged: (bool value) {
setState(() {
_enabled = value;
});
if (value) {
var snackbar = new SnackBar(content: new Text("Transit enabled"));
widget.scaffoldKey.currentState.showSnackBar(snackbar);
}
}),
],
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment