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
, (убедитесь, что отступ минимален).