Flutter 如何更改分页数据表上的列宽?
现在,各列之间的空间非常大,即使我有一个4个字符的标题和一个1到3位数的排名值,似乎我可以在每列中容纳4倍的空间 我试着使用较小的字体,但分隔保持不变 下面是我用来设置分页数据表的内容。我在表格/行/单元格/等中找不到任何似乎会影响宽度的参数。空间似乎是自动的,但完全没有必要。谢谢Flutter 如何更改分页数据表上的列宽?,flutter,Flutter,现在,各列之间的空间非常大,即使我有一个4个字符的标题和一个1到3位数的排名值,似乎我可以在每列中容纳4倍的空间 我试着使用较小的字体,但分隔保持不变 下面是我用来设置分页数据表的内容。我在表格/行/单元格/等中找不到任何似乎会影响宽度的参数。空间似乎是自动的,但完全没有必要。谢谢 小部件构建(构建上下文){ 归还新脚手架( appBar:新的appBar(标题:const Text(“巡回赛排名”), 正文: 新列表视图( 填充:常数边集全部(5.0), 儿童:[ 新分页可编辑( 标题:常量
小部件构建(构建上下文){
归还新脚手架(
appBar:新的appBar(标题:const Text(“巡回赛排名”),
正文:
新列表视图(
填充:常数边集全部(5.0),
儿童:[
新分页可编辑(
标题:常量文本(“当前排名”),
rowsPerPage:_rowsPerPage,
onRowsPerPageChanged:(int值){setState((){{uRowsPerPage=value;});},
sortColumnIndex:\u sortColumnIndex,
排序:,
栏目:[
新数据列(
标签:新文本('Rank',样式:新文本样式(fontSize:8.0)),
数字:对,
onSort:(int columnIndex,bool升序)=>u排序((玩家d)=>d.rank,columnIndex,升序)
),
新数据列(
标签:新文本('Prev',样式:新文本样式(fontSize:8.0)),
数字:对,
onSort:(int columnIndex,bool升序)=>\u排序((玩家d)=>d.prevRank,columnIndex,升序)
),...
我在颤振分页可编辑布局的灵活性方面也遇到了同样的问题。
我的解决方案是使用布局变量扩展DataTable的构造函数:
FlexibleDataTable({
Key key,
@required this.columns,
this.sortColumnIndex,
this.sortAscending = true,
this.onSelectAll,
this.headingRowHeight = 56.0,
this.dataRowHeight = 48.0,
this.tablePadding = 24.0,
this.columnSpacing = 56.0,
this.sortArrowPadding = 2.0,
this.headingFontSize = 12.0,
@required this.rows,
}
当然,为了使用FlexibleDataTable,我必须实现FlexiblePaginatedDatatable:
new SingleChildScrollView(
scrollDirection: Axis.horizontal,
child: new FlexibleDataTable(
key: _tableKey,
columns: widget.columns,
sortColumnIndex: widget.sortColumnIndex,
sortAscending: widget.sortAscending,
onSelectAll: widget.onSelectAll,
columnSpacing: 20.0,
dataRowHeight: 40.0,
rows: _getRows(_firstRowIndex, widget.rowsPerPage)
)
),
Flatter团队应该在DataTable和PaginatedDataTable的官方版本中包含这些特性,这样其他人就不需要为这些琐碎的东西实现特别的版本。问题已经存在,我们将拭目以待何时解决。
之后,您可以设置水平边距
和列间距
以实现自定义列宽
/// The horizontal margin between the edges of the table and the content
/// in the first and last cells of each row.
///
/// When a checkbox is displayed, it is also the margin between the checkbox
/// the content in the first data column.
///
/// This value defaults to 24.0 to adhere to the Material Design specifications.
final double horizontalMargin;
/// The horizontal margin between the contents of each data column.
///
/// This value defaults to 56.0 to adhere to the Material Design specifications.
final double columnSpacing;
颤振中的分页数据表具有列间距的特性。 根据材料设计规范,该值默认为56.0 您可以根据需要更改值,以更改列内容之间的水平边距
PaginatedDataTable(
showCheckboxColumn: false,
columnSpacing: 10.0,
header: Center(
child: Text("Statement"),
),
columns: [
DataColumn(label: Text("Date")),
DataColumn(label: Text("Particular")),
DataColumn(label: Text("Debit")),
DataColumn(label: Text("Credit")),
DataColumn(label: Text("Detail")),
],
source: YourDataSource(),
),
它应该是这样的:
不清楚。你能提供一个屏幕截图+示例吗?我最终创建了我自己的PaginatedDataTable和DataTable实现,这样我可以调整数据表中嵌入的固定填充值并进行一些其他调整。你能分享一下你是如何解决的吗?你能提供
FlexibleDataTable
类吗?你有一个构造函数吗nd变量不再是常量,而是从构造函数获取它们的值:final double headingRowHeight;final double dataRowHeight;final double tablePadding;final double ColumnSpacking;final double sortArrowPadding;final double double headingFontSize;很抱歉,我无法粘贴所有类,因为它对于一个命令来说太长了nt.我想我没有改变Flatter DataTable类的任何其他内容。我不太理解中的定义---这是否作为伪最小宽度
属性?我们可以只设置列间距:1.0
,然后向每个DataColumn>标签
添加框状小部件,并单独设置每个DataColumn宽度吗(例如,标签:SizedBox(宽度:24)
,框约束
,或容器
)?尽管它似乎可以工作,但这在设备/平台上可靠吗?副作用?完美答案就是这个
PaginatedDataTable(
showCheckboxColumn: false,
columnSpacing: 10.0,
header: Center(
child: Text("Statement"),
),
columns: [
DataColumn(label: Text("Date")),
DataColumn(label: Text("Particular")),
DataColumn(label: Text("Debit")),
DataColumn(label: Text("Credit")),
DataColumn(label: Text("Detail")),
],
source: YourDataSource(),
),