duit_go
61 строка · 3.1 Кб
1package duit_attributes
2
3import (
4"github.com/lesleysin/duit_go/pkg/duit_attributes/duit_clip"
5"github.com/lesleysin/duit_go/pkg/duit_attributes/duit_edge_insets"
6"github.com/lesleysin/duit_go/pkg/duit_attributes/duit_flex"
7"github.com/lesleysin/duit_go/pkg/duit_attributes/duit_gestures"
8"github.com/lesleysin/duit_go/pkg/duit_core"
9)
10
11type ListKind uint8
12type MergeStrategy uint8
13
14const (
15Common ListKind = iota
16Builder
17Separated
18)
19
20const (
21AddToEnd MergeStrategy = iota
22AddToStart
23Replace
24)
25
26type ListView[TInsets duit_edge_insets.EdgeInsets] struct {
27Type ListKind `json:"type"`
28ScrollPhysics duit_gestures.ScrollPhysics `json:"scrollPhysics,omitempty"`
29Reverse bool `json:"reverse,omitempty"`
30Primary bool `json:"primary,omitempty"`
31ShrinkWrap bool `json:"shrinkWrap,omitempty"`
32AddAutomaticKeepAlives bool `json:"addAutomaticKeepAlives,omitempty"`
33AddRepaintBoundaries bool `json:"addRepaintBoundaries,omitempty"`
34AddSemanticIndexes bool `json:"addSemanticIndexes,omitempty"`
35ScrollDirection duit_flex.Axis `json:"scrollDirection,omitempty"`
36CacheExtent float32 `json:"cacheExtent,omitempty"`
37Anchor float32 `json:"anchors,omitempty"`
38SemantickChildCount int `json:"semanticChildCount,omitempty"`
39Padding *TInsets `json:"padding,omitempty"`
40ItemExtent float32 `json:"itemExtent,omitempty"`
41ClipBehavior duit_clip.Clip `json:"clipBehavior,omitempty"`
42RestorationId string `json:"restorationId,omitempty"`
43DragStarnBehavior duit_gestures.DragStartBehavior `json:"dragStartBehavior,omitempty"`
44KeyboardDismissBehavior duit_gestures.ScrollViewKeyboardDismissBehavior `json:"keyboardDismissBehavior,omitempty"`
45}
46
47type ListViewBuilderAttributes[TInsets duit_edge_insets.EdgeInsets] struct {
48ListView[TInsets]
49ChildObjects []*duit_core.DuitElementModel `json:"children,omitempty"`
50ScrollEndReachedThreshold float32 `json:"scrollEndReachedThreshold,omitempty"`
51MergeStrategy MergeStrategy `json:"mergeStrategy,omitempty"`
52}
53
54type ListViewSeparatedAttributes[TInsets duit_edge_insets.EdgeInsets] struct {
55ListViewBuilderAttributes[TInsets]
56Separator *duit_core.DuitElementModel `json:"separator"`
57}
58
59type ListViewAttributes[TInsets duit_edge_insets.EdgeInsets] interface {
60ListView[TInsets] | ListViewBuilderAttributes[TInsets] | ListViewSeparatedAttributes[TInsets]
61}
62