How to nest a customScrollView inside a listView in flutter

Viewed 834

I am trying to nest a list with sticky headers inside a LisView using the flutter_sticky_header library.

Any help to achieve that is much appriciated.

The SoldEntryPage() is a Column widget containing some Containers

This is the PageView containing the ListView

PageView(
          
          controller: _pageController,
          onPageChanged: (index) {
            setState(() => selectedBarIndex= index);
          },
          children: <Widget>[
            
            ListView(
              shrinkWrap: true,
              children: <Widget>[
              
              // Container(color: Colors.purple, child: NewEntryPage(),),
              Container(
                  padding: EdgeInsets.symmetric(vertical: 20.0, horizontal: 0.0),
                  alignment: Alignment.topLeft,
                  child: NewEntryPage()),
            ],),
            ListView(
              scrollDirection: Axis.vertical,
              shrinkWrap: true,
              children: <Widget>[
                SoldEntryPage(),
                Expanded(
                  child: ListExample()
                  )
                
              ],
            ),
           
            
          ],
        ),

this is the list with sticky_headers

import './common.dart';

class ListExample extends StatelessWidget {
  const ListExample({
    Key key,
  }) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return AppScaffold(
      title: 'List Example',
      slivers: [
        _StickyHeaderList(index: 0),
        _StickyHeaderList(index: 1),
        _StickyHeaderList(index: 2),
        _StickyHeaderList(index: 3),
      ],
    );
  }
}

class _StickyHeaderList extends StatelessWidget {
  const _StickyHeaderList({
    Key key,
    this.index,
  }) : super(key: key);

  final int index;

  @override
  Widget build(BuildContext context) {
    return SliverStickyHeader(
      header: Header(index: index),
      sliver: SliverList(
        delegate: SliverChildBuilderDelegate(
          (context, i) => ListTile(
            leading: CircleAvatar(
              child: Text('$index'),
            ),
            title: Text('List tile #$i'),
          ),
          childCount: 6,
        ),
      ),
    );
  }
}

the AppScaffold

class AppScaffold extends StatelessWidget {
  const AppScaffold({
    Key key,
    @required this.title,
    @required this.slivers,
    this.reverse = false,
  }) : super(key: key);

  final String title;
  final List<Widget> slivers;
  final bool reverse;

  @override
  Widget build(BuildContext context) {
    return DefaultStickyHeaderController(
      child: CustomScrollView(
          slivers: slivers,
          reverse: reverse,
        ),
      // Scaffold(
      //   appBar: AppBar(
      //     title: Text(title),
      //   ),
      //   body: CustomScrollView(
      //     slivers: slivers,
      //     reverse: reverse,
      //   ),
      //   floatingActionButton: const _FloatingActionButton(),
      // ),
    );
  }
}

I am getting this error back in the stack

