I have a settings Viewmodel. When I am changing a published variable by Toogle it is Automatically going back to a previous view.
I am accessing that published variable in Content View to change the language of the app. If I do not access the published variable then in the Content view by environment object, changing published variable does not trigger Auto navigation.
Settings View:
struct User4View: View {
@EnvironmentObject var settingsVM: SettingsViewModel
var body: some View {
VStack{
HStack(spacing:12){
Image("language")
.resizable()
.frame(width:20,height: 20)
Text(AppStrings.language)
.mediumHeaderNotBoldTextStyle()
Spacer()
Text("EN")
Toggle("", isOn: $settingsVM.isBangla.didSet { (state) in
print(state)
settingsVM.gotoLoginScreen = false
})
.labelsHidden()
Text("BN")
}
}
Settings ViewModel:
class SettingsViewModel:ObservableObject{
@Published var viewrs:ViewersResponseModel?
@Published var gotoLoginScreen:Bool = false
//static var shared = SettingsViewModel()
@Published var isBangla = UserDefaults.standard.object(forKey: "isBangla") as? Bool ?? false{
didSet{
UserDefaults.standard.set(isBangla, forKey:"isBangla")
print("isBangla",UserDefaults.standard.object(forKey: "isBangla") as? Bool)
}
}
}
ContentView:
struct ContentView: View {
@ObservedObject var settingsVM = SettingsViewModel()
var body: some View {
NavigationView{
Admin2ViewWithoutForm()
}.navigationViewStyle(StackNavigationViewStyle())
.environmentObject(settingsVM)
.environment(\.locale, .init(identifier: settingsVM.isBangla ? "bn-BD" : "en"))
}
}