flat_router.rs 1.4 KB

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