flutter - 创建可拖动的小部件列表
问题描述
我的想法是创建一些(相同的,具有不同索引的)可拖动对象。当我在堆栈中写入时,它可以完美运行: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,
);
}),
}
我需要的是一个对象列表,这样我就可以从上一个屏幕传递其中的一些,提前谢谢你
解决方案
似乎您应该使用onDragEnd
回调,它DraggableDetails
有一个offset
可以设置为top
andleft
变量的属性。
推荐阅读
- c++ - 带有指向内部数据成员的指针容器的 C++ 类:复制/赋值
- ruby-on-rails - after_update if 语句基于属性值 Ruby on Rails
- javascript - Karma 没有运行在 karma-webpack 中有“import”语句的测试
- javascript - Alasql 查询不工作
- android - 致命异常:FrescoDecodeExecutor-2
- nosql - RavenDB:“确保端口已打开。”
- javascript - 用于账单估算器的更高效的 jquery
- r - 在 R 中的字段末尾返回带有负信号的列
- python - 如何将具有多个依赖项的 C 库编译到 Python 包中?制作?
- angular - Sanitizer Angularerror TS2339:“Sanitizer”类型上不存在属性“bypassSecurityTrustUrl”