Release 0.2.0
Scrolling is the release. A scroller can be given a grid and comes to rest on
it, and the two items views that ride on that grid are now this library's own.
A scroller comes to rest where it is told. .snapInterval(_:from:),
.snapsAtMost(_:), .momentum(_:), .snapItem($:) and .onScrollStopped { }.
The aim is taken inside the platform's own decision rather than after it, so a
released throw is one movement and nothing waits for a Swift answer. Past one
point of the grid the platform keeps its own curve; within one point the
movement is this side's own at a stated speed, so a whole point takes 500 ms and
a tenth of one 230, and every settle arrives alike. Windows answers the wheel
itself, that platform reporting no gesture phase to read.
CollectionView and CarouselView, under MAUI's names, over this library's
own code. The list runs down or across and describes only what is in view;
the carousel is that same list showing one card at a time, with its neighbours
at the edges. Nothing of either crosses the boundary.
A row that scrolls out of the window keeps its control for the row arriving.
Measured on the gallery's thousand-row list, Release Mac Catalyst: four controls
built and four destroyed per row crossed became none, and an apply went from
1.67 ms to 0.91.
Beside them: every MAUI 10 property and event a control takes, state that is
safe to write from any thread, a view told when it unloaded, one live session to
a process, and the Apache-2.0 notice on every source with a CLA and a
CONTRIBUTING beside it.
Breaking changes
The 0. in front means names and shapes still move. This release moves these:
LazyListisCollectionViewandLazyGroupisCollectionGroup..rowHeight(_:)is.itemSize(_:)- the same number on whichever axis the
list runs.CarouselViewis no longer MAUI's control. It takes a collection and a card
template -CarouselView(cards) { card in … }- instead of a view builder,
and.loop,.peekAreaInsets,.itemsLayoutand.isBounceEnabledare
gone with the control that had them. A carousel has two ends.- The carousel's gap is
.itemSpacing(_:). - The wire is version 10. Both halves come from the same package, so this
matters only if you pinned them apart.
Install
dotnet add package StateUI --version 0.2.0
.package(url: "https://github.com/idexus/StateUI.git", exact: "0.2.0")
660 Swift tests and 512 C# tests green; all four platforms build.