当子列通过拉伸时,可拖动的反馈消失了什么

时间:2019-07-12 20:32:30

标签: flutter dart flutter-layout

这是我第一次使用Draggable Widget,并且遇到一个问题,当反馈包含具有属性crossAxisAlignment: CrossAxisAlignment.stretch,的列时,反馈小部件会消失。

当我删除此行时,Draggable小部件可以按预期工作,但是当它被拖动时,我需要该小部件看起来不一样。该窗口小部件旨在延伸到屏幕上可用的宽度,但是我在想,一旦移动它,约束就消失了吗?我不完全确定,但是这里有一个演示和简化版代码,可以重复该问题。

对于大gifs,当我在Stack Overflow上使用size标签压缩它们时,抱歉,gif不会播放。

crossAxisAlignment: CrossAxisAlignment.stretch反馈:

With Stretch Attribute

反馈中没有crossAxisAlignment: CrossAxisAlignment.stretch,但失去了全宽度:

Without Stretch Attribute

简化代码:

class Test extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return Center(
      child: Draggable(
        axis: Axis.horizontal,
        child: Card(
          child: Column(
            crossAxisAlignment: CrossAxisAlignment.stretch,
            children: <Widget>[
              Text("Testing",
                style: TextStyle(fontSize: 30),
                textAlign: TextAlign.center,
              )
            ],
          ),
        ),
        feedback: Card(
          child: Column(
            // crossAxisAlignment: CrossAxisAlignment.stretch, // THIS LINE
            children: <Widget>[
              Text("Testing",
                style: TextStyle(fontSize: 30),
                textAlign: TextAlign.center,
              )
            ],
          ),
        ),
        childWhenDragging: Center(
          child: Row(
            children: <Widget>[
              Expanded(
                flex: 4,
                child: Container(
                  child: null,
                ),
              ),
              Expanded(
                flex: 1,
                child: Container(
                  child: IconButton(
                    padding: EdgeInsets.all(10),
                    icon: Icon(Icons.delete),
                    tooltip: 'Delete Task',
                    color: Color(0xFFFF6984),
                    onPressed: () {},
                  ),
                ),
              ),
            ],
          ),
        ),
      ),
    );
  }
}

1 个答案:

答案 0 :(得分:0)

我最终使用了LayoutBuilder,并在反馈模式下将BoxConstraints的{​​{1}}传递给了ConstrainedBox的{​​{1}}:

Draggable