1
0

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::desktop()
  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(|| {
  15. rsx! {
  16. Router::<Route> {}
  17. }
  18. })
  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. }