如何在Flutter中获取当前选项卡索引

前端之家收集整理的这篇文章主要介绍了如何在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),);
  }
}

但事情就是这样,我想获得活动的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(),);
  }
}

猜你在找的Flutter相关文章