一个以TabBar作为底部widget的AppBar。
TabBar可用于在TabBarView中显示的页面之间导航。虽然TabBar是一个可以出现在任何地方的普通widget,但它通常包含在应用程序的AppBar中。
通过flutter create命令创建一个新项目,并用下面的代码替换lib/main.dart的内容来尝试运行一下。
// Copyright 2017 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 TabbedAppBarSample extends StatelessWidget {@overrideWidget build(BuildContext context) {return new MaterialApp(home: new DefaultTabController(length: choices.length,child: new Scaffold(appBar: new AppBar(title: const Text('Tabbed AppBar'),bottom: new TabBar(isScrollable: true,tabs: choices.map((Choice choice) {return new Tab(text: choice.title,icon: new Icon(choice.icon),);}).toList(),),),body: new TabBarView(children: choices.map((Choice choice) {return new Padding(padding: const EdgeInsets.all(16.0),child: new ChoiceCard(choice: choice),);}).toList(),),),),);}}class Choice {const Choice({ this.title, this.icon });final String title;final IconData icon;}const List<Choice> choices = const <Choice>[const Choice(title: 'CAR', icon: Icons.directions_car),const Choice(title: 'BICYCLE', icon: Icons.directions_bike),const Choice(title: 'BOAT', icon: Icons.directions_boat),const Choice(title: 'BUS', icon: Icons.directions_bus),const Choice(title: 'TRAIN', icon: Icons.directions_railway),const Choice(title: 'WALK', icon: Icons.directions_walk),];class ChoiceCard extends StatelessWidget {const ChoiceCard({ Key key, this.choice }) : super(key: key);final Choice choice;@overrideWidget build(BuildContext context) {final TextStyle textStyle = Theme.of(context).textTheme.display1;return new Card(color: Colors.white,child: new Center(child: new Column(mainAxisSize: MainAxisSize.min,crossAxisAlignment: CrossAxisAlignment.center,children: <Widget>[new Icon(choice.icon, size: 128.0, color: textStyle.color),new Text(choice.title, style: textStyle),],),),);}}void main() {runApp(new TabbedAppBarSample());}
也可以看看:
- Material Design规范的Components-Tabs部分。
- 本示例的源代码 examples/catalog/lib/tabbed_app_bar.dart.
