【发布时间】:2018-08-03 11:40:23
【问题描述】:
大家好,因为我是 Flutter 的新手,在设置图像数据类型时遇到问题。 我有两个盒子,我需要将一个盒子拖到另一个盒子上(自动适应)。但是我在声明图像参数时遇到了错误。我可以拖动带有图像的项目框,但拖动的项目不被现有的 dragTarget 对象接受。 提前致谢。
这是我的代码和截图:
import 'package:flutter/material.dart';
class Episode3 extends StatelessWidget {
var accpeptedData = Image.asset("");
@override
Widget build(BuildContext context) {
return Scaffold(
body: Stack(
children: <Widget>[
DraggableWidget(
offset: Offset(50.0, 80.0),
),
Positioned(
top: 100.0,
left: 100.0,
child: DragTarget(
builder: (BuildContext context, List<dynamic> accepted,
List<dynamic> rejected) =>
Container(
height: 200.0,
width: 200.0,
decoration: BoxDecoration(color: Colors.cyan),
child: Center(
child: Image.file(accpeptedData.toString()),
),
),
onAccept: (Image data) {
accpeptedData = data;
},
),
)
],
),
);
}
}
class DraggableWidget extends StatefulWidget {
final Offset offset;
DraggableWidget({Key key, this.offset}) : super(key: key);
@override
_DraggableWidgetState createState() => _DraggableWidgetState();
}
class _DraggableWidgetState extends State<DraggableWidget> {
Offset offset = Offset(0.0, 0.0);
@override
void initState() {
super.initState();
offset = widget.offset;
}
@override
Widget build(BuildContext context) {
return Positioned(
bottom: offset.dy,
left: offset.dx,
child: Draggable(
data: Image.asset("ss/camera-icon.png"),
child: Container(
width: 200.0,
height: 200.0,
color: Colors.blue,
child: Center(
child: Image.asset("ss/camera-icon.png")
),
),
feedback: Container(
width: 200.0,
height: 200.0,
color: Colors.blue.withOpacity(0.3),
child: Center(
child: Image.asset("ss/camera-icon.png")
),
),
onDraggableCanceled: (v, o) {`enter code here`
setState(() {
offset = o;
});
},
),
);
}
}
【问题讨论】:
-
只是澄清一下,即使屏幕截图中所述的第 25 行有错误,您上面提供的代码也会运行?或者这是一个新的实现并导致您在该行出现错误?你能提供错误信息吗?我还发现this blog 很有帮助。如果这是你需要的。