Ans*_*rja 5 datatable width flutter flutter-desktop
我正在尝试构建一个全宽度DataTable,Flutter左侧有一个固定宽度的列,另外两列应该将剩余的列分开。
但是,即使左侧标题文本被截断,中间列和右侧列也不会占用剩余宽度,如下所示:
当文本太宽而无法在单行中显示时,我还想将文本换行到单元格中,但Wrap无法按预期工作。
我该如何解决我的问题?
这是代码:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Column(children: [
Expanded(
child: Container(
constraints: BoxConstraints.expand(width: double.infinity),
child: SingleChildScrollView(
child: DataTable(
headingRowHeight: 32,
dataRowHeight: 24,
columns: [
DataColumn(
label: ConstrainedBox(
constraints: BoxConstraints(
maxWidth: 20,
minWidth: 20,
),
child: Text('Short column'),
),
),
DataColumn(label: Text('Long column')),
DataColumn(label: Text('Long column')),
],
rows: [
DataRow(
cells: [
DataCell(
ConstrainedBox(
constraints: BoxConstraints(
maxWidth: 20,
minWidth: 20,
),
child: Text('1'),
),
),
DataCell(
Wrap(
children: [
Text(
"""Some long content i would like to be wrapped when column width is not
enought to fully display it"""),
],
),
),
DataCell(Text('Some more text')),
],
),
DataRow(
cells: [
DataCell(Container(
color: Colors.pink,
child: ConstrainedBox(
constraints: BoxConstraints(
maxWidth: 20,
minWidth: 20,
),
child: Text('2'),
),
)),
DataCell(
Wrap(
children: [
Container(
color: Colors.yellow,
child: Text(
"""Some long content i would like to be wrapped when column width is not
enought to fully display it""")),
],
),
),
DataCell(Text('Some more text')),
],
)
]),
),
),
),
]),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑
感谢@awaik的回答,但在你的例子中,表格没有占据整个设备宽度,它仍然在大屏幕的中间,这不是我想要的。
此外,行高是恒定的,如果内容需要更多高度,则行高不会增加。
有什么可以做的吗?
我发现法线Table允许我做我想做的事情:我可以用于FixedColumnWidth某个列和FlexColumnWidth其他列,以占用剩余空间。
此外,文本会正确换行,并且行高会增加以适应内容,如下图所示,屏幕宽度较小,屏幕宽度较大:
这是代码:
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: Column(children: [
Expanded(
child: Container(
child: SingleChildScrollView(
child: Table(
border: TableBorder.all(width: 1),
columnWidths: {
0: FixedColumnWidth(20),
},
defaultColumnWidth: FlexColumnWidth(),
children: [
TableRow(children: [
Text('Short column'),
Text('Long column'),
Text('Long column')
]),
TableRow(
children: [
Text('1'),
Text(
'Some long content i would like to be wrapped when column width is not enought to fully display it'),
Container(
child: Text('Some more text'),
)
],
)
],
),
),
),
),
]),
),
);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8281 次 |
| 最近记录: |