1
0

flat_router.rs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. use dioxus::desktop::{tao::dpi::LogicalSize, Config, WindowBuilder};
  2. use dioxus::prelude::*;
  3. use dioxus::router::prelude::*;
  4. fn main() {
  5. launch(|| {
  6. rsx! {
  7. Router::<Route> {}
  8. }
  9. })
  10. }
  11. #[derive(Routable, Clone)]
  12. #[rustfmt::skip]
  13. enum Route {
  14. #[layout(Footer)]
  15. #[route("/")]
  16. Home {},
  17. #[route("/games")]
  18. Games {},
  19. #[route("/play")]
  20. Play {},
  21. #[route("/settings")]
  22. Settings {},
  23. }
  24. #[component]
  25. fn Footer() -> Element {
  26. rsx! {
  27. Outlet::<Route> {}
  28. p { "----" }
  29. nav {
  30. style { {STYLE} }
  31. Link { to: Route::Home {}, class: "nav-btn", "Home" }
  32. Link { to: Route::Games {}, class: "nav-btn", "Games" }
  33. Link { to: Route::Play {}, class: "nav-btn", "Play" }
  34. Link { to: Route::Settings {}, class: "nav-btn", "Settings" }
  35. }
  36. }
  37. }
  38. #[component]
  39. fn Home() -> Element {
  40. rsx!("Home")
  41. }
  42. #[component]
  43. fn Games() -> Element {
  44. rsx!("Games")
  45. }
  46. #[component]
  47. fn Play() -> Element {
  48. rsx!("Play")
  49. }
  50. #[component]
  51. fn Settings() -> Element {
  52. rsx!("Settings")
  53. }
  54. const STYLE: &str = r#"
  55. nav {
  56. display: flex;
  57. justify-content: space-around;
  58. }
  59. .nav-btn {
  60. text-decoration: none;
  61. color: black;
  62. }
  63. "#;