My First Flutter App
My First Flutter App
My first go at a flutter app produced a reasonably useful app considering the minute amount of knowledge I started with. My second go introduced multiple pages to make the app more usable and to make the internal widget tree easier to navigate. And so, to my third go...
The idea is simple, ask the minimum number of questions you have to in order to determine which of the Management Standards apply to the user and present them with a report of what they should know or be studying and how we arrived at that conclusion.
This change was the scary one. It's the one I've been avoiding for a while so it's the one I absolutely need to get done before I avoid it to the point of not doing it.
So, what have I added for version 3 that is so scary...
Ok, lets start with the simple one first. The startup splash screen in V2 was a bit of a bodge and, as I found out in debugging, was majorly broken if startup tasks didn't complete in the 750ms I gave it. That's now fixed and a task can take as long as it needs to to be completed. More importantly, it lets me debug properly.
Scary, part 1. The questionnaire and the analysis text was previously hard coded into the program, making the code to populate the internal structures child's play but not realistic. A better system would be to load them from a file.
So, the questionnaire and the analysis are now loaded from a json file. The file is still part of my app bundle, but the hard but is reading the file, extracting the JSON and parsing it into objects. That's now done so, if I wanted to move the questionnaire file to the net and load it from there, it's trivial.
From the screen shots and videos I have posted so far, it is kind of obvious that the app looks and feels like an Android app. Nice if you have an Android device, less so if you're primarily iOS. I need to make it look and work more like an iOS device. After all, that's the promise of Flutter - cross platform using platform specific styles.
What a nightmare!
First pass was to use the flutter_platform_widgets package. That very quickly gave me an app that worked and changed it's style depending on the device it was running on. It also gave me a crash on iOS Important to note, this is not a failing of the package and their support were brilliant in telling me how to work round what is, in fact, a Flutter bug.
However, that didn't feel satisfying and didn't help with my learning. It was great for helping me focus on what had to change though. So, I set about re-coding the app to become platform aware and to adjust the look and feel between Android and iOS the hard way - manually. I certainly learnt a lot doing this and feel it was totally worth the work involved.
Ignoring the splash screen which looks the same on both systems, I re-styled the question/answer page.
If you cancel the questionnaire part way through, you're going to be asked to confirm that's what you want to do. Android and iOS prompts are very different styles:
The nightmare screen was the results screen. Why? because it has tabs at the bottom to select between the profile and the questions and that mechanism is very different between Android and iOS. The library I had used made all that transparent and is definitely the way to go to simplify things. However, a lot of googling got me to a profile display:
Clicking on the Question Summary tab then gets me to the questions and answers display:
It's a big step forward for the app. Oddly enough, I find I don't particularly like the flat style of iOS, but it's lot closer to what I would produce with Swift/XCode and considerably closer to what an iOS user would expect to see and would be intuitively be able to use.
I continue through the course and will probably revisit this app as I go along. I'm less un-happy with the data model than I was but think there is more I can do to fix that. I have ended up with fewer StateFul widgets as part of this set of changes, but I've done a section of the course on using the Provider package to better manage my data. I'm also going to need to be able to output the report to print or PDF (not a clue where to start).
Don't take my word for my abilities, take a look at other peoples opinions about me.
One very quickly runs out of superlatives with Steve. He is the cleverest person I know. He is highly innovative, passionate regarding the proper maintenance of agreed standards and protocols and establishes excellent relationships with our clients.
I have had the pleasure of working with Steven for several years in my role as CTO. He his one to the most multi-disciplined technically skilled developers I have known but what sets him apart is his eye for, and attention to detail, particularly when considering the user experience. I would absolutely not hesitate in recommending Steven.
Steve is a rare developer resource who is able to provide a good breakdown of technical solutions for all audiences to understand... Steve understands the importance of project deliverable's both from a client and business perspective and shows a personal pride in ensuring the delivery schedules are met
I have worked closely with Steve for his time with us and long before we formed our company. His technical ability far out-performs anyone I have known or met in companies we have worked with like IBM/EDS/Cap Gemini.
Steven showed a great deal of commitment and skill when he worked with me. His attention to detail, comprehensive documentation and well thought out code, using very impressive technical standards meant that it was always possible to rely on the solutions provided being top notch. Steven is an asset to any company, at any level - if I were able to, I'd love to work with him again.