Missed my previous post about the project? Read it here.
Only care about the app? Skip to The Weird BottomNavigationBar ‘Bug’.
A New Distro and Android Studio
Why I switched
I used to run Zorin OS 12.4 (12.4 not shown on site) as my daily driver, however it’s age became a problem when it came to a new game I got months ago: Elite Dangerous. At the time of me switching, the only real way it seemed you were able to do this (their was another way, that I of course learned as soon as I set up my new distro) was to use winetricks to install a special library needed for the game to run in Proton. Unfortunately Zorin OS 12.4 was based on an old version of Ubuntu, and the winetricks version required wasn’t compatible with the old version of Ubuntu. So I decided to go district shopping, and eventually landed on MX Linux. I couldn’t use the Zorin OS 15 (the version after 12.4) because the way they changed how the themes worked, you no longer could have a generally light theme, but with a dark taskbar, application menu, window title bar. When I moved to the new distro, I was able to get Elite Dangerous working. It even allowed me to play Euro Truck Simulator 2 again, as I encountered a problem where the game would start in a window with a small height and 0 width (as I latter found out), and in most distros, you can’t see a window with 0 width. Luckily in MX Linux, the window border still appeared, and I was able to resize it so I could see the game.
So I have a new distro, time to set up Android Studio. This should be quick and …. damnit.
So, I had a surprising amount of problems, some of which I’m surprised I didn’t see until now. So what problems did I have:
When I imported the project and set where the new flutter path was, it just wasn’t having it: none of the imports (excluding imports of files within the project) were resolving, a few auto-gen files were being created, and I couldn’t make sense of the errors. So since I wanted to do a big reformat anyways, time to create a new Flutter Project, and just rewrite the app (with a lot of copying and pasting).
The Android Virtual Device wasn’t starting. After searching online, I found out that the common solution was to change the graphics emulation from
software. I’m not sure why I can’t do hardware emulation (which is what
autowas picking), but doing software emulation is what I’m doing now, and my god is it sluggish compared to hardware emulation. If anyone knows how to fix this, that’d be great!
Okay, I have the emulator working, time to start the app … damnit.
Failed to install the following Android SDK packages as some licenses have not been accepted.Okay, Android Studio didn’t ask be to accept any licenses, but fine, whatever, time to search online how to do so.
~/Android/Sdk/tools/bin/sdkmanager --licenseOkay, let’s run that :
Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchemaI don’t even have Java installed, Android Studio came with it’s own. Searches how to use Android Studio’s Java. Can’t, at least not easily. Okay, I’ll just install Java 8 then. Gets same error. Time to search online again. I find out that this is error is common for people running Java versions 9 and later. I search which applications I have installed, and low and behold: I had Java 11. Okay, so remove Java 11 and install Java 8. Run license command.
Okay, that’s fixed, let’s finally run the app now…
Error: The method 'CachedNetworkImageProvider.load' has fewer positional arguments than those of overridden method 'ImageProvider.load'You wot? Searches online. One of my packages:
If you are experiencing one of the following errors upgrade to 2.0.0-rc. Okay then. Fixes dependency.
Okay, that’s fixed, let’s finally run the app now … and … SUCCESS, small problem though:
The Weird BottomNavigationBar ‘Bug’
In this post I detailed a problem where if a BottomNavigationBar had 4 or more items, the background would turn white, and I couldn’t figure out why, or where the white was even coming from (couldn’t find a theme color that affected it). So I searched the interwebs and found this issue on the flutter repo. Turns out if you don’t define a BottomNavigationBarType, the auto is different if there are more than 4 or more items. As some comments agree with, this is kinda BS, but whatever, I’ll just define the type, and it worked.
The Current State of the “Rewrite”
So as I mentioned in the first part of this post, I’m “rewriting“ the app, this is what I’ve done so far (some are new ‘additions’, but some aren’t):
The app now has routes, so now I can just call
Navigator.pushNamed()to move to the different screens.
BottomNavigationBar works seamlessly with the PageView.
Miniplayer now gets its data from another class, abstracting the data from the view.
The miniplayer’s dock mode re-implemented.
My CachedNetworkImage wrapper is now in a separate class, ArtworkImage, and not a method in 3 different classes.
Screens within the PageView are now in a sub-diretory of
A Theme class has been created to create a consistent theme through out the app.
Podcast (List) Screen re-added
Temporary Queue and Playlist place holders re-added
Settings Page re-added
RSS Data Structures re-added
I think that’s where I’ll stop for today.
I may not have done much with app today, but as Winter Break is coming, I should have more time to put into this project. Also, because I started from a fresh project, the easiest way to get it on GitHub was just to create a new repo (sorry Soumyajit). If I had multiple commits, then I would have researched how to fully override without importing the new files first, but it wasn’t worth it.