Estou brincando com algum desenvolvimento swift pela primeira vez em alguns anos e a linguagem mudou um pouco com swiftui. Tenho seguido alguns tutoriais diferentes e acho que posso estar confundindo algumas maneiras de fazer as coisas.
Estou tentando inicializar um FamilyActivityPicker
e responder ao onChange
evento. Seguindo um tutorial, os dados que vinculei ao FamilyActivityPicker
são de um modelo usado como estado na minha visão. No entanto, o onChange
evento para o seletor nunca dispara (eu tenho uma print
declaração que nunca dispara). Se eu adicionar algum código a um didSet
no meu modelo, isso dispara (embora pareça disparar 6 vezes). Alguém consegue ver algo óbvio que estou fazendo errado aqui? Não tenho certeza se é devido ao meu entendimento do swiftui e como tudo se vincula
struct ContentView: View {
@StateObject var model = FamilyControlModel.shared
@State var isPresented = false
var body: some View {
Button("Open picker") {
Task {
try await model.authorize()
isPresented = true
}
}
.familyActivityPicker(
isPresented: $isPresented,
selection: $model.selection
).onChange(of: model.selection) {
print("on change")
let data = try? encoder.encode(model.selection)
let strData = data!.base64EncodedString()
print(strData)
}
.padding()
}
}
Class FamilyControlModel {
static let shared = FamilyControlModel()
var selection = FamilyActivitySelection()
}