import WidgetKit
import SwiftUI
private let widgetGroupdId = "group.home_widget"
extension View {
func widgetBackground(_ backgroundView: some View) -> some View {
if #available(iOSApplicationExtension 17.0, *) {
return containerBackground(for: .widget) {
backgroundView
}
} else {
return background(backgroundView)
}
}
}
struct Provider: TimelineProvider {
func placeholder(in context: Context) -> SimpleEntry {
SimpleEntry(date: Date(), city: "PlaceHolder", temperature: "2°", weatherDescription: "Bulutlu", feelsLikeTemperature: "0°")
}
func getSnapshot(in context: Context, completion: @escaping (SimpleEntry) -> ()) {
let entry: SimpleEntry
if context.isPreview{
entry = placeholder(in: context)
}
else{
let userDefaults = UserDefaults(suiteName: widgetGroupdId)
let city = userDefaults?.string(forKey: "city") ?? "Tirana"
print("City from UserDefaults: \(city)")
if let city = userDefaults?.string(forKey: "city") {
print("City from UserDefaults in main app: \(city)")
} else {
print("City not found in UserDefaults")
}
entry = SimpleEntry(date: Date(), city: city, temperature: "2°", weatherDescription: "Bulutlu", feelsLikeTemperature: "0°")
}
completion(entry)
}
func getTimeline(in context: Context, completion: @escaping (Timeline) -> ()) {
getSnapshot(in: context) { (entry) in
let timeline = Timeline(entries: [entry], policy: .atEnd)
completion (timeline)
}
}
struct SimpleEntry: TimelineEntry {
let date: Date
let city: String
let temperature: String
let weatherDescription: String
let feelsLikeTemperature: String
}
struct home_widget_Previews: PreviewProvider {
static var previews: some View {
home_widgetEntryView(entry: SimpleEntry(date: Date(),city: "Example city", temperature: "2°", weatherDescription: "Buludlu", feelsLikeTemperature: "0°"))
.previewContext(WidgetPreviewContext(family: .systemSmall))
}
}
}
@main
struct home_widget: Widget {
let kind: String = "home_widget"
var body: some WidgetConfiguration {
StaticConfiguration(kind: kind, provider: Provider()) { entry in
home_widgetEntryView(entry: entry)
}
.configurationDisplayName ("My Widget")
.description("This is an example widget.")
.contentMarginsDisabled()
}
}
struct home_widgetEntryView : View {
var entry: Provider.Entry
var body: some View {
VStack(alignment: .leading) {
HStack {
Image("navigation")
.foregroundColor(Color.white)
Spacer().frame(width: 5)
Text(entry.city).foregroundColor(.white).font(Font.system(size: 18))
}
}
.widgetBackground( Image("cloud")
.resizable()
.aspectRatio(contentMode: .fill )
)
.contentMargins(0)
.padding(0)
}
}
Здесь, в UserDefaults, я не получаю город, однако в своем приложении Flutter я обновляю эту информацию. Я инициализирую домашний виджет на главной стрелке, а затем
обновить мой город.
В андроиде все работает идеально. Я получаю данные. Но в iOS есть некоторая проблема. Я думаю, проблема в быстром коде. Заранее благодарю за помощь.
let userDefaults = UserDefaults(suiteName: widgetGroupdId) let city = userDefaults?.string(forKey: "city") ?? "Tirana" print("City from UserDefaults: \(city)") if let city = userDefaults?.string(forKey: "city") { print("City from UserDefaults in main app: \(city)") } else { print("City not found in UserDefaults") }
struct SimpleEntry: TimelineEntry { let date: Date let city: String let temperature: String let weatherDescription: String let feelsLikeTemperature: String }
} } [/code] Здесь, в UserDefaults, я не получаю город, однако в своем приложении Flutter я обновляю эту информацию. Я инициализирую домашний виджет на главной стрелке, а затем [code]HomeWidget.saveWidgetData( 'city', city, ); [/code] обновить мой город. В андроиде все работает идеально. Я получаю данные. Но в iOS есть некоторая проблема. Я думаю, проблема в быстром коде. Заранее благодарю за помощь.
В моем проекте есть продукты с тегом serviceItem. Товары с этим тегом при заказе должны быть разделены по количеству на отдельные заказы.
Проблема заключается в том, что getTags() возвращает значение null, а getTagIds получает «Вызов функции-члена...
У меня есть представление Swiftui со свойством, которое связано с @appstorage с пользователями:
struct GeneralSettingsView: View {
@State var model: SettingsProtocol
var body: some View {
SettingsRowWithToggle(
title: Toggle1 ,
isOn:...