En mi aplicación, uso un OptionSelector para elegir de una lista de estaciones de bicicletas. También tengo un componente de mapa con marcadores de posición para cada estación.
Cuando toco un marcador de posición, también cambia el OptionSelector al índice de la estación correspondiente, ya que esta es una buena experiencia de usuario.
Lo que no es bueno UX es cómo el OptionSelector responde a este cambio de índice, que se anima a sí mismo como si hubiera sido movido por el dedo del usuario. En otras palabras, mucho después de que el usuario haya tocado el marcador del mapa y recibido toda la información que necesita, el OptionSelector sigue "girando" al índice de la estación.
Aquí hay un video que demuestra este comportamiento: https://www.youtube.com/watch?v=jXKWlAmNYsw
Me gustaría que este OptionSelector simplemente cambie su índice de inmediato, sin animación. ¿Hay alguna forma de hacer esto?
Así es como hago las cosas actualmente. Estoy más que feliz de ser corregido si esta es la forma incorrecta de hacerlo. Utilizo un WorkerScript (un hilo QML, más o menos) para hacer llamadas a la API. Cuando este WorkerScript regresa, mueve el OptionSelector de la siguiente manera:
WorkerScript {
id: queryStationsWorker
source: "../js/getstations.js"
onMessage: {
[...]
// Move the OptionSelector to the corresponding station's index.
stationSelector.selectedIndex = getLastStationIndex(lastStation.contents.stationName, stationsModel)
/*
* For the sake of clarity:
*
* getLastStationIndex() is a function which just returns an integer.
* lastStation is a U1DB database used for state saving.
* stationsModel is a model containing all of the stations.
*/
}
}
Cualquier ayuda o idea apreciada - ¡salud!
fuente
Respuestas:
Puede ver una copia del qml OptionSelector aquí , usa UbuntuNumberAnimation cuando no está expandido. No hay ninguna opción para desactivarlo y si se requiere la función, tendrá que parchear en sentido ascendente y esperar un tiempo para obtener nuevas versiones de la biblioteca.
Sin embargo, puede hacer su propio widget de selector abierto, eliminar la parte de animación y asegurarse de cambiarle el nombre para usarlo en su código. Recomiendo esta ruta
fuente