meta/Tests/DemoApp/DemoApp.swift
david-swift ee92f63f86
All checks were successful
Deploy Docs / publish (push) Successful in 50s
SwiftLint / SwiftLint (push) Successful in 4s
Add support for environment properties
2024-10-24 13:16:23 +02:00

93 lines
1.6 KiB
Swift

import Foundation
@testable import Meta
import SampleBackends
@main
struct TestExecutable {
public static func main() {
DemoApp.main()
sleep(2)
}
}
struct DemoApp: App {
// #if os(...)
var app = Backend1.Backend1App()
// #else
// var app = Backend2.Backend2App()
// #endif
var scene: Scene {
Backend1.Window("main", spawn: 1) {
DemoView(app: app)
.environment("test", data: 5)
}
}
}
struct DemoView: View {
@State private var model = TestModel()
@Environment("test")
private var test: Int?
var app: any AppStorage
let condition = false
var view: Body {
if condition {
Backend1.TestWidget1()
} else {
Backend1.TestWidget3()
}
Backend1.Wrapper {
Backend1.Button(model.test) {
Task {
app.addSceneElement("main")
}
}
.onAppear { print(test ?? 0) }
}
TestView()
testContent
}
@ViewBuilder
var testContent: Body {
Backend2.TestWidget2()
Backend1.TestWidget3()
}
}
struct TestView: View {
@State private var test = TestModel()
var view: Body {
Backend2.TestWidget4()
Backend1.Button(test.test) {
test.updateAsync()
}
}
}
struct TestModel: Model {
var test = "Label"
var model: ModelData?
func updateAsync() {
Task {
// Do something
setModel { $0.test = "\(Int.random(in: 1...10))" }
}
}
}