#flutter #flutter-web
Вопрос:
Я пытаюсь переместить фоновое изображение (размера окна просмотра) при перемещении курсора. Я добился части этого, используя ValueNotifier, однако он работает только тогда, когда я нажимаю и перетаскиваю курсор или запускаю метод onEnter области мыши, и переход также не такой чистый.
Я думаю, что мне потребуется потокостроитель, но я не знаю, как его реализовать. Код для справки приведен ниже:
class _OpenerPageState extends Statelt;OpenerPagegt; { ValueNotifierlt;boolgt; isMoving = ValueNotifier(false); ValueNotifierlt;Offsetgt; offset = ValueNotifier(Offset.zero); @override Widget build(BuildContext context) { final Size size = widget.size; final String deviceType = widget.deviceType; return Stack( children: [ ValueListenableBuilder( valueListenable: isMoving, builder: (_, __, ___) =gt; Container( width: size.width, height: size.height, color: Colors.black, child: Stack( children: [ Container( width: size.width, height: size.height, child: Image.asset( "images/space1.jpg", fit: BoxFit.cover, ), ), AnimatedPositioned( width: size.width, height: size.height, duration: Duration(milliseconds: 300), curve: Curves.easeOutCubic, top: (isMoving.value) ? offset.value.dy : 0, left: (isMoving.value) ? offset.value.dx : 0, child: Image.asset( "images/space1.jpg", fit: BoxFit.cover, ), ), MouseRegion( onHover: (notif) { if (notif.delta != Offset.zero) { isMoving.value = true; offset.value = notif.delta; } else { isMoving.value = false; } }, child: Container( width: size.width, height: size.height, alignment: Alignment.centerRight, ), ), ], ), ), ), }
Любая помощь будет признательна!