panic_widgets 1.0.4 panic_widgets: ^1.0.4 copied to clipboard
A collection of widgets that are useful in pretty much any app.
import 'package:flutter/material.dart';
import 'package:panic_widgets/panic_widgets.dart';
import './calendar.dart';
void main() {
runApp(PanicWidgetsExampleApp());
}
class RouteItem {
final Icon icon;
final String title;
final String route;
final Widget Function(BuildContext) builder;
const RouteItem({
@required this.icon,
@required this.title,
@required this.route,
@required this.builder,
});
}
class PanicWidgetsExampleApp extends StatelessWidget {
final routeItems = [
RouteItem(
icon: Icon(Icons.calendar_today),
title: 'Calendar',
route: '/calendar',
builder: (context) => PanicWidgetsExampleCalendarPage(),
)
];
@override
Widget build(BuildContext context) {
return MaterialApp(
initialRoute: '/calendar',
onGenerateRoute: (settings) {
var routeItem = routeItems.firstWhere((i) => i.route == settings.name, orElse: () => null);
return MaterialPageRoute(
builder: (context) {
return Scaffold(
appBar: AppBar(
title: Text('PanicWidgets example' + (routeItem != null ? ' - ${routeItem.title}' : '')),
),
drawer: PanicDrawer(
currentAccountPicture: CircleAvatar(
child: Text('ME'),
),
accountName: Text('Mr. Example / exampleman'),
accountEmail: Text('man@example.com'),
items: [
for (RouteItem item in routeItems)
ListTile(
leading: item.icon,
title: Text(item.title),
onTap: () => Navigator.pushReplacementNamed(context, item.route),
),
],
detailItems: [
ListTile(
leading: Icon(
Icons.settings,
color: Theme.of(context).primaryIconTheme.color,
),
title: Text(
'Settings',
style: Theme.of(context).primaryTextTheme.bodyText2,
),
onTap: () => Navigator.pushReplacementNamed(context, '/settings'),
),
ListTile(
leading: Icon(
Icons.exit_to_app,
color: Theme.of(context).primaryIconTheme.color,
),
title: Text(
'Log out',
style: Theme.of(context).primaryTextTheme.bodyText2,
),
onTap: () => Navigator.pop(context),
),
],
),
body: routeItem?.builder(context) ?? Center(child: Text('Unknown route')),
);
},
);
},
);
}
}