Skip to content
This repository has been archived by the owner on Oct 17, 2024. It is now read-only.

Commit

Permalink
Update documentation for creating widgets
Browse files Browse the repository at this point in the history
  • Loading branch information
david-swift committed Nov 26, 2023
1 parent 7a97d36 commit 8452031
Showing 1 changed file with 7 additions and 7 deletions.
14 changes: 7 additions & 7 deletions user-manual/Advanced/CreatingWidgets.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,29 +25,29 @@ struct CustomText: Widget {

var text: String

public func container() -> ViewStorage { }
public func update(_ storage: ViewStorage) { }
public func container(modifiers: [(View) -> View]) -> ViewStorage { }
public func update(_ storage: ViewStorage, modifiers: [(View) -> View]) { }

}
```

## The `container()` Function
## The `container(modifiers:)` Function
This function initializes the widget when the widget appears for the first time.
It expects a `ViewStorage` as the return type.
In our case, this function is very simple:
```swift
func container() -> ViewStorage {
func container(modifiers: [(View) -> View]) -> ViewStorage {
.init(MarkupLabel(self.text))
}
```
`MarkupLabel` is defined in [Libadwaita][1].

## The `update(_:)` Function
## The `update(_:modifiers:)` Function
Whenever a state of the app changes, the `update(_:)` function of the widget gets called.
You get the view storage that you have previously initialized as a parameter.
Update the storage to reflect the current state of the widget:
```swift
func update(_ storage: ViewStorage) {
func update(_ storage: ViewStorage, modifiers: [(View) -> View]) {
if let label = storage.view as? MarkupLabel {
label.setText(text)
}
Expand All @@ -57,7 +57,7 @@ func update(_ storage: ViewStorage) {
## Containers
Some widgets act as containers that accept other widgets as children.
In that case, use the `ViewStorage`'s `content` property for storing their view storages.
In the `update(_:)` function, update the children's storages.
In the `update(_:modifiers:)` function, update the children's storages.
An example showcasing how to implement containers is the [VStack][2].

[1]: https://github.com/AparokshaUI/Libadwaita
Expand Down

0 comments on commit 8452031

Please sign in to comment.