我有一个带有两个选项卡的默认页面,使用 TabBar 和 TabController。一切正常,除了当我进入页面时,第二个选项卡的构建方法仅在我单击以更改为第二个选项卡时调用。问题是,当我进入页面时,我希望已经创建了两个选项卡(也就是执行了它们的构建方法)。有什么想法吗?
插图代码:
//This widget is used inside a Scaffold
class TabsPage extends StatefulWidget {
@override
State<StatefulWidget> createState() => new TabsPageState();
}
class TabsPageState extends State<TabsPage> with TickerProviderStateMixin {
List<Tab> _tabs;
List<Widget> _pages;
TabController _controller;
@override
void initState() {
super.initState();
_tabs = [
new Tab(text: 'TabOne'),
new Tab(text: 'TabTwo')
];
_pages = [
//Just normal stateful widgets
new TabOne(),
new TabTwo()
];
_controller = new TabController(length: _tabs.length, vsync: this);
}
@override
Widget build(BuildContext context) {
return new Padding(
padding: EdgeInsets.all(10.0),
child: new Column(
children: <Widget>[
new TabBar(
controller: _controller,
tabs: _tabs
),
new SizedBox.fromSize(
size: const Size.fromHeight(540.0),
child: new TabBarView(
controller: _controller,
children: _pages
),
)
],
),
);
}
}
最佳答案
我有一个类似的问题,我正在使用带有表单的选项卡,我想验证所有这些选项卡,我的解决方案是以编程方式切换到第二个选项卡,不访问带有需要验证的表单的选项卡是没有意义的.
所以给每个表单一个全局键:
final _formKey = GlobalKey<FormState>();
我希望构建所有选项卡的原因是使用:_formKey.currentState.validate()
所以我的解决方法是if (_formKey.currentState == null) { //The tab was never visited, force it
_tabController.animateTo(1);
return;
}
关于flutter - 强制 TabController 创建所有选项卡 Flutter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52106675/