flat_router.rs 1.6 KB

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