Flutter

Flutter DefaultTabController 获取/

2020-01-08  本文已影响0人  IT晴天

获取当前索引,可以看这个链接,涵盖多种方式:

how-to-get-current-tab-index-in-flutter

其中点赞数最多的方式是使用TabController,然而它对我不太适用,因为我的某个需求,选项卡是动态生成的,而此方式对此不太友好

而其它方法也不太好,我最后用下面新的方式实现:

final GlobalKey<ScaffoldState> _scaffoldKey = new GlobalKey<ScaffoldState>();
List<TabModel> _tabs = [];  // 动态选项卡

  @override
  Widget build(BuildContext context) {
    return DefaultTabController(
      length: _tabs.length,
      child: Scaffold(
          key: _scaffoldKey,
          ...
      )
  )}

然后利用下面方式获取索引:

DefaultTabController.of(_scaffoldKey.currentState.context).index;

或者

DefaultTabController.of(_scaffoldKey.currentContext).index;

其中设置索引可以切换Tab,像如下代码:

DefaultTabController.of(_scaffoldKey.currentContext).index = 1;

但是这种方式会有个奇怪的效果,建议换成如下方式

DefaultTabController.of(_scaffoldKey.currentContext).animateTo(index);
上一篇下一篇

猜你喜欢

热点阅读