在颤动中,实现标签布局既简单又直接.这是官方
documentation的一个简单示例:
import 'package:flutter/material.dart'; void main() { runApp(new TabBarDemo()); } class TabBarDemo extends StatelessWidget { @override Widget build(BuildContext context) { return new MaterialApp( home: new DefaultTabController( length: 3,child: new Scaffold( appBar: new AppBar( bottom: new TabBar( tabs: [ new Tab(icon: new Icon(Icons.directions_car)),new Tab(icon: new Icon(Icons.directions_transit)),new Tab(icon: new Icon(Icons.directions_bike)),],),title: new Text('Tabs Demo'),body: new TabBarView( children: [ new Icon(Icons.directions_car),new Icon(Icons.directions_transit),new Icon(Icons.directions_bike),); } }
但事情就是这样,我想获得活动的tab索引,以便我可以在某些选项卡上应用一些逻辑.我搜索文档,但我无法弄清楚.你们能帮帮忙吗?
解决方法
DefaultTabController的重点是让它自己管理标签.
如果您想要一些自定义选项卡管理,请改用TabController
.
使用TabController,您可以访问更多信息,包括当前索引.
class MyTabbedPage extends StatefulWidget { const MyTabbedPage({Key key}) : super(key: key); @override _MyTabbedPageState createState() => new _MyTabbedPageState(); } class _MyTabbedPageState extends State<MyTabbedPage> with SingleTickerProviderStateMixin { final List<Tab> myTabs = <Tab>[ new Tab(text: 'LEFT'),new Tab(text: 'RIGHT'),]; TabController _tabController; @override void initState() { super.initState(); _tabController = new TabController(vsync: this,length: myTabs.length); } @override void dispose() { _tabController.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return new Scaffold( appBar: new AppBar( bottom: new TabBar( controller: _tabController,tabs: myTabs,body: new TabBarView( controller: _tabController,children: myTabs.map((Tab tab) { return new Center(child: new Text(tab.text)); }).toList(),); } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。