flutter - 强制 TabController 创建所有选项卡 Flutter

标签 flutter flutter-layout

我有一个带有两个选项卡的默认页面,使用 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/

相关文章:

dart - 为什么 StatefulWidget 的路由创建失败?

flutter :- Custom showDialog with background Color

flutter - 如何在flutter中设置布局元素的背景颜色

android - 如何将 flutter 的日期选择器值添加到文本字段?

Flutter Wrap 小部件内的 Row 小部件

text - 如何在 flutter 中将背景颜色设置为包含文本的宽度

image - 如何将图像的特定部分作为背景图像?

flutter - AppBar 中的扩展小部件

android-studio - 如何修改Sliverappbar,以便向上滚动时可以看到带有FlexibleSpaceBar的背景图像?

flutter - 当没有上下文可用时,如何从异步执行中显示 SnackBar?