CustomScrollView内的TabView

时间:2019-01-06 22:43:08

标签: flutter

用SliverFillRemaining包装TabBarView(填充剩余的空白空间,如Expanded)会产生以下错误输出。

颤振:RenderPositionedBox预期为RenderBox类型的子代,但接收到类型为RenderBox的子代 颤抖:RenderSliv​​erList。

TabController tabContoller;
    @override
  void initState() {
    tabContoller = new TabController(
      vsync: this,
      length: 3,
    );


 @override
 Widget build(BuildContext context) {
    return new Scaffold(
        floatingActionButton:floatActionBtn(...),
        bottomNavigationBar: bottomNavigationBar(...),
        appBar: apBar(),
        body: Stack(
          children: <Widget>[
            CustomScrollView(
              slivers: <Widget>[
                SliverAppBar(
                  backgroundColor: Colors.transparent,
                  automaticallyImplyLeading: false,
                  expandedHeight: 195.0,
                  flexibleSpace: FlexibleSpaceBar(
                    background: new Stack(
                        children: <Widget>[
                          ...

                        ]),
                  ),
                ),
                  new SliverFillRemaining(
                    child: TabBarView(
                      controller: tabContoller,
                      children: <Widget>[
                        Tab(...),
                        Tab(...),
                        Tab(...)
                      ],
                    ),
                  ),
              ],
            ),
          ],

        )

1 个答案:

答案 0 :(得分:2)

别忘了 @override Widget build(BuildContext context) { return DefaultTabController( length: 3, child: Container( child: CustomScrollView(slivers: <Widget>[ SliverAppBar(), new SliverFillRemaining( child: TabBarView( children: <Widget>[ Text("Tab 1"), Text("Tab 2"), Text("Tab 3"), ], ), ), ])), ); } ,此代码可以正常工作:

'