Arrastrar hacia fuera
Lo contrario del nivel 40.5: sacar algo de tu aplicación arrastrándolo a otra. Qué hace falta, por qué es más difícil que recibir, y cuándo compensa.
Por qué es más difícil
El tercer paso de la derecha es el problema real: si lo que el usuario arrastra corresponde a un fichero que ya existe en el disco, es sencillo. Si hay que generarlo —exportar, convertir, renderizar— hay que decidir si se genera al empezar el arrastre, lo que puede tardar, o si se ofrece de otra forma.
Qué ofrecer
Lo mismo del nivel 52.2, y aquí es todavía más importante porque el destino es desconocido:
- Un fichero, si tu elemento es o puede ser un fichero. Es lo que espera el escritorio y el explorador.
- Texto, para editores y campos de texto.
- Una imagen, si lo que se arrastra es visual.
- Y tu formato propio, para arrastrar entre ventanas de tu aplicación.
El fichero es el que abre más destinos —el explorador, el correo, cualquier aplicación que acepte adjuntos— y es el que más trabajo da si hay que generarlo.
El caso del fichero que hay que crear
Tres estrategias, de peor a mejor:
La tercera es perfectamente respetable y es la que conviene tomar si la generación tarda segundos: un arrastre que tarda tres segundos en empezar se siente roto, y un botón de exportar que tarda tres segundos con una barra, no.
El gesto y la webview
Un detalle de implementación que hay que resolver: el frontend recibe el gesto y el core hace el arrastre nativo.
- El frontend detecta que empieza un arrastre sobre un elemento y avisa al core con qué se arrastra.
- El core inicia la operación nativa con los formatos correspondientes.
- Y hay que desactivar el arrastre propio del navegador en esa zona, o los dos compiten y el resultado es impredecible.
La zona importa: en un campo de texto quieres el arrastre del navegador, que permite mover texto; sobre un elemento de una lista quieres el nativo. Decidirlo por zona es parte del trabajo.
Cuándo compensa
Ser honesto con el coste:
- Sí, si tu aplicación produce cosas que el usuario va a llevar a otros sitios a menudo: ficheros, imágenes, exportaciones.
- Sí, para reordenar dentro de tu aplicación — pero eso es arrastre interno del navegador, mucho más simple, y no necesita nada de este nivel.
- No, si lo que se arrastraría ya se puede conseguir con dos clics y un selector de guardado.
Es una función de las que impresionan y no de las que se echan de menos, así que va después de las ocho baratas del nivel 49.4.