Flutter 颤振:如何拉伸Wrap小部件中的最后一个元素?

Flutter 颤振:如何拉伸Wrap小部件中的最后一个元素?,flutter,flexbox,expand,stretch,Flutter,Flexbox,Expand,Stretch,我认为这不需要太多解释,所以我没有包含任何代码或屏幕截图。 正如标题所示,我有一个Wrap小部件,我希望它的最后一个元素占据右侧所有可用的水平空间(就像将扩展的小部件放在行中一样) 在这种情况下,我不能使用扩展的或灵活的,因为包装不允许这样做 编辑,添加一些(简化的)代码和屏幕截图: \u buildTileDragTarget只是一个返回DragTarget的函数 void _buildAnswerWidgetsFromStrings() { _answerWidgets.clear(

我认为这不需要太多解释,所以我没有包含任何代码或屏幕截图。
正如标题所示,我有一个
Wrap
小部件,我希望它的最后一个元素占据右侧所有可用的水平空间(就像将
扩展的
小部件放在
行中一样)

在这种情况下,我不能使用
扩展的
灵活的
,因为
包装
不允许这样做

编辑,添加一些(简化的)代码和屏幕截图:

\u buildTileDragTarget
只是一个返回
DragTarget
的函数

void _buildAnswerWidgetsFromStrings() {
    _answerWidgets.clear(); //start building from 0
    _answerWidgets.add(_buildTileDragTarget(index: 0)); //add initial DragTarget

    //for each word in _answerStrings, add Draggable Chip & DragTarget
    for (int i = 0; i < _answerStrings.length; i++) {
      WordTile wordTile = _answerStrings[i];
      _answerWidgets.add(
        Draggable<WordTile>(
          key: UniqueKey(),
          data: wordTile,
          child: GestureDetector(
            behavior: HitTestBehavior.opaque,
            child: Chip(
              label: Text(wordTile.word),
              padding: EdgeInsets.all(0),
            ),
            onTap: () {
              //seems to work: tap from top to bottom (5)
              setState(() {
                _options[wordTile.word] = true;
                _answerStrings.remove(wordTile);
              });
            },
          ),
          feedback: Material(child: Chip(label: Text(wordTile.word))),
          childWhenDragging: Chip(label: Text('  ' * wordTile.word.length)),
        ),
      );
      _answerWidgets.add(_buildTileDragTarget(index: i + 1)); //the position AFTER the current word (last)
    }

    //remove last DragTarget and add one wrapped in Expanded
    _answerWidgets.removeLast();
    _answerWidgets.add(
      SizedBox(
        // width: double.infinity,
        child: _buildTileDragTarget(index: _answerStrings.length),
      ),
    ); //TODO try wrapping the whole thing in 1 big DragTarget (for last index)
    // _answerWidgets.add(_buildTileDragTarget(index: _answerStrings.length));
  }
void\u buildAnswerWidgetsFromStrings(){
_answerWidgets.clear();//从0开始构建
_add(_buildTileDragTarget(索引:0));//添加初始DragTarget
//对于_answerstring中的每个单词,添加可拖动芯片和拖动目标
对于(int i=0;i<\u answerStrings.length;i++){
WordTile WordTile=_应答字符串[i];
_answerWidgets.add(
拖拉的(
键:UniqueKey(),
数据:wordTile,
儿童:手势检测器(
行为:HitTestBehavior.不透明,
孩子:芯片(
标签:文本(wordTile.word),
填充:边缘集。全部(0),
),
onTap:(){
//似乎有效:从上到下轻触(5)
设置状态(){
_选项[wordTile.word]=true;
_应答字符串。删除(wordTile);
});
},
),
反馈:材料(儿童:芯片(标签:文本(wordTile.word)),
ChildWhenDraging:Chip(标签:文本(''*wordTile.word.length)),
),
);
_add(_buildTileDragTarget(索引:i+1));//当前单词后的位置(最后一个)
}
//移除最后一个DragTarget并添加一个包裹在Expanded中的DragTarget
_answerWidgets.removeLast();
_answerWidgets.add(
大小盒子(
//宽度:double.infinity,
子项:_buildTileDragTarget(索引:_answerStrings.length),
),
);//尝试将整个内容包装在一个大的DragTarget中(用于最后一个索引)
//添加(_buildTileDragTarget(索引:_answerStrings.length));
}
截图: 我将
Wrap
小部件包装在一个紫色的
容器中,每个
DragTarget
包装在一个绿色的
容器中。(您可以忽略蓝色部分)

(1) 这就是我所拥有的(没有SizedBox)

(2) 这是我尝试使用SizedBox(宽度:double.infinity…)时得到的结果

(3) 这就是我想要的

试试
SizedBox(宽度:double.infinity)
也可以使用扩展构造函数

SizedBox.Expand(
child: //your widget
)

它跳入一个全新的行(并填充),而不仅仅是向右拉伸,但感谢您的支持suggestion@Cedric很抱歉,它没有帮助,这是一个没有看到代码的瞎猜。如果您用一些代码更新您的问题,我可能会提供进一步的帮助。完成后,idk(如果有帮助):/