flat_router.rs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. use dioxus::desktop::{tao::dpi::LogicalSize, Config, WindowBuilder};
  2. use dioxus::prelude::*;
  3. use dioxus::router::prelude::*;
  4. fn main() {
  5. LaunchBuilder::desktop()
  6. .with_cfg(
  7. Config::new().with_window(
  8. WindowBuilder::new()
  9. .with_inner_size(LogicalSize::new(600, 1000))
  10. .with_resizable(false),
  11. ),
  12. )
  13. .launch(|| rsx! { Router::<Route> {} })
  14. }
  15. #[derive(Routable, Clone)]
  16. #[rustfmt::skip]
  17. enum Route {
  18. #[layout(Footer)]
  19. #[route("/")]
  20. Home {},
  21. #[route("/games")]
  22. Games {},
  23. #[route("/play")]
  24. Play {},
  25. #[route("/settings")]
  26. Settings {},
  27. }
  28. #[component]
  29. fn Footer() -> Element {
  30. rsx! {
  31. div {
  32. Outlet::<Route> {}
  33. p { "----" }
  34. nav {
  35. ul {
  36. li {
  37. Link { to: Route::Home {}, "Home" }
  38. }
  39. li {
  40. Link { to: Route::Games {}, "Games" }
  41. }
  42. li {
  43. Link { to: Route::Play {}, "Play" }
  44. }
  45. li {
  46. Link { to: Route::Settings {}, "Settings" }
  47. }
  48. }
  49. }
  50. }
  51. }
  52. }
  53. #[component]
  54. fn Home() -> Element {
  55. rsx!("Home")
  56. }
  57. #[component]
  58. fn Games() -> Element {
  59. rsx!("Games")
  60. }
  61. #[component]
  62. fn Play() -> Element {
  63. rsx!("Play")
  64. }
  65. #[component]
  66. fn Settings() -> Element {
  67. rsx!("Settings")
  68. }