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