Flutter 如何更改分页数据表上的列宽?

Flutter 如何更改分页数据表上的列宽?,flutter,Flutter,现在,各列之间的空间非常大,即使我有一个4个字符的标题和一个1到3位数的排名值,似乎我可以在每列中容纳4倍的空间 我试着使用较小的字体,但分隔保持不变 下面是我用来设置分页数据表的内容。我在表格/行/单元格/等中找不到任何似乎会影响宽度的参数。空间似乎是自动的,但完全没有必要。谢谢 小部件构建(构建上下文){ 归还新脚手架( appBar:新的appBar(标题:const Text(“巡回赛排名”), 正文: 新列表视图( 填充:常数边集全部(5.0), 儿童:[ 新分页可编辑( 标题:常量

现在,各列之间的空间非常大,即使我有一个4个字符的标题和一个1到3位数的排名值,似乎我可以在每列中容纳4倍的空间

我试着使用较小的字体,但分隔保持不变

下面是我用来设置分页数据表的内容。我在表格/行/单元格/等中找不到任何似乎会影响宽度的参数。空间似乎是自动的,但完全没有必要。谢谢

小部件构建(构建上下文){
归还新脚手架(
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(),
              ),