struct RobotNameSelectorView: View {
@Environment(RobotNamer.self) private var namer
var body: some View {
@Bindable var namer = namer
List(namer.names, id: \.self, selection: $namer.selected) { option in
Text(option)
}
}
}
struct SampleRobotNamer: PreviewModifier {
typealias Context = RobotNamer
static func makeSharedContext() async throws -> Context {
let url = URL(filePath: "/tmp/local_names.txt")
return try await RobotNamer(url: url)
}
func body(content: Content, context: Context) -> some View {
content.environment(context)
}
}
extension PreviewTrait where T == Preview.ViewTraits {
@MainActor static var sampleNamer: Self = .modifier(SampleRobotNamer())
}
#Preview(traits: .sampleNamer) {
RobotNameSelectorView()
}