Wie ändere ich den Index in OptionSelector sofort (ohne Animation)? [geschlossen]

16

In meiner App verwende ich einen OptionSelector, um aus einer Liste von Fahrradstationen auszuwählen. Ich habe auch eine Kartenkomponente mit Ortsmarkierungen für jede Station.

Wenn ich auf einen Ortsmarker tippe, ändert sich auch der OptionSelector in den Index der entsprechenden Station, da dies eine gute UX ist.

Was nicht gut ist UX ist, wie der OptionSelector auf diese Indexänderung reagiert, die sich selbst animiert, als ob sie vom Finger des Benutzers bewegt worden wäre. Mit anderen Worten, lange nachdem der Benutzer auf die Kartenmarkierung getippt und alle erforderlichen Informationen erhalten hat, "dreht" sich der OptionSelector immer noch zum Index der Station.

Das folgende Video zeigt dieses Verhalten: https://www.youtube.com/watch?v=jXKWlAmNYsw

Ich möchte, dass dieser OptionSelector seinen Index sofort ohne Animation ändert. Gibt es eine Möglichkeit, dies zu tun?

So mache ich momentan Dinge. Ich bin mehr als froh, korrigiert zu werden, wenn dies die falsche Vorgehensweise ist. Ich verwende ein WorkerScript (mehr oder weniger ein QML-Thread), um API-Aufrufe zu tätigen. Wenn dieses WorkerScript zurückgegeben wird, verschiebt es den OptionSelector folgendermaßen:

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.
         */
    }
}

Jede Hilfe oder Einsicht wird gebeten - Prost!

Aaron Hastings
quelle
Könnten Sie uns bitte den Code geben, der ausreicht, um Ihr Problem zu reproduzieren? Das Video ist natürlich hilfreich, aber es ist ziemlich schwierig, Ihnen zu helfen, ohne einen Code-Ausschnitt wiederzuverwenden (siehe sscce.org )
Sylvain Pineau
Hallo Sylvain. Entschuldigen Sie die Verspätung. Hier ist eine QML-Datei, die Sie zum Testen verwenden können. Erstellen Sie einfach ein neues Ubuntu Simple UI-Projekt und ersetzen Sie Ihre Haupt-QML-Datei durch Folgendes
Aaron Hastings

Antworten:

0

Sie können eine Kopie des OptionSelector qml sehen hier es UbuntuNumberAnimation verwendet , wenn es nicht erweitert wird . Es gibt keine Möglichkeit, es auszuschalten. Wenn die Funktion erforderlich ist, müssen Sie Upstream-Patches ausführen und eine Weile auf neue Versionen der Bibliothek warten.

Sie können jedoch Ihr eigenes Open-Selector-Widget erstellen, den Animationsteil entfernen und sicherstellen, dass Sie ihn zur Verwendung in Ihrem Code umbenennen. Ich empfehle diese Route.

Martin Owens -doctormo-
quelle