es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , , , ,

Answer

  1. Avatar for 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 final Matrix4 aplicada al widget.

    Se puede usar el widget NotificationListener para escuchar la notificación de ScrollEndNotification o DragEndNotification, 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 final Matrix4 utilizando transformationController.value, y utilizar el método de applyToCanvas de la transformación para obtener el tamaño final del canvas.

    Por ejemplo, se puede definir un widget InteractiveViewer con un transformationController y escuchar la notificación de ScrollEndNotification:

    TransformationController _transformationController = TransformationController();
    
    ...
    
    InteractiveViewer(
      transformationController: _transformationController,
      onInteractionEnd: (details) {
        Matrix4 finalMatrix = _transformationController.value;
        finalMatrix.applyToCanvas(canvas); // use this to get final size of canvas
      },
      child: ...
    )
    

    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 llamada onMatrixUpdate. Esta función se llamará cada vez que se actualice la matriz, incluyendo cuando el usuario deja de interactuar con el widget.

Comments are closed.