My team has been using Shuffleboard as our main Dashboard ever since we switched to Java in the 2020 season. We’ve loved using it because of how easy it is to add new widgets onto the screen and rearrange them if needed. For example, we had to add some widgets displaying our voltage and pressure during a regional to determine where we were having voltage drops. However, we have also had issues with it using a ton of ram and draining the battery of our laptop.
Over the summer I want to try creating a custom dashboard in Flutter. I would want it to be similar to Shuffleboard, where you can drag and rearrange tiles with different widgets to display information. I’m not entirely sure the best way to do this as Flutter and the Dart programming language is still somewhat new to me.
The few questions I have about this is:
- How do you connect to Network Tables in Dart?
- What would be the best place to start this project? I have a small amount of experience in Flutter but I haven’t done a project of this size.
Alternatively, if there is another team that has made this type of dashboard, I would love to take a look at it and see if I can either use it as inspiration or adapt it to our team’s needs.
I think Ranger Robotics wrote a network tables library in Dart for their dashboard this year
Ranger robotics has a good setup for flutter inside their team code and theirs a fork to work on just a dashboard from it kicking around, there are also a few electron dashboards and a single tauri dashboard under development if you’d rather use web based front ends.
I’m working on the above-mentioned web-based successor to Shuffleboard that uses Tauri and Svelte. I haven’t announced it on CD quite yet but expect that within a week. If you’re looking for the experience of making a dashboard in Flutter specifically have fun, but if you just want a more performant alternative, mine should hopefully be ready by off-season.
Edit: beyond Shuffleboard feature parity, what are your requirements for a dashboard replacement?
How are you handling network tables I need to know
I’m currently trying to keep multi-connection support for linking to multiple servers at the same time with a separate thread per connection and I want to see how others have handled it unless you did network tables in Typescript in which case, probably way easier.
This, with wrappers for subscribers and publishers that leverage Svelte’s reactivity syntax sugar. It should handle multiple clients on different servers as easily as you would expect (two NT instances constructed). Any part that is a particular pain point? I just use one client. You’re the first person I’ve ever heard doing a multi-server configuration but knowing it’s you, I’m not surprised.
ah well TS clients are nice and widely available, the rust client is uh it’s special. But good to see another ts implementation