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.