tabs_demo.dart 1.42 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
// 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';

import 'widget_demo.dart';

final List<String> _iconNames = <String>["event", "home", "android", "alarm", "face", "language"];

11 12 13 14 15 16 17 18
Widget _buildTabBarSelection(_, Widget child) {
  return new TabBarSelection(
    maxIndex: _iconNames.length - 1,
    child: child
  );
}

Widget _buildTabBar(_) {
19 20 21 22 23 24 25 26 27 28 29 30
  return new TabBar(
    isScrollable: true,
    labels: _iconNames.map((String iconName) => new TabLabel(text: iconName, icon: "action/$iconName")).toList()
  );
}

class TabsDemo extends StatefulComponent {
  _TabsDemoState createState() => new _TabsDemoState();
}

class _TabsDemoState extends State<TabsDemo> {
  Widget build(_) {
Hans Muller's avatar
Hans Muller committed
31 32 33 34 35 36 37 38 39 40 41
    return new TabBarView<String>(
      items: _iconNames,
      itemBuilder: (BuildContext context, String iconName, int index) {
        return new Container(
          key: new ValueKey<String>(iconName),
          padding: const EdgeDims.all(12.0),
          child: new Card(
            child: new Center(child: new Icon(icon: "action/$iconName", size:IconSize.s48))
          )
        );
      }
42 43 44 45 46 47 48
    );
  }
}

final WidgetDemo kTabsDemo = new WidgetDemo(
  title: 'Tabs',
  routeName: '/tabs',
49 50
  tabBarBuilder: _buildTabBar,
  pageWrapperBuilder: _buildTabBarSelection,
51 52
  builder: (_) => new TabsDemo()
);