Я пытаюсь реализовать перетаскиваемый виджет в моем приложении флаттера. ImageWidget - это StatefulWidget, который я хочу поместить в перетаскиваемый объект. Я установил тот же объект imageWidget, что и дочерний элемент, и обратную связь виджета Draggable. Когда я перетаскиваю перетаскиваемый виджет, метод сборки ImageWidget вызывается всегда. Как я могу предотвратить это?
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => new _MyAppState();
}
class _MyAppState extends State<MyApp> {
Offset position = Offset(0, 0);
Widget _image;
@override
void initState() {
super.initState();
_image = ImageWidget();
}
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: new Scaffold(
appBar: AppBar(
title: Text("Drag Image"),
),
body: Container(
child: Stack(
children: [
Positioned(
top: position.dy,
left: position.dx,
child: Draggable(
maxSimultaneousDrags: 1,
child: _image,
feedback: _image,
childWhenDragging: Container(),
onDragStarted: () {},
onDragEnd: (DraggableDetails details) {
setState(() {
position =
Offset(details.offset.dx, details.offset.dy);
});
},
),
)
],
)),
),
);
}
}
class ImageWidget extends StatefulWidget {
@override
_ImageWidgetState createState() => _ImageWidgetState();
}
class _ImageWidgetState extends State<ImageWidget> {
@override
Widget build(BuildContext context) {
print("Inside the build method of ImageWidget");
return Image.network(
"https://image.shutterstock.com/image-photo/beautiful-water-drop-on-dandelion-260nw-789676552.jpg",
width: 200,
height: 200,);
}
}