Flutter 颤振台布局未根据预期响应

Flutter 颤振台布局未根据预期响应,flutter,flutter-layout,Flutter,Flutter Layout,使用颤振v1.20.2 下面的代码 var数据=[ ['a','verylongstringwithnospaces'verylongstringwithnospaces'], [abc',123456789'], ['abcdefg','123'], ]; 扩大( 孩子:桌子( 边框:表格边框。全部(颜色:Colors.red), 列宽:{ 0:IntrinsicColumnWidth(), 1:IntrinsicColumnWidth(), }, 子项:data.map((x)=>( 桌椅(

使用颤振v1.20.2

下面的代码

var数据=[
['a','verylongstringwithnospaces'verylongstringwithnospaces'],
[abc',123456789'],
['abcdefg','123'],
];
扩大(
孩子:桌子(
边框:表格边框。全部(颜色:Colors.red),
列宽:{
0:IntrinsicColumnWidth(),
1:IntrinsicColumnWidth(),
},
子项:data.map((x)=>(
桌椅(
儿童:[
TableCell(子:容器(子:文本(x[0])),
TableCell(子对象:容器(颜色:Colors.green,子对象:Text(x[1])),
],
)
)).toList(),
),
),
此布局中的结果

如您所见,文本溢出了表的边界

我尝试过无数种解决办法,但没有一种奏效。与表中列的大小相比,TableCell本身的宽度似乎比它应有的宽度大

最大的问题是两列的大小未知,它们可能有数百个字符长或单个字母。如果它大于宽度,文本应断开到下一行

有没有办法制作流体网格布局,以便两侧根据每列的内容量调整大小?理想的布局应该是这样的


发生这种情况的原因是
IntrinsicColumnWidth
没有给出
TableCell
父级大小。因为它试图根据子宽度设置列宽。同时,要在行上进行文本换行,您需要具有父级的宽度,否则文本小部件不知道它的限制

您有哪些选择:

  • FixedColumnWidth

  • FlexColumnWidth

  • FractionColumnWidth

  • MaxColumnWidth

  • MinColumnWidth

(最后两个小部件使用了其他
TableColumnWidth
小部件的最大/最小值。)

在您的情况下,如果您知道第一列中的文本永远不需要换行,您可以删除第二列的参数IntrinsicColumnWidth。如果您知道可以使用长文本,请通过添加
MinColumnWidth


谢谢,这帮助我发现了问题所在,我最终选择了不同的方法,计算每个字符串的最小/最大长度,并设置fractionWidth,如您所述。