如何用DragTarget小部件替换Draggable小部件?

问题描述

我正在玩DraggableDragTarget小部件,但是我受不了。我正在做一个简单的应用程序,我想通过拖放来重组一些元素,但是有一个小故障。

Here是我到目前为止所做的。

here是我想问的小问题。

我的目的是在目标上被接受时用Draggable小部件替换整个DragTarget小部件。但是我做事情的方式,我认为我将Draggable嵌套在DragTarget中,将DragTarget嵌套在Draggable中。

我的尝试如下所示:

可拖动的小部件:

class DraggableData extends StatefulWidget {
  final String chord;
  DraggableChord({
    Key key,@required this.data,}) : super(key: key);

  @override
  _DraggableDataState createState() => _DraggableDataState();
}

class _DraggableDataState extends State<DraggableData> {
  bool wasDropped = false;
  @override
  Widget build(BuildContext context) {
    final Size size = (TextPainter(
            text: TextSpan(
              text: widget.data,),maxLines: 1,textScaleFactor: MediaQuery.of(context).textScaleFactor,textDirection: TextDirection.ltr)
          ..layout())
        .size;

    return Draggable(
      data: widget.data,child: wasDropped ? DragTargetData() : Text(widget.data,style: TextStyle(fontSize: 30),childWhenDragging: Container(
        width: size.width,height: size.height,color: Colors.red,feedback: Text(
        widget.chord,style: TextStyle(
          color: Colors.black,decoration: TextDecoration.none,fontSize: 13,onDragCompleted: () {
        setState(() {
          wasDropped = true;
        });
      },);
  }
}

DragTarget小部件:

class DragTargetData extends StatefulWidget {
  DragTargetData({Key key}) : super(key: key);

  @override
  _DragTargetDataState createState() => _DragTargetDataState();
}

class _DragTargetDataState extends State<DragTargetData> {
  bool wasDropped = false;
  String data = 'N';
  @override
  Widget build(BuildContext context) {
    return DragTarget(
      builder: (context,List<String> candidateData,rejectedData) {
        return Container(
          child: wasDropped
              ? DraggableData(data: data)
              : Container(
                  width: 20,height: 20,decoration: BoxDecoration(
                    border: Border.all(
                      color: Colors.blue,borderRadius: BorderRadius.all(
                      Radius.circular(8),);
      },onAccept: (data) {
        setState(() {
          this.data = data;
          wasDropped = true;
        });
      },);
  }
}

有人可以帮助我找到实现所需功能的最佳方法吗?我会很好的。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...