ContentView
Anonymous
swift
04/09/2026 6:08 AM
4.0 KB
14
Indexable
//
// ContentView.swift
// WidgetDemo
//
// Created by Muhammad Abid on 26/03/26.
//
import SwiftUI
import WidgetKit
struct ContentView: View {
@AppStorage("counterValue", store: UserDefaults(suiteName: "group.Abid.WidgetDemo"))
private var counter: Int = 0
@State private var favoritePlayerName: String = ""
@State private var favoritePlayerTeam: String = ""
var body: some View {
VStack {
favoritePlayerSection
counterSection
}
.padding()
}
private var favoritePlayerSection: some View {
VStack(alignment: .leading, spacing: 12) {
Text("Favorite Player")
.font(.headline)
Text(displayFavoritePlayer)
.foregroundStyle(.secondary)
TextField("Player name", text: $favoritePlayerName)
.textFieldStyle(.roundedBorder)
TextField("Team", text: $favoritePlayerTeam)
.textFieldStyle(.roundedBorder)
Button("Save Favorite Player") {
}
.buttonStyle(.borderedProminent)
.frame(maxWidth: .infinity)
}
.padding(20)
.background(RoundedRectangle(cornerRadius: 20).fill(.ultraThinMaterial))
}
private var displayFavoritePlayer: String {
let name = favoritePlayerName.isEmpty ? "Unknown" : favoritePlayerName
let team = favoritePlayerTeam.isEmpty ? "Unknown" : favoritePlayerTeam
return "\(name) - \(team)"
}
private var counterSection: some View {
VStack(spacing: 16) {
Text("\(counter) / 50")
.font(.system(size: 48, weight: .bold, design: .rounded))
ProgressView(value: Double(counter), total: 50)
.progressViewStyle(.linear)
.scaleEffect(x: 1, y: 2)
HStack(spacing: 24) {
Button("−") {
if counter > 0 {
counter -= 1
WidgetCenter.shared.reloadAllTimelines()
}
}
.font(.system(size: 36, weight: .bold))
.buttonStyle(.borderedProminent)
.tint(.red)
Button("+") {
if counter < 50 {
counter += 1
WidgetCenter.shared.reloadAllTimelines()
}
}
.font(.system(size: 36, weight: .bold))
.buttonStyle(.borderedProminent)
.tint(.green)
}
Button("Reset") {
counter = 0
WidgetCenter.shared.reloadAllTimelines()
}
.foregroundStyle(.secondary)
}
.padding(20)
.background(RoundedRectangle(cornerRadius: 20).fill(.ultraThinMaterial))
.onAppear {
WidgetCenter.shared.reloadAllTimelines()
}
}
}
#Preview {
ContentView()
}
Editor is loading...
Leave a Comment