TextField("search", text: $searchText)
.accentColor(Color("ClickableLink"))
.foregroundColor(.white)
.focused($focusedField, equals: .field)
.onAppear {
self.focusedField = .field
}
.onSubmit {
loadinglayout = true
do {
try await getMemes()
}
catch {
print(error)
}
}
I get
"Cannot pass function of type '() async -> Void' to parameter expecting synchronous function type"
inside onSubmit.
So far the
do
method solved this kind of issues, why not here? I have absolutely no idea what else I could try
The problem is that you are trying to call an async
method from a synchronous method. onSubmit
is synchronous, while getMemes
is async.
You need to wrap async
methods in a Task
if you want to call them from a synchronous context.
.onSubmit {
loadinglayout = true
Task {
do {
try await getMemes()
}
catch {
print(error)
}
}
}
If you are calling async function inside button
Button {
Task{
await fetchData()
}
} label: {
Text("Refresh Time")
}
it will wait for function to return data.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With