我想显示文本(或其他类型的内容)和卡片列表。我只能显示卡片列表,但如果我添加另一个类,它会抛出异常。
仅用于卡片列表的代码(有效):
class CardPageState extends State<CardPage> {
//DeckCard is a class which contains title, description, etc
final decks = <DeckCard>[];
CardPageState(data){
decks.addAll(data);
}
@override
Widget build(BuildContext context) {
return Container(
child: buildCardPage(),
);
}
Widget buildCardPage() {
return new Container(
child: new ListView.builder(
itemCount: decks.length,
itemBuilder: /*1*/ (context, i) {
return _buildRow(decks[i]);
})
);
}
Widget _buildRow(DeckCard deckCard) {
return new Card(
child: Text(deckCard.getTitle(), style: TextStyle(fontWeight: FontWeight.bold,fontSize: 20, color:Colors.black),)
);
}
}
CardPage 从带有正文的主页调用:
body: new Container(
child: new FutureBuilder<DeckCardResponse>(
future: fetchDecksFromFirebase(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return new CardPage(snapshot.data.getDecks());
}
else if (snapshot.hasError) {
return new MessageError(499);
}
return new CircularProgressIndicator(strokeWidth: 5.0);
}),
)
当我尝试添加其他内容时抛出异常:
Widget buildCardPage() {
return new Container(
child:
new Column(
children:[
new Text("hello", style: TextStyle(fontWeight: FontWeight.bold,fontSize: 20, color:Colors.black),),
new Container(
child: new ListView.builder(
itemCount: decks.length,
itemBuilder: /*1*/ (context, i) {
return _buildRow(decks[i]);
})
),
]
),
);
有什么想法吗?我尝试只使用一个没有前一个容器的 Column,但是,我有同样的异常。
I/flutter (18134): ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
I/flutter (18134): The following assertion was thrown during performResize():
I/flutter (18134): Vertical viewport was given unbounded height.
I/flutter (18134): Viewports expand in the scrolling direction to fill their container.In this case, a vertical
I/flutter (18134): viewport was given an unlimited amount of vertical space in which to expand. This situation
I/flutter (18134): typically happens when a scrollable widget is nested inside another scrollable widget.
I/flutter (18134): If this widget is always nested in a scrollable widget there is no need to use a viewport because
I/flutter (18134): there will always be enough vertical space for the children. In this case, consider using a Column
I/flutter (18134): instead. Otherwise, consider using the "shrinkWrap" property (or a ShrinkWrappingViewport) to size
I/flutter (18134): the height of the viewport to the sum of the heights of its children.
I/flutter (18134):
I/flutter (18134): When the exception was thrown, this was the stack:
I/flutter (18134): #0 RenderViewport.performResize.<anonymous closure> (package:flutter/src/rendering/viewport.dart:1135:15)
I/flutter (18134): #1 RenderViewport.performResize (package:flutter/src/rendering/viewport.dart:1188:6)
I/flutter (18134): #2 RenderObject.layout (package:flutter/src/rendering/object.dart:1617:9)
I/flutter (18134): #3 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #4 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #5 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #6 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #7 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #8 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #9 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #10 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #11 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #12 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #13 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #14 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #15 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #16 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #17 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #18 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #19 RenderFlex.performLayout (package:flutter/src/rendering/flex.dart:738:15)
I/flutter (18134): #20 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #21 MultiChildLayoutDelegate.layoutChild (package:flutter/src/rendering/custom_layout.dart:142:11)
I/flutter (18134): #22 _ScaffoldLayout.performLayout (package:flutter/src/material/scaffold.dart:350:7)
I/flutter (18134): #23 MultiChildLayoutDelegate._callPerformLayout (package:flutter/src/rendering/custom_layout.dart:212:7)
I/flutter (18134): #24 RenderCustomMultiChildLayoutBox.performLayout (package:flutter/src/rendering/custom_layout.dart:356:14)
I/flutter (18134): #25 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #26 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #27 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #28 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #29 _RenderCustomClip.performLayout (package:flutter/src/rendering/proxy_box.dart:1206:11)
I/flutter (18134): #30 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #31 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #32 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #33 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #34 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #35 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #36 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #37 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #38 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #39 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #40 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #41 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #42 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #43 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #44 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #45 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #46 RenderOffstage.performLayout (package:flutter/src/rendering/proxy_box.dart:3032:13)
I/flutter (18134): #47 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #48 RenderStack.performLayout (package:flutter/src/rendering/stack.dart:510:15)
I/flutter (18134): #49 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #50 __RenderTheatre&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #51 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #52 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #53 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #54 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #55 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #56 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #57 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #58 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #59 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #60 _RenderProxyBox&RenderBox&RenderObjectWithChildMixin&RenderProxyBoxMixin.performLayout (package:flutter/src/rendering/proxy_box.dart:105:13)
I/flutter (18134): #61 RenderObject.layout (package:flutter/src/rendering/object.dart:1632:7)
I/flutter (18134): #62 RenderView.performLayout (package:flutter/src/rendering/view.dart:151:13)
I/flutter (18134): #63 RenderObject._layoutWithoutResize (package:flutter/src/rendering/object.dart:1507:7)
I/flutter (18134): #64 PipelineOwner.flushLayout (package:flutter/src/rendering/object.dart:766:18)
I/flutter (18134): #65 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding.drawFrame (package:flutter/src/rendering/binding.dart:329:19)
I/flutter (18134): #66 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding&WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:701:13)
I/flutter (18134): #67 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding&PaintingBinding&SemanticsBinding&RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:268:5)
I/flutter (18134): #68 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:988:15)
I/flutter (18134): #69 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:928:9)
I/flutter (18134): #70 _WidgetsFlutterBinding&BindingBase&GestureBinding&ServicesBinding&SchedulerBinding.scheduleWarmUpFrame.<anonymous closure> (package:flutter/src/scheduler/binding.dart:749:7)
I/flutter (18134): #72 _Timer._runTimers (dart:isolate/runtime/libtimer_impl.dart:382:19)
I/flutter (18134): #73 _Timer._handleMessage (dart:isolate/runtime/libtimer_impl.dart:416:5)
I/flutter (18134): #74 _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:171:12)
I/flutter (18134): (elided one frame from package dart:async)
I/flutter (18134):
I/flutter (18134): The following RenderObject was being processed when the exception was fired:
I/flutter (18134): RenderViewport#85bc5 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (18134): creator: Viewport ← IgnorePointer-[GlobalKey#ddac3] ← Semantics ← Listener ← _GestureSemantics ←
I/flutter (18134): RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#142b9] ← _ScrollableScope ←
I/flutter (18134): _ScrollSemantics-[GlobalKey#1902d] ← RepaintBoundary ← CustomPaint ← RepaintBoundary ←
I/flutter (18134): NotificationListener<ScrollNotification> ← ⋯
I/flutter (18134): parentData: <none> (can use size)
I/flutter (18134): constraints: BoxConstraints(0.0<=w<=411.4, 0.0<=h<=Infinity)
I/flutter (18134): size: MISSING
I/flutter (18134): axisDirection: down
I/flutter (18134): crossAxisDirection: right
I/flutter (18134): offset: ScrollPositionWithSingleContext#06797(offset: 0.0, range: null..null, viewport: null,
I/flutter (18134): ScrollableState, AlwaysScrollableScrollPhysics -> ClampingScrollPhysics, IdleScrollActivity#c3663,
I/flutter (18134): ScrollDirection.idle)
I/flutter (18134): anchor: 0.0
I/flutter (18134): This RenderObject had the following descendants (showing up to depth 5):
I/flutter (18134): RenderSliverPadding#e7182 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (18134): RenderSliverList#6b5c0 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (18134): ════════════════════════════════════════════════════════════════════════════════════════════════════
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: RenderViewport#85bc5 NEEDS-LAYOUT NEEDS-PAINT
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: RenderViewport#85bc5 NEEDS-PAINT
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: RenderIgnorePointer#c5ace relayoutBoundary=up9 NEEDS-PAINT
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: RenderSemanticsAnnotations#f4095 relayoutBoundary=up8 NEEDS-PAINT
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: RenderPointerListener#1d571 relayoutBoundary=up7 NEEDS-PAINT
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: RenderSemanticsGestureHandler#5cee1 relayoutBoundary=up6 NEEDS-PAINT
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: _RenderScrollSemantics#1f2eb relayoutBoundary=up5 NEEDS-PAINT
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#70e3d relayoutBoundary=up4 NEEDS-PAINT
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: RenderCustomPaint#b103f relayoutBoundary=up3 NEEDS-PAINT
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: RenderRepaintBoundary#4b75f relayoutBoundary=up2 NEEDS-PAINT
I/flutter (18134): Another exception was thrown: RenderBox was not laid out: RenderFlex#aaf3d relayoutBoundary=up1 NEEDS-PAINT
I/flutter (18134): Another exception was thrown: NoSuchMethodError: The method '<=' was called on null.
Reloaded 2 of 573 libraries in 1,622ms.
最佳答案
当 listview 和 Column 小部件扩展以匹配高度时,您必须给父级 Container 高度他们的 parent ,在你的情况下是 Container。如果你没有任何特定的尺寸,请尝试使用 MediaQuery 给它屏幕高度:
body: new Container(
height: MediaQuery.of(context).size.height, // This will make the size of it the same as the device screen
child: new FutureBuilder<DeckCardResponse>(
future: fetchDecksFromFirebase(),
builder: (context, snapshot) {
if (snapshot.hasData) {
return new CardPage(snapshot.data.getDecks());
}
else if (snapshot.hasError) {
return new MessageError(499);
}
return new CircularProgressIndicator(strokeWidth: 5.0);
}),
)
关于dart - Flutter - 在同一页面上添加卡片和文本列表后出现异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55327833/
设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案
是否有类似“RVMuse1”或“RVMuselist[0]”之类的内容而不是键入整个版本号。在任何时候,我们都会看到一个可能包含5个或更多ruby的列表,我们可以轻松地键入一个数字而不是X.X.X。这也有助于rvmgemset。 最佳答案 这在RVM2.0中是可能的=>https://docs.google.com/document/d/1xW9GeEpLOWPcddDg_hOPvK4oeLxJmU3Q5FiCNT7nTAc/edit?usp=sharing-知道链接的任何人都可以发表评论
我意识到这可能是一个非常基本的问题,但我现在已经花了几天时间回过头来解决这个问题,但出于某种原因,Google就是没有帮助我。(我认为部分问题在于我是一个初学者,我不知道该问什么......)我也看过O'Reilly的RubyCookbook和RailsAPI,但我仍然停留在这个问题上.我找到了一些关于多态关系的信息,但它似乎不是我需要的(尽管如果我错了请告诉我)。我正在尝试调整MichaelHartl'stutorial创建一个包含用户、文章和评论的博客应用程序(不使用脚手架)。我希望评论既属于用户又属于文章。我的主要问题是:我不知道如何将当前文章的ID放入评论Controller。
我的问题的一个例子是体育游戏。一场体育比赛有两支球队,一支主队和一支客队。我的事件记录模型如下:classTeam"Team"has_one:away_team,:class_name=>"Team"end我希望能够通过游戏访问一个团队,例如:Game.find(1).home_team但我收到一个单元化常量错误:Game::team。谁能告诉我我做错了什么?谢谢, 最佳答案 如果Gamehas_one:team那么Rails假设您的teams表有一个game_id列。不过,您想要的是games表有一个team_id列,在这种情况下
我正在尝试在配备ARMv7处理器的SynologyDS215j上安装ruby2.2.4或2.3.0。我用了optware-ng安装gcc、make、openssl、openssl-dev和zlib。我根据README中的说明安装了rbenv(版本1.0.0-19-g29b4da7)和ruby-build插件。.这些是随optware-ng安装的软件包及其版本binutils-2.25.1-1gcc-5.3.0-6gconv-modules-2.21-3glibc-opt-2.21-4libc-dev-2.21-1libgmp-6.0.0a-1libmpc-1.0.2-1libm
require'mechanize'agent=Mechanize.newlogin=agent.get('http://www.schoolnet.ch/DE/HomeDE.htm')agent.clicklogin.link_withtext:/Login/然后我得到Mechanize::UnsupportedSchemeError。 最佳答案 Mechanize不支持javascript但您可以将搜索字段添加到表单并为其分配搜索词并使用mechanize提交表单form=page.forms.firstform.add_fie
我正在使用Rails3.2.3和Ruby1.9.3p0。我发现我经常需要确定某个字符串是否出现在选项列表中。看来我可以使用Ruby数组.includemethod:或正则表达式equals-tildematchshorthand用竖线分隔选项:就性能而言,一个比另一个好吗?还有更好的方法吗? 最佳答案 总结:Array#include?包含String元素,在接受和拒绝输入时均胜出,对于您的示例只有三个可接受的值。对于要检查的更大的集合,看起来Set#include?和String元素可能会获胜。如何测试我们应该根据经验对此进行测试
我有可变数量的表格和可变数量的行,我想让它们一个接一个地显示,但如果表格不适合当前页面,请将其放在下一页,然后继续。我已将表格放入事务中,以便我可以回滚然后打印它(如果高度适合当前页面),但我如何获得表格高度?我现在有这段代码pdf.transactiondopdf.table@data,:font_size=>12,:border_style=>:grid,:horizontal_padding=>10,:vertical_padding=>3,:border_width=>2,:position=>:left,:row_colors=>["FFFFFF","DDDDDD"]pdf.
如thisanswer中所述,Array.new(size,object)创建一个数组,其中size引用相同的object。hash=Hash.newa=Array.new(2,hash)a[0]['cat']='feline'a#=>[{"cat"=>"feline"},{"cat"=>"feline"}]a[1]['cat']='Felix'a#=>[{"cat"=>"Felix"},{"cat"=>"Felix"}]为什么Ruby会这样做,而不是对object进行dup或clone? 最佳答案 因为那是thedocumenta
据我们所知,Jekyll默认分页仅支持index.html,我想创建blog.html并在那里包含分页。有什么解决办法吗? 最佳答案 如果您创建一个名为/blog的目录并在其中放置一个index.html文件,那么您可以向_config.yml表示paginate_path:"blog/page:num"。不是使用根文件夹中的默认index.html作为分页器模板,而是使用/blog/index.html。分页器将根据需要生成类似/blog/page2/和/blog/page3/的页面。这将使您到达yourwebsite.com/b