xterm.dart
xterm.dart copied to clipboard
Uncaught error if TerminalView is placed inside a Column widget
Running as a macOS app, I'm getting the following error:
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following UnsupportedError was thrown building LayoutBuilder:
Unsupported operation: Infinity or NaN toInt
The relevant error-causing widget was:
LayoutBuilder
LayoutBuilder:file:///Users/pouriamellati/.pub-cache/hosted/pub.dartlang.org/xterm-2.6.0/lib/frontend/terminal_view.dart:187:16
When the exception was thrown, this was the stack:
#0 double.toInt (dart:core-patch/double.dart)
#1 double.floor (dart:core-patch/double.dart:201:34)
#2 _TerminalViewState.updateTerminalSize (package:xterm/frontend/terminal_view.dart:393:58)
#3 _TerminalViewState.onWidgetSize (package:xterm/frontend/terminal_view.dart:382:5)
#4 _TerminalViewState.build.<anonymous closure> (package:xterm/frontend/terminal_view.dart:188:11)
#5 _LayoutBuilderElement._layout.layoutCallback (package:flutter/src/widgets/layout_builder.dart:122:31)
#6 BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2600:19)
#7 _LayoutBuilderElement._layout (package:flutter/src/widgets/layout_builder.dart:156:12)
#8 RenderObject.invokeLayoutCallback.<anonymous closure> (package:flutter/src/rendering/object.dart:1997:59)
#9 PipelineOwner._enableMutationsToDirtySubtrees (package:flutter/src/rendering/object.dart:918:15)
#10 RenderObject.invokeLayoutCallback (package:flutter/src/rendering/object.dart:1997:14)
#11 RenderConstrainedLayoutBuilder.rebuildIfNecessary (package:flutter/src/widgets/layout_builder.dart:230:7)
#12 _RenderLayoutBuilder.performLayout (package:flutter/src/widgets/layout_builder.dart:319:5)
#13 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#14 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#15 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#16 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#17 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#18 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:56:11)
#19 RenderFlex._computeSizes (package:flutter/src/rendering/flex.dart:829:43)
#20 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:931:32)
#21 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#22 RenderPositionedBox.performLayout (package:flutter/src/rendering/shifted_box.dart:437:14)
#23 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#24 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:171:12)
#25 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:1005:7)
#26 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:240:7)
#27 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:403:14)
#28 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#29 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#30 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#31 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#32 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1376:11)
#33 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#34 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#35 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#36 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#37 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#38 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#39 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#40 ChildLayoutHelper.layoutChild (package:flutter/src/rendering/layout_helper.dart:56:11)
#41 RenderStack._computeSize (package:flutter/src/rendering/stack.dart:570:43)
#42 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:597:12)
#43 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#44 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#45 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#46 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#47 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#48 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#49 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#50 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#51 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#52 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#53 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#54 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#55 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#56 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#57 RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3430:13)
#58 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#59 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#60 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#61 _RenderTheatre.performLayout (package:flutter/src/widgets/overlay.dart:751:15)
#62 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#63 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#64 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#65 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#66 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#67 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#68 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#69 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#70 RenderCustomPaint.performLayout (package:flutter/src/rendering/custom_paint.dart:545:11)
#71 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#72 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#73 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#74 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#75 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#76 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#77 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#78 RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:116:14)
#79 RenderObject.layout (package:flutter/src/rendering/object.dart:1887:7)
#80 RenderView.performLayout (package:flutter/src/rendering/view.dart:165:14)
#81 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1731:7)
#82 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:887:18)
#83 RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:497:19)
#84 WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:883:13)
#85 RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:363:5)
#86 SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1144:15)
#87 SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1081:9)
#88 SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:862:7)
(elided 11 frames from class _RawReceivePortImpl, class _Timer, dart:async, and dart:async-patch)
════════════════════════════════════════════════════════════════════════════════════════════════════
Another exception was thrown: A RenderFlex overflowed by 99456 pixels on the bottom.
Minimal code to reproduce this is:
import 'package:flutter/material.dart';
import 'package:xterm/xterm.dart';
import 'package:xterm/flutter.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Demo',
theme: ThemeData(
primarySwatch: Colors.teal,
),
home: const MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
const MyHomePage({Key? key}) : super(key: key);
@override
State<MyHomePage> createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
final terminal = Terminal(
maxLines: 10000,
);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: const Text("Hello, terminal!"),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: <Widget>[
TerminalView(
terminal: terminal,
style: const TerminalStyle(fontFamily: ['Cascadia Mono']),
),
],
),
),
);
}
}
Have you tried putting an Expanded
widget around TerminalView
:
Expanded(
child: TerminalView(
terminal: terminal
style: const TerminalStyle(fontFamily: ['Cascadia Mono']),
),
)