首页 > 解决方案 > 创建可拖动的小部件列表

问题描述

我的想法是创建一些(相同的,具有不同索引的)可拖动对象。当我在堆栈中写入时,它可以完美运行:object1,object2,object3...但是如果我设置它们的列表,则拖动将无法正常工作。拖动对象后消失。

这有效,对象在拖动后消失:

match(int i) {
    return Positioned(
        top: top[i],
        left: left[i],
        child: Draggable(
          data: 10,
          onDragUpdate: (details) {
            top[i] = top[i] + details.delta.dy;
            left[i] = left[i] + details.delta.dx;
            print('${top[i]}, ${left[i]}');
            setState(() {});
          },
          child: Material(
              child: Container(
                  height: 50, width: 50, child: Image.asset('match.jpg'))),
          feedback: Material(
              child: Container(
                  height: 50, width: 50, child: Image.asset('match.jpg'))),
        ));
  }


  @override
  Widget build(BuildContext context) {
return Stack(
              children: [match(0), match(1), match(2)],
            );
}

这不起作用:

List<Widget> listOfMatches = [];
  List<double> top = [];
  List<double> left = [];

  bool created = false;
  createListOfMatches() {
    if (!created) {
      for (int i = 0; i < 3; i++) {
        top.add(200);
        left.add(200);
        listOfMatches.add(match(i));
      }
      setState(() {
        created = true;
      });
    }
  }


  @override
  Widget build(BuildContext context) {
return Scaffold(
      body: FutureBuilder(
          future: createListOfMatches(),
          builder: (context, snapshot) {
            return Stack(
              children: listOfMatches,
            );
          }),
}

我需要的是一个对象列表,这样我就可以从上一个屏幕传递其中的一些,提前谢谢你

标签: flutterdart

解决方案


似乎您应该使用onDragEnd回调,它DraggableDetails有一个offset可以设置为topandleft变量的属性。


推荐阅读