在 Flutter 中实现选项卡布局简单明了。这是官方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),
],
),
),
),
);
}
}
但事情是这样的,我想获得事件标签索引,这样我就可以在某些标签上应用一些逻辑。我搜索了文档,但我无法弄清楚。可以帮忙看看吗?
最佳答案
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(),
),
);
}
}
https://stackoverflow.com/questions/50123354/
相关文章:
http - 在flutter http请求中为所有请求设置默认 header 的最佳方法
dart - 如何在 flutter 中将图像转换为base64图像?
dart - 输入文本时自动扩展的 Flutter 文本字段,然后在达到特定高度时开始滚动文本
api - 为 HTTPClient get() 请求设置超时
dart - Flutter - 无法构建,因为框架已经在构建
android - 使用 google dart 语言的原生移动应用程序
dart - Flutter 测试 MissingPluginException