Skip to content

Repository files navigation

RouterExample

SwiftUI Router Example🚀

Example

Example Code

import SwiftUI
import Router
import Defaults
@mainstructRouterExampleApp:App{@Default(.isFirstLaunch)varisFirstLaunchvarbody:someScene{WindowGroup{RouterRootView{ router inSwitch(isFirstLaunch).Case(true){ _ inOnboardingView()}.Case(false){ _ inContentView()}.Else{EmptyView()}.navigationBarHidden(true)}.path("myapp://onboarding"){ data inSwitch(data.page.flatMap{Int($0)}).Case(1){ _ inOnboardingView()}.Case(2){ _ inOnboardingView2()}.Else{EmptyView()}.navigationBarHidden(true)}.path("myapp://content"){ data inSwitch(data.as_root.flatMap{Bool($0)}).Case(true){ _ inContentView().asRouterRootView()}.Else{ContentView()}.navigationBarHidden(true)}.path("myapp://counter"){ data inCounterView(count: data.bindings.count).navigationBarHidden(true)}.path("myapp://color"){ data inIf(data.color).Let{ color inColorView(color:MyColor.from(string: color))}.navigationBarHidden(true)
// Switch(data.color)
// .Case("red") { color in
// ColorView(color: MyColor.from(string: color))
// .navigationBarHidden(true)
// }
// .Case("green") { color in
// ColorView(color: MyColor.from(string: color))
// .navigationBarHidden(true)
// }
// .Else {
// Text("OMG")
// }
}}}}

ColorView

import SwiftUI
import Router
enumMyColor:String{case red
case green
case blue
case yellow
case purple
case white
}structColorView:View{@EnvironmentObjectvarrouter:Routervarcolor:MyColor=.white
varbody:someView{VStack(spacing:48){switch color {case.red:Button("Go to Green"){
router.route("myapp://color?color=green",.push)}case.green:Button("Go to Blue"){
router.route("myapp://color?color=blue",.push)}case.blue:Button(action:{ router.route("myapp://color?color=yellow",.push)}){Text("Go to Yellow").foregroundColor(.white)}case.yellow:Button("Go to Purple"){
router.route("myapp://color?color=purple",.push)}case.purple:Button("Go to White"){
router.route("myapp://color?color=white",.push)}default:Button("Go to Red"){
router.route("myapp://color?color=red",.push)}}Button(action:{ router.route("myapp://content.as.root",.sheet)}){Text("Go to Sheet").foregroundColor(.black)}Button(action:{ router.popToRoot()}){Text("Pop To Root").foregroundColor(.black)}}.frame(maxWidth:.infinity, maxHeight:.infinity).background(makeColor(color: color).ignoresSafeArea())}privatefunc makeColor(color:MyColor)->Color{switch color {case.red:returnColor.red
case.blue:returnColor.blue
case.green:returnColor.green
case.yellow:returnColor.yellow
case.purple:returnColor.purple
case.white:returnColor.white
}}}

About

SwiftUI Router Example🚀

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages