flat_router.rs 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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(|| {
  7. render! { Router::<Route> {} }
  8. })
  9. .cfg(
  10. Config::new().with_window(
  11. WindowBuilder::new()
  12. .with_inner_size(LogicalSize::new(600, 1000))
  13. .with_resizable(false),
  14. ),
  15. )
  16. .launch()
  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. nav {
  38. ul {
  39. li {
  40. Link { to: Route::Home {}, "Home" }
  41. }
  42. li {
  43. Link { to: Route::Games {}, "Games" }
  44. }
  45. li {
  46. Link { to: Route::Play {}, "Play" }
  47. }
  48. li {
  49. Link { to: Route::Settings {}, "Settings" }
  50. }
  51. }
  52. }
  53. }
  54. }
  55. }
  56. #[component]
  57. fn Home() -> Element {
  58. render!("Home")
  59. }
  60. #[component]
  61. fn Games() -> Element {
  62. render!("Games")
  63. }
  64. #[component]
  65. fn Play() -> Element {
  66. render!("Play")
  67. }
  68. #[component]
  69. fn Settings() -> Element {
  70. render!("Settings")
  71. }