web-dev-qa-db-ja.com

Flutter DartのDataTableの列と行のヘッダーを修正

DataTableを使用してFlutter Dartでテーブルを作成しました。この表は非常に大きく、垂直スクロールと水平スクロールの両方を使用しています。スクロールすると、列への参照が失われます。列が何であるかを知る必要があります。

例として。スクリーンショットでは、数字がわかりません20.0および25.0手段に、私が一番上にスクロールしない限り。

達成したいことのGIF例を追加しました。 (LibreOfficeを使用)。固定列名(最初の行)が必要です。

テーブルの中央をスクロールしながらのテーブルの例: Table without header for reference

私がやりたいことの例: 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();

アップデート(24/10/2019)

ヘッダー名がセルのコンテンツと同じサイズであれば、現在のコードは適切に機能します。そうしないと、両方のサイズが異なります。

Different sizes


アップデート(2020年2月2日)

人々はそれを行うためのパッケージを作成しました。 :D

https://pub.dev/packages/table_sticky_headers

Pub.devからの画像! Pub.dev example image.

3
Gustavo Garcia

こんにちは、私はあなたのコードを取得し、テストに適応しています。dynamic list_fixedColCellsを作成しました

完璧に働いた

var disciplina =[];
     for (var c = 0; c <= notas?.length -1; c++) {
     disciplina.add(notas[c].disciplina.toString())  ;
    }

..... fixedColCells:disciplina、....

_fixedRowCellsは固定文字列リストなので、セルラベルを押すだけで同じ変数を使用しました

しかし、ステートメントによって_rowsCellsである<list <list <dynamic>>は、ルーチンを例の固定変数に等しく設定しますが、エラーを出します。

タイプList<dynamic>はタイプList<List<dynamic>>のサブタイプではありません

印刷出力は基本的に固定変数_rowsCellsの例と同じです。以下を参照してください

[[8.5, 7.0, 6.5, 0.0, 5.5, 5.5, 5.5, 0.0, 0.0, 5.5, ATIVA], 
[8.5, 6.0, 8.5, 0.0, 6.0, 6.0, 6.0, 0.0, 0.0, 6.0, ATIVA], 
[7.5, 7.5, 6.0, 0.0, 5.5, 5.5, 5.5, 0.0, 0.0, 5.5, ATIVA], 
[9.5, 9.0, 8.0, 0.0, 6.5, 6.5, 6.5, 0.0, 0.0, 6.5, ATIVA], 
[7.5, 6.0, 8.0, 0.0, 5.5, 5.5, 5.5, 0.0, 0.0, 5.5, ATIVA], 
[10.0, 7.5, 8.5, 0.0, 6.5, 6.5, 6.5, 0.0, 0.0, 6.5, ATIVA], 
[9.0, 9.5, 8.0, 0.0, 6.5, 6.5, 6.5, 0.0, 0.0, 6.5, ATIVA], 
[10.0, 10.0, 10.0, 0.0, 7.5, 7.5, 7.5, 0.0, 0.0, 7.5, ATIVA], 
[10.0, 9.5, 9.5, 0.0, 7.5, 7.5, 7.5, 0.0, 0.0, 7.5, ATIVA], 
[9.0, 7.0, 8.5, 0.0, 6.0, 6.5, 6.5, 0.0, 0.0, 6.0, ATIVA], 
[6.0, 6.0, 6.5, 0.0, 4.5, 4.5, 4.5, 0.0, 0.0, 4.5, ATIVA], 
[9.0, 7.5, 8.5, 0.0, 6.5, 6.5, 6.5, 0.0, 0.0, 6.5, ATIVA], 
[5.0, 5.0, 7.5, 0.0, 4.5, 4.5, 4.5, 0.0, 0.0, 4.5, ATIVA], 
[8.5, 9.0, 8.0, 0.0, 6.5, 6.5, 6.5, 0.0, 0.0, 6.5, ATIVA]]

可能なヘルプをありがとう。

0
Erison Belon