如何立即更改 OptionSelector 中的索引(无动画)?

Aar*_*ngs 16 qt qml ubuntu-sdk ubuntu-touch

在我的应用程序中,我使用 OptionSelector 从自行车站列表中进行选择。我还有一个地图组件,每个站都有地标。

当我点击一个地标时,它也会将 OptionSelector 更改为相应站的索引,因为这是很好的 UX。

不好的 UX 是 OptionSelector 如何响应这个索引变化,它自己动画,就好像它被用户的手指轻弹一样。换句话说,在用户点击地图标记并接收到他们需要的所有信息后很久,OptionSelector 仍在“旋转”到站的索引。

这是演示此行为的视频:https : //www.youtube.com/watch?v=jXKWlAmNYsw

我想让这个 OptionSelector 立即改变它的索引,没有动画。有没有办法做到这一点?

这是我目前做事的方式。如果这是错误的处理方式,我很高兴得到纠正。我使用 WorkerScript(一个 QML 线程,或多或少)来进行 API 调用。当这个 WorkerScript 返回时,它会像这样移动 OptionSelector:

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.
         */
    }
}
Run Code Online (Sandbox Code Playgroud)

任何帮助或见解表示赞赏 - 干杯!

Mar*_*mo- 0

您可以在此处看到 OptionSelector qml 的副本,它在未展开时使用 UbuntuNumberAnimation。没有关闭它的选项,如果需要该功能,您将不得不修补上游并等待一段时间以获得新版本的库。

不过,您可以制作自己的打开选择器小部件,删除动画部分并确保重命名它以便在代码中使用。我推荐这条路线。