Flutter DataTable ограничивает ширину до ширины экрана и переносит текст

Это моя таблица данных:

      SizedBox(
  height: 200,
  child: SingleChildScrollView(
    scrollDirection: Axis.vertical,
    child: DataTable(
      columnSpacing: 0,
      columns: const [
        DataColumn(label: Text("Domain")),
        DataColumn(label: Text("Request count")),
      ],
      rows: const [
        DataRow(cells: [
          DataCell(Text("A very long text which causes the right column to be pushed out of the screen")),
          DataCell(Text("12345")),
        ]),
        DataRow(cells: [
          DataCell(Text("It would be the best if this text would be shown in to lines so that there is enough space for the second column")),
          DataCell(Text("678890")),
        ]),
      ],
    ),
  ),
)

Исключение составляет:

      The following assertion was thrown during layout:
A RenderFlex overflowed by 39 pixels on the right.

The relevant error-causing widget was
DataTable

Я хочу, чтобы таблица была ограничена по высоте, чтобы можно было ее прокручивать, но по горизонтали ширина должна быть фиксированной, чтобы нельзя было прокручивать. Если содержимое не помещается в столбцы, как показывает приведенная выше ошибка, то текст не должен исчезать с экрана, а вместо этого текст должен уйти во вторую строку, чтобы на экране хватило места для обоих столбцов. Я уже много чего перепробовал, но просто не могу ограничить ширину таблицы так, чтобы она была такой же ширины, как родительский виджет.

2 ответа

Предоставление ширины для каждого DataCellребенок решает задачу.

      DataCell(
  SizedBox(
    width: x,
    child: Text(
      "A very long text which causes the right column to be pushed out of the screen",
      overflow: TextOverflow.visible,
      softWrap: true,
    ),
  ),
),

Чтобы получить отзывчивую ширину, вы можете использовать LayoutBuilderна теле и используйте его width: constraints.maxWidth * .5,чтобы получить 50% ширины экрана или MediaQuery, (убедитесь, что отступ минимален).

Оберточная бумагаDataTableвиджет сFittedBoxвсе решил!

Другие вопросы по тегам