我有一个问题,Flutter( dart )渲染Flex溢出像素。一个例外的渲染库。
如何管理应用页面视图或将滚动功能应用于应用页面视图,并避免Flutter的渲染异常,显示以下消息:
RenderFlex在底部溢出了28个像素。
如果你碰巧需要完整的日志来帮助我的话,这里有:
在热加载时,其底部出现黄色/黑色条纹,如消息所示。
我可以用一个可滚动的小部件来管理它吗?或者我可以声明我的小部件来控制它?
完整代码(如果需要)(我更改了文本数据,但假设出现的文本比屏幕大小长,因此出现错误):
@override
Widget build(BuildContext context) {
return new DefaultTabController(
length: 3,
child: new Scaffold(
appBar: new AppBar(
bottom: new TabBar(
tabs: [
new Tab(text: "xxx",),
new Tab(text: "xxx",),
new Tab(text: "xxx",),
],
),
title: new Text(data["xxx"]),
),
body: new TabBarView(
children: [
new Column(
children: <Widget>[
new Text(data["xxx"],
style: new TextStyle(
fontStyle: FontStyle.italic,
color: Colors.blue,
fontSize: 16.0
),),
new Text(data["xxx"],
style: new TextStyle(
fontStyle: FontStyle.italic,
color: Colors.blue,
fontSize: 10.0
),),
new Text(data["xxx"],
style: new TextStyle(
fontStyle: FontStyle.italic,
color: Colors.blue,
fontSize: 16.0
),),
new Text(data["xxx"],
style: new TextStyle(
fontStyle: FontStyle.italic,
color: Colors.blue,
fontSize: 8.0
),
),
new Text(data["xxx"],
style: new TextStyle(
fontStyle: FontStyle.italic,
color: Colors.blue,
fontSize: 8.0
),),
new Row(
children: <Widget>[
new Expanded(
child: new Text("xxx"),
),
new Expanded(
child: new Icon(Icons.file_download, color: Colors.green, size: 30.0,),
),
],
),
new Divider(),
new Text("xxx",
style: new TextStyle(
fontStyle: FontStyle.italic,
color: Colors.red,
fontSize: 16.0
),
),
],
),
new ListView.builder(
itemBuilder: (BuildContext context, int index) => new EntryItem(_lstTiles[index]),
itemCount: _lstTiles.length,
),
new Column(
children: <Widget>[
new Text(data["xxx"],
style: new TextStyle(
fontStyle: FontStyle.italic,
color: Colors.green[900],
fontSize: 16.0
),
),
new Text(data["xxx"],
style: new TextStyle(
fontStyle: FontStyle.italic,
color: Colors.green[900],
fontSize: 16.0
),),
new Text(data["xxx"]),
new ListTile(title: new Text("xxx")),
new Text(data["xxx"]),
new ListTile(title: new Text("xxx")),
new Divider(),
new Text("xxx",
style: new TextStyle(
fontStyle: FontStyle.italic,
color: Colors.red,
fontSize: 16.0
),
),
],
),
],
),
),
);
}
7条答案
按热度按时间66bbxpm51#
这是一个非常常见的问题,尤其是当你开始在多个设备和方向上测试应用时。Flutter的Widget图库中有一个部分涵盖了各种滚动Widget:
https://flutter.io/widgets/scrolling/
我建议要么用
SingleChildScrollView
Package 你的全部内容,要么使用滚动的ListView
。**编辑:**此问题和答案已收到一些通知,因此我想为登陆此处的用户提供更多帮助。
Flutter SDK团队在SDK代码中投入了大量的精力来编写良好的文档。要了解
Flex
小部件(Row
和Column
都是Flex
的子类)用于布局其子控件的算法,最好的资源之一是类本身附带的DartDoc:https://github.com/flutter/flutter/blob/e3005e6962cfefbc12e7aac56576597177cc966f/packages/flutter/lib/src/widgets/basic.dart#L3724
Flutter网站还包含一个关于建筑布局的tutorial和一个关于如何使用
Row
和Column
小部件的interactive codelab。oprakyz72#
假设您有一个
List
,包含100个Text
小部件,如下所示:根据设备屏幕的不同,这些小部件可能会溢出,几乎没有解决方案可以处理它。
1.使用 Package 在
SingleChildScrollView
中的Column
1.使用
ListView
1.使用
Column
和ListView
的组合(您应该使用Expanded
/Flexible
,或者在执行此操作时为ListView
给予固定高度)。uxhixvfz3#
我也面临这个问题,试试这个......
在身体部位之前
byqmnocz4#
您可以对列中的每个容器使用小部件
Expanded
,然后使用flex
进行正确的调整。wr98u20j5#
您可以在PreferredSize小工具中换行文本:
r3i60tvu6#
对于我来说,我添加了一个文本到一个行子,我从firebase获取数据,它是空的。所以确保有一些数据进来。
daupos2t7#
如果您使用列,请使用展开的小部件 Package ,如下所示