Commit a651008a authored by Hans Muller's avatar Hans Muller Committed by GitHub

Animate the "PREVIEW" banner into view (#5598)

parent e47e9376
...@@ -45,14 +45,6 @@ class GalleryAppState extends State<GalleryApp> { ...@@ -45,14 +45,6 @@ class GalleryAppState extends State<GalleryApp> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
// In checked mode, show the default "slow mode" banner, otherwise show
// the "preview" banner.
bool showPreviewBanner = true;
assert(() {
showPreviewBanner = false;
return true;
});
Widget home = new GalleryHome( Widget home = new GalleryHome(
useLightTheme: _useLightTheme, useLightTheme: _useLightTheme,
onThemeChanged: (bool value) { onThemeChanged: (bool value) {
...@@ -74,18 +66,12 @@ class GalleryAppState extends State<GalleryApp> { ...@@ -74,18 +66,12 @@ class GalleryAppState extends State<GalleryApp> {
}, },
); );
if (showPreviewBanner) if (config.updateUrlFetcher != null) {
home = new Banner(
message: 'PREVIEW',
location: BannerLocation.topRight,
child: home,
);
if (config.updateUrlFetcher != null)
home = new Updater( home = new Updater(
updateUrlFetcher: config.updateUrlFetcher, updateUrlFetcher: config.updateUrlFetcher,
child: home, child: home,
); );
}
return new MaterialApp( return new MaterialApp(
title: 'Flutter Gallery', title: 'Flutter Gallery',
......
...@@ -113,11 +113,7 @@ class GalleryDrawer extends StatelessWidget { ...@@ -113,11 +113,7 @@ class GalleryDrawer extends StatelessWidget {
final TextStyle aboutTextStyle = themeData.textTheme.body2; final TextStyle aboutTextStyle = themeData.textTheme.body2;
final TextStyle linkStyle = themeData.textTheme.body2.copyWith(color: themeData.accentColor); final TextStyle linkStyle = themeData.textTheme.body2.copyWith(color: themeData.accentColor);
return new Drawer( final Widget lightThemeItem = new DrawerItem(
child: new Block(
children: <Widget>[
new GalleryDrawerHeader(light: useLightTheme),
new DrawerItem(
icon: new Icon(Icons.brightness_5), icon: new Icon(Icons.brightness_5),
onPressed: () { onThemeChanged(true); }, onPressed: () { onThemeChanged(true); },
selected: useLightTheme, selected: useLightTheme,
...@@ -131,8 +127,9 @@ class GalleryDrawer extends StatelessWidget { ...@@ -131,8 +127,9 @@ class GalleryDrawer extends StatelessWidget {
) )
] ]
) )
), );
new DrawerItem(
final Widget darkThemeItem = new DrawerItem(
icon: new Icon(Icons.brightness_7), icon: new Icon(Icons.brightness_7),
onPressed: () { onThemeChanged(false); }, onPressed: () { onThemeChanged(false); },
selected: useLightTheme, selected: useLightTheme,
...@@ -146,9 +143,9 @@ class GalleryDrawer extends StatelessWidget { ...@@ -146,9 +143,9 @@ class GalleryDrawer extends StatelessWidget {
) )
] ]
) )
), );
new Divider(),
new DrawerItem( final Widget animateSlowlyItem = new DrawerItem(
icon: new Icon(Icons.hourglass_empty), icon: new Icon(Icons.hourglass_empty),
selected: timeDilation != 1.0, selected: timeDilation != 1.0,
onPressed: () { onTimeDilationChanged(timeDilation != 1.0 ? 1.0 : 20.0); }, onPressed: () { onTimeDilationChanged(timeDilation != 1.0 ? 1.0 : 20.0); },
...@@ -161,22 +158,9 @@ class GalleryDrawer extends StatelessWidget { ...@@ -161,22 +158,9 @@ class GalleryDrawer extends StatelessWidget {
) )
] ]
) )
), );
onShowPerformanceOverlayChanged == null ? new Container(height: 0.0) : new DrawerItem(
icon: new Icon(Icons.assessment), final Widget fileAnIssueItem = new DrawerItem(
onPressed: () { onShowPerformanceOverlayChanged(!showPerformanceOverlay); },
selected: showPerformanceOverlay,
child: new Row(
children: <Widget>[
new Flexible(child: new Text('Performance Overlay')),
new Checkbox(
value: showPerformanceOverlay,
onChanged: (bool value) { onShowPerformanceOverlayChanged(!showPerformanceOverlay); }
)
]
)
),
new DrawerItem(
icon: new Icon(Icons.report), icon: new Icon(Icons.report),
child: new RichText( child: new RichText(
text: new TextSpan( text: new TextSpan(
...@@ -189,8 +173,9 @@ class GalleryDrawer extends StatelessWidget { ...@@ -189,8 +173,9 @@ class GalleryDrawer extends StatelessWidget {
] ]
) )
) )
), );
new AboutDrawerItem(
final Widget aboutItem = new AboutDrawerItem(
icon: new FlutterLogo(), icon: new FlutterLogo(),
applicationVersion: '2016 Q3 Preview', applicationVersion: '2016 Q3 Preview',
applicationIcon: new FlutterLogo(), applicationIcon: new FlutterLogo(),
...@@ -231,9 +216,36 @@ class GalleryDrawer extends StatelessWidget { ...@@ -231,9 +216,36 @@ class GalleryDrawer extends StatelessWidget {
) )
) )
] ]
);
final List<Widget> allDrawerItems = <Widget>[
new GalleryDrawerHeader(light: useLightTheme),
lightThemeItem,
darkThemeItem,
new Divider(),
animateSlowlyItem,
// index 5, optional: Performance Overlay
fileAnIssueItem,
aboutItem
];
if (onShowPerformanceOverlayChanged != null) {
allDrawerItems.insert(5, new DrawerItem(
icon: new Icon(Icons.assessment),
onPressed: () { onShowPerformanceOverlayChanged(!showPerformanceOverlay); },
selected: showPerformanceOverlay,
child: new Row(
children: <Widget>[
new Flexible(child: new Text('Performance Overlay')),
new Checkbox(
value: showPerformanceOverlay,
onChanged: (bool value) { onShowPerformanceOverlayChanged(!showPerformanceOverlay); }
) )
] ]
) )
); ));
}
return new Drawer(child: new Block(children: allDrawerItems));
} }
} }
...@@ -99,6 +99,23 @@ class GalleryHomeState extends State<GalleryHome> { ...@@ -99,6 +99,23 @@ class GalleryHomeState extends State<GalleryHome> {
static final Key _homeKey = new ValueKey<String>("Gallery Home"); static final Key _homeKey = new ValueKey<String>("Gallery Home");
static final GlobalKey<ScrollableState> _scrollableKey = new GlobalKey<ScrollableState>(); static final GlobalKey<ScrollableState> _scrollableKey = new GlobalKey<ScrollableState>();
final AnimationController _controller = new AnimationController(
duration: const Duration(milliseconds: 600),
debugLabel: "preview banner"
);
@override
void initState() {
super.initState();
_controller.forward();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
List<Widget> _galleryListItems() { List<Widget> _galleryListItems() {
final List<Widget> listItems = <Widget>[]; final List<Widget> listItems = <Widget>[];
final ThemeData themeData = Theme.of(context); final ThemeData themeData = Theme.of(context);
...@@ -126,7 +143,7 @@ class GalleryHomeState extends State<GalleryHome> { ...@@ -126,7 +143,7 @@ class GalleryHomeState extends State<GalleryHome> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final double statusBarHeight = MediaQuery.of(context).padding.top; final double statusBarHeight = MediaQuery.of(context).padding.top;
return new Scaffold( Widget home = new Scaffold(
key: _homeKey, key: _homeKey,
scrollableKey: _scrollableKey, scrollableKey: _scrollableKey,
drawer: new GalleryDrawer( drawer: new GalleryDrawer(
...@@ -160,5 +177,30 @@ class GalleryHomeState extends State<GalleryHome> { ...@@ -160,5 +177,30 @@ class GalleryHomeState extends State<GalleryHome> {
children: _galleryListItems() children: _galleryListItems()
) )
); );
// In checked mode our MaterialApp will show the default "slow mode" banner.
// Otherwise show the "preview" banner.
bool showPreviewBanner = true;
assert(() {
showPreviewBanner = false;
return true;
});
if (showPreviewBanner) {
home = new Stack(
children: <Widget>[
home,
new FadeTransition(
opacity: new CurvedAnimation(parent: _controller, curve: Curves.easeInOut),
child: new Banner(
message: 'PREVIEW',
location: BannerLocation.topRight,
)
),
]
);
}
return home;
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment