As noted in a previous post I am learning and using Dart and Flutter now to build an app. I chose to build a basic app, that uses content both in Arabic and English languages to leverage my knowledge of these two languages and have a broader user base.
The early learning process
Roughly a year ago, I started my adventure with Dart/Flutter. I read these books some of them more than once:
- Dart Apprentice: Beginning Programming with Dart,
- Dart Apprentice: Fundamentals: Modern Cross-Platform Programming With Dart,
- Dart Apprentice: Beyond the Basics: Object-Oriented Programming, Concurrency & More,
- Flutter Apprentice (Second Edition): Learn to Build Cross-Platform Apps, and
- Dart Programming Language Specification
I got a decent grasp of the new syntax, features and keys aspects of Dart/Flutter. Additionally, since I have prior knowledge in programming in PHP and JS, there are many concepts that are the same.
My thoughts on building an app fast
Firstly, I have not planned to build a complicated and a highly innovative app, as I do not have much experience in creating a mobile app. For this I did a market search, checked and explored some ideas, downloaded a couple of apps and tried them for awhile. Moreover, for category of app I am targeting I reviewed the number of downloads and the variety of monetization strategies they employ.
I jumped into VSCode and started coding to acquire the know-how to build an app, and avoid focusing on theory more than needed.
Quickly, I thought about trying AI generate code mainly with Google Gemini but after months I tried ChatGPT and the second turned to be much better.
My experience with Gemini and ChatGPT
I used Gemini for months to generate my Flutter code. I also used it to debug, supplemented with traditional Google searches and documentation reading.
Relying on Gemini for Flutter app coding is not really worth it as the code it generates is not of a good quality, its debugging with Gemini is a troublesome and the debugging generate an infinite number of other bugs. And even when the number of error is zero after a extensive troubleshooting and I was able finally the run the app the results were not acceptable.
With ChatGPT there are fewer bugs and the debugging is faster and the results are fantastic comparing with Gemini.
As an real example to compare both Gemini and ChatGPT, when I upload a design image to both of the AIs and ask of creating a UI based on the image, Gemini have buggy and catastrophic results but ChatGPT is able to build UI similar to the image uploaded.
Another feature in ChatGPT that is not present in Gemini is the possibility to upload a zip file that can contains my whole app files and craft a prompt starting from there for more work efficiency. You can see this on the image below.
This option is not yet available in Gemini as shown on the screenshot, only image upload is available as for today.
Improving my efficiency while building apps with AI
It may be as simple as trying new AI tools such as VSCode plugins and other AI code generators an tooling. Subscribing the Flutter and AI newsletters. In addition, to get more technical, level up my prompt engineering skills and more importantly have a better grasp of the Flutter and Dart specific terminology to get superior results with my prompts.
To acquire this terminology I can simply explore the Flutter documentation here:
https://docs.flutter.dev/ui/widgets
Conclusion
There is still work to do to build my first mobile app. Leveling up my coding and prompt engineering skills are a must. My first app is an experiment and a preparation to build more complex future app. In my path of immersion my self in tech and knowledge I have also learned JSON, SQL, be more strategic and mono task, but these subjects maybe a title of another blog post.