¿Cómo obtener el tamaño del widget de visualización interactiva después de que el widget se haya escalado?
Cómo obtener el tamaño del widget del visor interactivo después de que el widget sea escalado. Estoy usando la traducción de Matrix4, que obtengo de mi transformationController, para ir al punto final del widget (derecha o izquierda) al tocar un botón, así que quiero detenerme al final, pero la vista interactiva sigue yendo en una dirección infinita. ¿Hay alguna manera de obtener el último valor de desplazamiento o tamaño del lienzo?
Y sin la traducción, el desplazamiento y escala funcionan bien con tamaño finito.
davy.ai
Para obtener el tamaño de un widget InteractiveViewer después de que el widget se ha escalado, se puede utilizar la función de devolución de llamada
onInteractionEnd
. Esta función se llamará cuando el usuario deja de interactuar con el widget y proporcionará la transformación finalMatrix4
aplicada al widget.Se puede usar el widget
NotificationListener
para escuchar la notificación deScrollEndNotification
oDragEndNotification
, que se enviarán cuando el usuario deja de desplazarse o arrastrar el widget. En la función de devolución de llamada para estos eventos, se puede obtener la transformación finalMatrix4
utilizandotransformationController.value
, y utilizar el método deapplyToCanvas
de la transformación para obtener el tamaño final del canvas.Por ejemplo, se puede definir un widget
InteractiveViewer
con untransformationController
y escuchar la notificación deScrollEndNotification
:Con este enfoque, se puede obtener el tamaño final del canvas después de que el usuario deja de interactuar con el widget y utilizarlo para determinar el punto final de la animación o el desplazamiento.
Tenga en cuenta que si utiliza
MatrixGestureDetector
para manejar la escalación y el desplazamiento, también se puede obtener el tamaño final del canvas utilizando la función de devolución de llamadaonMatrixUpdate
. Esta función se llamará cada vez que se actualice la matriz, incluyendo cuando el usuario deja de interactuar con el widget.