E/flutter ( 6715): [ERROR:flutter/lib/ui/ui_dart_state.cc(157)] Unhandled Exception: Cannot hit test a render box with no size.
E/flutter ( 6715): The hitTest() method was called on this RenderBox: RenderIndexedSemantics#149c7 NEEDS-PAINT:
E/flutter ( 6715):   needs compositing
E/flutter ( 6715):   creator: IndexedSemantics ← NotificationListener<KeepAliveNotification> ← KeepAlive ← AutomaticKeepAlive ← KeyedSubtree ← _SliverFillViewportRenderObjectWidget ← _SliverFractionalPadding ← SliverFillViewport ← Viewport ← IgnorePointer-[GlobalKey#a646f] ← Semantics ← _PointerListener ← ⋯
E/flutter ( 6715):   parentData: index=1; layoutOffset=320.0
E/flutter ( 6715):   constraints: BoxConstraints(w=320.0, h=433.3)
E/flutter ( 6715):   semantic boundary
E/flutter ( 6715):   size: MISSING
E/flutter ( 6715):   index: 1
E/flutter ( 6715): Although this node is not marked as needing layout, its size is not set.
E/flutter ( 6715): A RenderBox object must have an explicit size before it can be hit-tested. Make sure that the RenderBox in question sets its size during layout.
E/flutter ( 6715): #0      RenderBox.hitTest.<anonymous closure> (package:flutter/src/rendering/box.dart:2125:9)
E/flutter ( 6715): #1      RenderBox.hitTest (package:flutter/src/rendering/box.dart:2140:6)
E/flutter ( 6715): #2      RenderSliverHelpers.hitTestBoxChild.<anonymous closure> (package:flutter/src/rendering/sliver.dart:1679:22)
E/flutter ( 6715): #3      BoxHitTestResult.addWithRawTransform (package:flutter/src/rendering/box.dart:808:31)
E/flutter ( 6715): #4      BoxHitTestResult.addWithPaintOffset (package:flutter/src/rendering/box.dart:765:12)
E/flutter ( 6715): #5      RenderSliverHelpers.hitTestBoxChild (package:flutter/src/rendering/sliver.dart:1675:19)
E/flutter ( 6715): #6      RenderSliverMultiBoxAdaptor.hitTestChildren (package:flutter/src/rendering/sliver_multi_box_adaptor.dart:564:11)
E/flutter ( 6715): #7      RenderSliver.hitTest (package:flutter/src/rendering/sliver.dart:1294:11)
E/flutter ( 6715): #8      SliverHitTestResult.addWithAxisOffset (package:flutter/src/rendering/sliver.dart:864:31)
E/flutter ( 6715): #9      RenderSliverEdgeInsetsPadding.hitTestChildren (package:flutter/src/rendering/sliver_padding.dart:221:14)
E/flutter ( 6715): #10     RenderSliver.hitTest (package:flutter/src/rendering/sliver.dart:1294:11)
E/flutter ( 6715): #11     RenderViewportBase.hitTestChildren.<anonymous closure> (package:flutter/src/rendering/viewport.dart:645:24)
E/flutter ( 6715): #12     BoxHitTestResult.addWithRawTransform (package:flutter/src/rendering/box.dart:808:31)
E/flutter ( 6715): #13     BoxHitTestResult.addWithPaintTransform (package:flutter/src/rendering/box.dart:736:12)
E/flutter ( 6715): #14     RenderViewportBase.hitTestChildren (package:flutter/src/rendering/viewport.dart:641:33)
E/flutter ( 6715): #15     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2142:11)
E/flutter ( 6715): #16     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:120:19)
E/flutter ( 6715): #17     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2142:11)
E/flutter ( 6715): #18     RenderIgnorePointer.hitTest (package:flutter/src/rendering/proxy_box.dart:3121:31)
E/flutter ( 6715): #19     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:120:19)
E/flutter ( 6715): #20     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2142:11)
E/flutter ( 6715): #21     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:120:19)
E/flutter ( 6715): #22     RenderProxyBoxWithHitTestBehavior.hitTest (package:flutter/src/rendering/proxy_box.dart:167:19)
E/flutter ( 6715): #23     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:120:19)
E/flutter ( 6715): #24     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2142:11)
E/flutter ( 6715): #25     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:120:19)
E/flutter ( 6715): #26     RenderProxyBoxWithHitTestBehavior.hitTest (package:flutter/src/rendering/proxy_box.dart:167:19)
E/flutter ( 6715): #27     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:120:19)
E/flutter ( 6715): #28     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2142:11)
E/flutter ( 6715): #29     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:120:19)
E/flutter ( 6715): #30     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2142:11)
E/flutter ( 6715): #31     RenderProxyBoxMixin.hitTestChildren (package:flutter/src/rendering/proxy_box.dart:120:19)
E/flutter ( 6715): #32     RenderCustomPaint.hitTestChildren (package:flutter/src/rendering/custom_paint.dart:508:18)
E/flutter ( 6715): #33     RenderBox.hitTest (package:flutter/src/rendering/box.dart:2142:11)
I/art     ( 6715): Enter while loop.
D/OpenGLRenderer( 6715): ~SurfaceViewPositionUpdater unlock <0x8f2860a0>
D/OpenGLRenderer( 6715): ~CanvasContext() 0x8f2ce000
Application finished.
0 Answers
Related