我用DataTable在Flutter 镖上建了一张桌子.这个表格非常大,我同时使用垂直和水平滚动.

作为例子.在屏幕截图上,我不知道数字20.025.0是什么意思,除非我滚动到顶部.

我已经添加了一个我想要实现的GIF示例.(使用LibreOffice).我需要固定的列名(第一行).

Example of the table, while scrolling around the middle of the table: Table without header for reference

Example of what i want to do: LibreOffice Calc Example

我的表的代码示例:

    return SingleChildScrollView(
      scrollDirection: Axis.vertical,
      child: SingleChildScrollView(
        scrollDirection: Axis.horizontal,
        child: DataTable(
          columns: MyDataSet.getColumns(),
          rows: widget._data.map<DataRow>((row) => DataRow(
            onSelectChanged: (d) {
              setState(() {
                selectedRow = d ? row.hashCode : null;
              });
            },
            selected: row.hashCode == selectedRow,
            cells: MyDataSet.toDataCells(row)
          )).toList()
        )
      ),
    );

缺少代码示例:

return columns.map<DataColumn>((name) => DataColumn(
      label: Text(name, style: TextStyle(fontWeight: FontWeight.bold, color: Colors.black),)
    )).toList();

Update (24/10/2019)

如果标题名称与单元格内容的大小相同,则当前代码可以正常工作.否则,两个尺寸都会不同.

Different sizes


Update (21/02/2020)

人们创建了一个包来实现这一点:D

https://pub.dev/packages/table_sticky_headers

Image from pub.dev! Pub.dev example image.

推荐答案

Try the flutter package horizontal_data_table
A Flutter Widget that create a horizontal table with fixed column on left hand side.

dependencies:
  horizontal_data_table: ^2.5.0

enter image description here

Dart相关问答推荐

从扩展类访问抽象类属性

如何防止 getter 或函数每次都重新计算?

Dart 中的const关键字放置有什么不同?

Flutter 是否提供即时应用程序?

如何在 Dart 单元测试中模拟或验证打印调用?

如何在 Dart 中设置文本框的值?

通常由 TextField 创建的 InputDecorator 不能具有无限宽度

在 Dart 中使用带有 Future 的循环

如何使用 Dart 动态加载 HTML 并插入我的网页?

Flutter 在 main 中读取共享首选项,然后决定哪个启动页面?

单击 TextField 小部件时 Flutter 小部件重建

如何平移和zoom 图像?

Dart 中的snapshot快照概念是什么?

如何在 Dart 2 中将 List 更改为 List

CoffeeScript 和 Dart 对 JavaScript 的改进之间的主要区别是什么?

轻松判断数字是否在 Dart 的给定范围内?

Dart MD5 字符串

Dart 中的异步可迭代映射

Dart 脚本会在浏览器中本地运行吗?

有没有办法在 Dart 中通过引用传递原始参数?