Flutter DefaultTabController 获取/
2020-01-08 本文已影响0人
IT晴天
获取当前索引,可以看这个链接,涵盖多种方式:
其中点赞数最多的方式是使用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);