// Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/material.dart'; class PageSelectorDemo extends StatelessWidget { static const String routeName = '/page-selector'; void _handleArrowButtonPress(BuildContext context, int delta) { final TabBarSelectionState<IconData> selection = TabBarSelection.of/*<IconData>*/(context); if (!selection.valueIsChanging) selection.value = selection.values[(selection.index + delta).clamp(0, selection.values.length - 1)]; } @override Widget build(BuildContext notUsed) { // Can't find the TabBarSelection from this context. final List<IconData> icons = <IconData>[ Icons.event, Icons.home, Icons.android, Icons.alarm, Icons.face, Icons.language, ]; return new Scaffold( appBar: new AppBar(title: new Text('Page selector')), body: new TabBarSelection<IconData>( values: icons, child: new Builder( builder: (BuildContext context) { final Color color = Theme.of(context).accentColor; return new Column( children: <Widget>[ new Container( margin: const EdgeInsets.only(top: 16.0), child: new Row( children: <Widget>[ new IconButton( icon: new Icon(Icons.chevron_left), color: color, onPressed: () { _handleArrowButtonPress(context, -1); }, tooltip: 'Page back' ), new TabPageSelector<IconData>(), new IconButton( icon: new Icon(Icons.chevron_right), color: color, onPressed: () { _handleArrowButtonPress(context, 1); }, tooltip: 'Page forward' ) ], mainAxisAlignment: MainAxisAlignment.spaceBetween ) ), new Flexible( child: new TabBarView<IconData>( children: icons.map((IconData icon) { return new Container( key: new ObjectKey(icon), padding: const EdgeInsets.all(12.0), child: new Card( child: new Center( child: new Icon(icon, size: 128.0, color: color) ) ) ); }) .toList() ) ) ] ); } ) ) ); } }