【问题标题】:Flutter - TabBar inside ColumnFlutter - 列内的 TabBar
【发布时间】:2021-04-27 17:03:53
【问题描述】:

我有一个带有图像的Column,其下方是DefaultTabController。 TabBar 基本不显示选项卡,而是显示TabBarView 的子项。

这是错误

对空值使用的空检查运算符相关的错误原因 小部件是 TabBar lib/.../screens/specific_launch.dart:132 触发异常时正在处理以下 RenderObject: RenderCustomPaint#83c8d relayoutBoundary=up10 RenderObject: RenderCustomPaint#83c8d relayoutBoundary=up10 父数据:offset=Offset(0.0, 0.0);弹性=空; fit=null(可以使用大小) 约束:BoxConstraints(0.0

这是代码

 return Scaffold(
    appBar: AppBar(
      title: Text(
        'Launch',
        style: GoogleFonts.poppins(fontWeight: FontWeight.w600),
      ),
      actions: [
        IconButton(icon: Icon(Icons.share_outlined), onPressed: () {})
      ],
    ),
    body: Padding(
      padding: EdgeInsets.only(
          top: getHeight(context) / 30.0,
          left: getWidth(context) / 30.0,
          right: getWidth(context) / 30.0),
      child: Column(
        children: [
          // ...first child


          SizedBox(
            width: getWidth(context),
            height: getHeight(context),
            child: DefaultTabController(
                length: 3,
                initialIndex: 0,
                child: Scaffold(
                  appBar: AppBar(
                    bottom: TabBar(
                      tabs: [
                        Tab(
                          text: 'State',
                        ),
                        Tab(
                          text: 'Mission',
                        ),
                        Tab(
                          text: 'Rocket',
                        )
                      ],
                    ),
                  ),
                  body: TabBarView(
                    children: [
                      Text(
                        'Tab 1',
                      ),
                      Text('Tab 2'),
                      Text('Tab 3')
                    ],
                  ),
                )),
          )
        ],
      ),
    ));

这就是我想要达到的结果:

【问题讨论】:

  • 你嵌套Scaffold小部件的原因是什么?
  • 我看到了DefaultTabController的文档,应该有一个带有AppBar和body的Scaffold
  • 删除 Sizedbox 并尝试使用 Expanded 小部件包装 DefaultTabController,如果 OutOfBoundary 导致问题。
  • 不,还是一样

标签: flutter


【解决方案1】:

因此,如果您想使用DefaultTabController 小部件,那么您必须使用DefaultTabController 小部件启动您的小部件树,然后添加您的Scaffold。之后我只使用了一个 Scaffold 并在 Expanded 小部件的帮助下添加了其余部分

这里是output image

class SelectionScreen extends StatefulWidget{
  @override
  State<StatefulWidget> createState() {
    // TODO: implement createState
    return _selectionScreen();
  }
}
class _selectionScreen extends State<SelectionScreen>{
  @override
  Widget build(BuildContext context) {
    // TODO: implement build

    return DefaultTabController(
        length: 3,
        initialIndex: 0,
        child: Scaffold(
          appBar: AppBar(
            title: Text('Launch',),
            actions: [IconButton(icon: Icon(Icons.share_outlined), onPressed: () {})],
          ),
          body: Column(
            children: [
              Image.network("https://i.stack.imgur.com/45Aaj.png", height: 150,),
              Container(
                height: 70,
                child: AppBar(
                  centerTitle: true,
                  title: Text("New Titile"),
                  bottom: TabBar(
                    tabs: [
                      Tab(text: 'State',),
                      Tab(text: 'Mission',),
                      Tab(text: 'Rocket',)
                    ],
                  ),
                ),
              ),
              Expanded(
                child: TabBarView(
                  children: [
                    Text('Tab 1',),
                    Text('Tab 2'),
                    Text('Tab 3')
                  ],
                ),
              )
            ],
          ),
        ));
  }
}

【讨论】:

  • 它给了我同样的错误,标签仍然没有显示
  • @Arfmann 我认为首先您需要清理干净,然后尝试使用此代码,因为它会等待输出,添加屏幕截图
  • @Arfmann 请重新检查我更新的答案
  • 这很奇怪,它对我不起作用。这是我的完整代码pastebin.com/YbDbxd2h
  • @Arfmann 请添加您遇到的错误
猜你喜欢
  • 2021-03-27
  • 1970-01-01
  • 2018-11-09
  • 2016-11-08
  • 2019-08-17
  • 2020-08-18
  • 2021-04-26
  • 1970-01-01
  • 2021-03-25
相关资源
最近更新 更多