Since Quickemu 4.9.3 quickget downloads everything except Ubuntu daily images with curl, via the web_get() function internal to quickget.
This change adapts the progress parsing to curl's progress output and accounts for a bug in quickget where it stopped reporting if wget/curl is the external download tool.
Rather than waiting for the OS list to load, when the app starts, the
loads them in the background, and only waits if we reach the list of
available downloads without them loaded yet. In this case, we use a
FutureBuilder to display a loading spinner until the list is ready.
This fixes the loading of OS icons so they are correctly replaced with a
generic computer if no matching icon is found.
It also centralises the loading process so it happens once during app
initialisation, and displays the corresponding icon next to each VM on
the manager screen.
* Refactored shared preferences functions to be generic setters/getters using key/values to allow for multiple preferences to be stored. Refactored the shared preferences functions as a mixin for ease of use. Directory change is now remembered across the app pages.
* Added initState() to downloader_menu.dart to fetch prefWorkingDirectory
Co-authored-by: ElanMan <ben@elanman.com>