Link to my android page :
I originally wrote an app in Android, but now want to make it available to ios users. I wanted to learn a cross-platform development environment and found that Dart looked familiar to me due to my Java experience - so I decided to rewrite the app in Flutter. You can see both apps in the play store.
-------------------------- Difficulties
Pdf Viewing
Unfortunately I am not able to complete the ios version due to a missing pdf view plugin. I ended up writing a flutter plugin and implemented the android part :
Preferences
In Android we can store preferences and specify filenames. My app uses that to store multiple questionnaires. I needed to write a library to provide that functionality :
Text Markup
It is useful to load an xml file containing embedded markup, e.g. bold, italic, list items etc.
And then display that text inside a page e.g. adding flutter controlled navigation around it etc. I could find no way to do this. This led to extra work, like creating an xml structure for a list and parsing each item, instead of just reading and displaying markup as in the original app.
Bullet Points
I wanted to just display bullet points such as by displaying a list, or adding •
I couldn't find a simple way to do this, I looked through the standard Icons but couldn't find a bullet point - so I just used a *
Color Transitions
On the questions pages, the viewpager on the original has a nice color transformation between each page where it transitions to the next page color as you swipe towards it. I Couldn't find how to do that in flutter.
Stability
The app looks to be stable, maybe more stable than the original ! In the original if the app is in the background and you re-open it later it will often crash. The flutter version doesn't do that.
-------------------------- Differences
Install Size
Flutter : 8.2mb
Original : 1.2mb
Lines of code
Flutter : 1357 dart
Original : 1051 java, 598 xml
-------------------------- Thoughts
Desktop Flutter
If the standard development environment used flutter on the desktop, it would be the most seamless development environment. No waiting for emulators - just run your app instantly, then test later on phones. This would allow integrating the desktop flutter inside the IDE - I can never seem to get the emulator in the right position on my laptop screen.
Alternatively Flutter apps running in the browser in WebAssembley could achieve the same thing.
IDE
Write an IDE (in Flutter) for the Chromebook/android/fuschia. This would allow a complete development environment on a $300 Chromebook. Pretty neat to be able to develop for 10 hours off battery.
Name
Flutter should have been called Nest :)
-------------------------- Conclusion
I think that flutter is an excellent way to develop cross platform apps. It reduces the complexity a lot compared to native android app development. I like the Dart language and it feels like modernized Java.