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. LaunchBuilder::desktop()
  6. .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(|| {
  14. rsx! {
  15. Router::<Route> {}
  16. }
  17. })
  18. }
  19. #[derive(Routable, Clone)]
  20. #[rustfmt::skip]
  21. enum Route {
  22. #[layout(Footer)]
  23. #[route("/")]
  24. Home {},
  25. #[route("/games")]
  26. Games {},
  27. #[route("/play")]
  28. Play {},
  29. #[route("/settings")]
  30. Settings {},
  31. }
  32. #[component]
  33. fn Footer() -> Element {
  34. rsx! {
  35. div {
  36. Outlet::<Route> {}
  37. p { "----" }
  38. nav {
  39. ul {
  40. li {
  41. Link { to: Route::Home {}, "Home" }
  42. }
  43. li {
  44. Link { to: Route::Games {}, "Games" }
  45. }
  46. li {
  47. Link { to: Route::Play {}, "Play" }
  48. }
  49. li {
  50. Link { to: Route::Settings {}, "Settings" }
  51. }
  52. }
  53. }
  54. }
  55. }
  56. }
  57. #[component]
  58. fn Home() -> Element {
  59. rsx!("Home")
  60. }
  61. #[component]
  62. fn Games() -> Element {
  63. rsx!("Games")
  64. }
  65. #[component]
  66. fn Play() -> Element {
  67. rsx!("Play")
  68. }
  69. #[component]
  70. fn Settings() -> Element {
  71. rsx!("Settings")
  72. }