flat_router.rs 1.6 KB

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