Reputation: 442
I'm facing problem that is really strange for me.
I'm trying to use Flutter's DataTable widget. It works with hardcoded mockup data, but as soon as I try it with real data, I get exceptions.
======== Exception caught by rendering library =====================================================
The following assertion was thrown during performLayout():
LayoutBuilder does not support returning intrinsic dimensions.
Calculating the intrinsic dimensions would require running the layout callback speculatively, which might mutate the live render object tree.
The relevant error-causing widget was:
DataTable file:///home/david/evidence-system/evidence-system-ui/lib/app/services/history/view/history.dart:41:24
When the exception was thrown, this was the stack:
dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49 throw_
packages/flutter/src/widgets/layout_builder.dart 390:9 <fn>
packages/flutter/src/widgets/layout_builder.dart 396:14 [_debugThrowIfNotCheckingIntrinsics]
packages/flutter/src/widgets/layout_builder.dart 332:12 computeMaxIntrinsicWidth
packages/flutter/src/rendering/box.dart 1377:23 <fn>
...
The following RenderObject was being processed when the exception was fired: RenderTable#0d365 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none> (can use size)
... constraints: BoxConstraints(w=824.0, h=643.0)
... size: MISSING
... specified column widths: {0: IntrinsicColumnWidth(flex: null), 1: IntrinsicColumnWidth(flex: null), 2: IntrinsicColumnWidth(flex: null), 3: IntrinsicColumnWidth(flex: null), 4: IntrinsicColumnWidth(flex: null), 5: IntrinsicColumnWidth(flex: null), 6: IntrinsicColumnWidth(flex: null)}
... default column width: FlexColumnWidth(1.0)
... table size: 7×2
... column offsets: unknown
... row offsets: []
RenderObject: RenderTable#0d365 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
parentData: <none> (can use size)
constraints: BoxConstraints(w=824.0, h=643.0)
size: MISSING
specified column widths: {0: IntrinsicColumnWidth(flex: null), 1: IntrinsicColumnWidth(flex: null), 2: IntrinsicColumnWidth(flex: null), 3: IntrinsicColumnWidth(flex: null), 4: IntrinsicColumnWidth(flex: null), 5: IntrinsicColumnWidth(flex: null), 6: IntrinsicColumnWidth(flex: null)}
default column width: FlexColumnWidth(1.0)
table size: 7×2
column offsets: unknown
row offsets: []
... child (0, 0): RenderSemanticsAnnotations#2c88c NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#9e99d NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(basic)
... child: RenderSemanticsAnnotations#38b3d NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#9dae7 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (1, 0): RenderSemanticsAnnotations#e4381 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#485e9 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(basic)
... child: RenderSemanticsAnnotations#a8a31 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#c3f75 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (2, 0): RenderSemanticsAnnotations#6eeb9 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#1b90c NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(basic)
... child: RenderSemanticsAnnotations#8b3ff NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#ec781 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (3, 0): RenderSemanticsAnnotations#d038d NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#9b7b7 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(basic)
... child: RenderSemanticsAnnotations#d8a18 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#609f8 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (4, 0): RenderSemanticsAnnotations#a3fea NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#abb50 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(basic)
... child: RenderSemanticsAnnotations#ff154 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#a8038 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (5, 0): RenderSemanticsAnnotations#5fc1a NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#e35cb NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(basic)
... child: RenderSemanticsAnnotations#84a24 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#1173b NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (6, 0): RenderSemanticsAnnotations#0b1f2 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#0fa2c NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(basic)
... child: RenderSemanticsAnnotations#02f28 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#ff4c2 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (0, 1): RenderSemanticsAnnotations#60834 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#860da NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(click)
... child: RenderSemanticsAnnotations#3a794 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#b5a60 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (1, 1): RenderSemanticsAnnotations#37e52 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#3d6b0 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(click)
... child: RenderSemanticsAnnotations#395e6 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#9dd76 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (2, 1): RenderSemanticsAnnotations#8fd13 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#a89b4 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(click)
... child: RenderSemanticsAnnotations#8e394 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#57744 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (3, 1): RenderSemanticsAnnotations#a1854 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#aadd8 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(click)
... child: RenderSemanticsAnnotations#0d64c NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#82d1c NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (4, 1): RenderSemanticsAnnotations#d8a31 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#55a3a NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(click)
... child: RenderSemanticsAnnotations#7dc63 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#678a3 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (5, 1): RenderSemanticsAnnotations#fec7a NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#89ca3 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(click)
... child: RenderSemanticsAnnotations#d6bc5 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#ab3ce NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
... child (6, 1): RenderSemanticsAnnotations#e87e1 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: offset=Offset(0.0, 0.0); default vertical alignment
... constraints: MISSING
... size: MISSING
... child: RenderMouseRegion#26cd8 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... listeners: enter, exit
... cursor: SystemMouseCursor(click)
... child: RenderSemanticsAnnotations#4dff1 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... child: RenderPointerListener#f97a0 NEEDS-LAYOUT NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE
... parentData: <none>
... constraints: MISSING
... size: MISSING
... behavior: opaque
... listeners: down
====================================================================================================
======== Exception caught by rendering library =====================================================
Assertion failed: file:///home/david/snap/flutter/common/flutter/packages/flutter/lib/src/rendering/box.dart:1940:12
hasSize
"RenderBox was not laid out: RenderTable#0d365 NEEDS-PAINT NEEDS-COMPOSITING-BITS-UPDATE"
The relevant error-causing widget was:
DataTable file:///home/david/evidence-system/evidence-system-ui/lib/app/services/history/view/history.dart:41:24
====================================================================================================
This is my code (FYI I'm using velocityX)
Widget build(BuildContext context) {
context.read<HistoryCubit>().loadHistory(widget._activityId);
return Column(
children: [
Buttons.neumorphic(context, () {}, text: context.translate("Log Act"))
.box.alignCenterLeft.make(),
BlocBuilder<HistoryCubit, HistoryState>(
builder: (context, state) {
print("building");
if (state is HistoryLoading) {
return normalCircularProgressIndicator();
}
if (state is HistoryEmpty) {
return "History is empty"
.text.makeCentered().box.make();
}
if (state is HistoryInitialized) {
return SizedBox(
width: double.infinity,
child: DataTable(
columns: state.columns, // The problem is here
rows: state.rows, // The problem is here
),
);
} else {
throw Exception("Unknown history state $state");
}
},
).box.make().expand(),
],
);
}
The problem disappears when I use hard-coded values for columns and rows so the issue may be in my column and row construction, but I don't see it.
List<DataColumn> generateColumnDefinition(List<HistoryColumnDTO> columns) {
return [
DataColumn(label: Text("")),
...columns.map((e) => DataColumn(
label: e.name.text.make(),
numeric: e.dataType.type == DataType.Number
)),
];
}
List<DataRow> generateRowDefinition(List<HistoryRowDTO> rows) {
return rows.map((HistoryRowDTO e) {
return DataRow(cells: [
...e.values.map((e) => DataCell(e.value.toString().text.make())),
]);
}).toList();
}
If you could help me, it would be awesome, thank you.
Upvotes: 1
Views: 1053
Reputation: 689
Inside DataTable - When you are using Text widget inside DataCell, use isIntrinsic prop along with your text. For eg - e.value.toString().text.isIntrinsic.make(). Let me know if it doesn’t work.
Upvotes: 2