我有一个2列抖动数据表和行不跨越屏幕宽度留下大量白色。我发现这个问题
https://github.com/flutter/flutter/issues/12775
建议将DataTable Package 在SizedBox.expand小部件中,但这不起作用,会产生RenderBox was not laid out:
SizedBox.expand(
child: DataTable(columns:_columns, rows:_rows),
),
完整小部件
@override
Widget build(BuildContext context) {
return new Scaffold(
body:
SingleChildScrollView(
child: Column(
children: [Container(Text('My Text')),
Container(
alignment: Alignment.topLeft,
child: SingleChildScrollView(scrollDirection: Axis.horizontal,
child: SizedBox.expand(
child: DataTable(columns:_columns, rows:_rows),
),
),
),
]))
);
}
9条答案
按热度按时间oyjwcjzk1#
您可以将
Column
的crossAxisAlignment
添加到strech62o28rlo2#
SizedBox.expand
会导致DataTable
的高度无限,而SingleChildScrollView
不喜欢这样,因为您只想跨越父对象的宽度,所以可以使用LayoutBuilder
来获得您所关心的父对象的大小,然后将DataTable
Package 在ConstrainedBox
中。u2nhd7ah3#
这是一个问题,不完整性,在一个漂亮的小部件,即数据表中,我在生产代码中遇到了这个问题,这个解决方案在一半以上的实验室设备上工作:
但是您知道什么在%100台设备上令人惊讶地起作用吗?这就是:
注意:行只有一个子级Expanded,它包含一个SingleChildScrollView,SingleChildScrollView包含DataTable。
注意,这样您就可以
t use SingleChileScrollView with scrollDirection: Axis.horizontal, in case you need it, but you don
t,否则这个问题将与您的用例无关。如果Flutter团队的某个人读到这篇文章,请丰富DataTable小部件,它将使flutter具有竞争力和强大,如果做得好,flutter可能会掩盖android自己的原生API。
toe950274#
对于DataTable小部件,此代码适用于将dataTable宽度视为与设备宽度匹配的父项,
代码片段:
您可以使用以下属性删除列之间的空格
注:
使用ConstrainedBox小工具解决了您的问题,
完整代码:
注意:在此示例代码中,我介绍了排序和编辑DataTable小部件的概念。
main.dart类代码
数据表演示.dart类代码
客户.dart类代码
2admgd595#
在Container中设置datatable,并将容器的width设置为double.infinity
csbfibhn6#
简单回答:
用
Container()
和width: double.infinity()
Package 数据表。我的首选方式
您可以在www.example.com上使用DataTable 2包pub.dev
https://pub.dev/packages/data_table_2
这个软件包给予了
DataTable2()
小工具,默认情况下会扩展到可用空间。你还可以得到更多的选项,如ColumnSize
等。50few1ms7#
只需用Sizedbox Package DataTable并将宽度赋给double.infinity。
idv4meu88#
只需用定义了固定 width 的容器 Package 数据表,一切都应该正常。
甚至当你需要在一个屏幕上有多个表的时候,这对我来说也很有效。
这也适用于单表只是 Package 与容器与所需的宽度。
f3temu5u9#