The International Flutter Starter Kit (Part 3/3)

Nawal Alhamwi
Flutter Community
Published in
16 min readJan 24, 2020

Whether you are a beginner in programming or a Flutter evangelist this guide is for you 😉

*** This article is written in collaboration with Beyza Sunay Güler ***

And our Flutter-y world tour continues ✈ ! One second, have you missed out on reading Part 1 & Part 2? Check them out here → Part 1 & Part 2

Pascal Welsch

Cologne, Germany

Q1: How did you start with Flutter as a beginner back in the time? 🤓

When I started with Flutter there wasn’t much information besides the official documentation and the source code itself. I remember, I had a small sample app, which didn’t move beyond a “Hello World” application for multiple weeks. During that time I watched Hixies videos on YouTube, especially Flutters Layered Design and started reading the Flutter source.

The only notable Flutter app to look at was part of the Fuchsia repository: Armadillo. A rather big project which gave a glance at what the structure of a big Flutter app might look like. The beauty of that project was a Widget called ScopedModel which helps to separate business logic from view code.

I called Brian Egan after I found out he extracted the scoped_model from the project to put it on pub. It was our first contact and I really enjoyed discussing the struggle to manage state in a Flutter app. After reviewing multiple patterns, Brian introduced me to his flutter_architecture_samples repository, where I soon became the author of the scoped_model example.

It was much more fun to work on a public collection of examples rather than my 20th side project.

Q2: What do you love the most about Flutter?

For me, Flutter is the right way of abstraction to build mobile apps. It allows me to draw the same pixels on multiple operating systems without changing my code.

I always had a hard time explaining to clients that their fancy list with section headers is a 1–to 2-week effort on Android. For a dumb list. Same for handling orientation changes where the extremely bad cost-benefit ratio made it always the first feature to dismiss.

With Flutter everything is back in balance. Dumb list? 1 day, max; orientation changes work out of the box. Wanna handle process death? That’s 1 week, but we can start building it after releasing the MVP. Completely understandable efforts for clients.

While all this might also be true for other cross-frameworks UI frameworks like Unity, Flutter comes with a modern declarative reactive UI framework. It solves the mobile's biggest problem: Stable UI tests. On Android and iOS, UI tests are flaky, no matter how perfect you build them. The fact that they have to run them on emulators also makes the feedback loop slow. It makes TDD de facto impossible.

With Flutter, you can run UI tests headless, without an emulator. It is even possible to run UI tests against multiple screen sizes to test for small and big phones, tablets and desktop.

I love automated tests and I don’t see myself going back to any framework without such strong support for testing.

Q3: What do you say to all the beginners in Flutter?

Try it! It’s easier than you think! Flutter is definitely the easiest way to build mobile apps today, even without any programming background.

Try it with the right idea

Don’t start with hard ideas. There are three types of apps I don’t recommend building with Flutter, especially for your first app:

  • 3D games: Flutter is built on top of the best 2D graphics library out there: Skia. For 3D graphics use Unity.
  • Augmented Reality: Although there are AR libraries for Flutter, it doesn’t give you a good impression of how Flutter development works. You don’t show more than a single full-screen AR Widget and then work with those library APIs only. The same goes for Google Maps or Camera where you spend more time working with the libraries rather than Flutter. If this is the core of your app, better start with something simpler.
  • Background location tracking: No matter if you try to track the distance you travel by walking via GPS or geofences, or try to scan Bluetooth beacons in the background; those things are already hard if not impossible to detect with native APIs. Don’t expect Flutter to overcome restrictions from the underlying Platform. Remember, Flutter is first of all a UI toolkit. You can build beautiful apps in no time and you should focus on UI for your first app to see Flutter beauty.

What I recommend an app that talks to a REST API, or Firebase. Build something like a time-tracking app for your companies proprietary time-tracking tool or an app that displays your canteens menu.

Build it yourself

As an Android Developer, I was constantly looking for open-source projects which could help me to build my design. Fancy toolbars, cool animating progress bars or easy to use section headers for a list. Over the years I learned: Building a custom view takes too much time and is error-prone.

This mindset has significantly changed with Flutter. I recently had to build a progress bar for a video. I did not even consider looking for an existing solution. I coded it myself in 15 minutes. I later discovered Flutter's official LinearProgressIndicator which had an almost identical implementation.

What I learned with Flutter: Building it myself is easy. And it’s easier to extend than third party libraries. I don’t have to care about features I don’t use when adding new ones.

Q4: What are some resources that you recommend for those who are just starting out with Flutter? & are there good Flutter resources in your language?

I recommend looking for local Flutter meetups like flutter.school. It really helps me to discuss ideas in-person and hear different opinions. Ask others for good next steps or exchange contact information to solve your problems the other day.

If you’re a professional developer in another framework I recommend checking out Brians flutter_architecture_samples. You can compare different architecture implementations yourself and pick the one you like most. When in doubt, start with the Provider.

Paulina Szklarska

Wrocław, Poland

Q1: How did you start with Flutter as a beginner back in the time? 🤓

I started my journey with Flutter about 1.5 year ago as the R&D project in my previous company. In the beginning, I was very skeptical about it, as I used to be a native Android developer, but when I started playing with Flutter, I saw really big potential :)

Q2: What do you love the most about Flutter?

The way that applications are crafted. You can compose the whole application from small pieces. It’s not only faster to write the new UI elements, but also to maintain the existing code and to design the proper architecture. And it gives me a lot of flexibility when it comes to creating custom UI, what’s important for me. I also love the hot reload feature, it saves me so much time :) And the key concept of Flutter being platform-agnostic, because of this, in most cases, I don’t need to worry about the variety of devices.

Q3: What do you say to all the beginners in Flutter?

Keep it up! Flutter is, in my opinion, something that’ll be very popular soon. When I compare the market today and a year before, I see a tremendous gap. And I can’t wait to see where Flutter will be in a year from now.

Q4: What are some resources that you recommend for those who are just starting out with Flutter? & are there good Flutter resources in your language?

I can highly recommend starting with Codelabs because I’m a big fan of learning by trying :) During the codelabs you can also read the documentation, which has a lot of examples and it’s written with approachable language. And if you have any questions, you can always join the conversation over here. In those groups, people are exchanging their experience and if you’re stuck with something, that’s the best place.

There are no many resources in my language, Polish, because English is a must-have in the IT, so Polish people create content mostly in English :)

Pavan Podila

India

Q1: How did you start with Flutter as a beginner back in the time?🤓

I start playing around with Flutter in the early of 2018 but was just dabbling at that time. It was only in September 2018 that I became more serious when I started building an app with Flutter. I was coming from a Web/React/React-Native background so I came to expect a few things. I totally loved the Widget/Component driven development and fast hot-reload. It felt like a total game changer and I got hooked onto it. I learned Flutter mostly by experimentation, reading the awesome documentation over here and watching lots of videos on YouTube. Some of the favorite channels on YouTube were Flutter, Google Developers, and DartConf. I also spent a lot of time learning from blogs on Medium.

Q2: What do you love the most about Flutter?

From a technical standpoint, it’s got to be a combination of the hot-reload development experience, a well-designed and flexible Widget library, and a powerful animation engine. From a more practical perspective, it has to be the wonderful community of developers who freely share their knowledge.

Q3: What do you say to all the beginners in Flutter?

Starting anything new always has some resistance. But stick with it. Make incremental progress daily and in a week it won’t seem so bad. In a month, it starts to feel easy. In a few months, you might even become an expert. 1% of progress on a daily basis, over a few weeks, will result in remarkable results. Oh, and Flutter also makes you very productive and lets you have lots of fun. Give it a shot and just keep exploring. All experts of today have started their journey by not knowing anything. They just played around on a daily basis and accumulated knowledge and experience bit by bit. You too can become an expert.

Q4: What are some resources that you recommend for those who are just starting out with Flutter? & are there good Flutter resources in your language?

As I mentioned in the earlier questions, I found lots of great material on Medium, YouTube and of course the official documentation. But most importantly, the best resource is just experimenting and trying things out yourself. Experience is a great teacher and there is no substitute for that. So pull up your sleeves and explore!

Pawan Kumar

Faridabad, India

Q1: How did you start with Flutter as a beginner back in the time? 🤓

I started with Flutter back in 2017. Before that, I tried it but I wasn’t sure about the future of it. Since 2017, I was pretty sure that Flutter will solve so many problems & pains of devs. I mostly read the available documentation and few tutorials which were available and then started making my own by experimenting.

Q2: What do you love the most about Flutter?

There are many things I love the most about Flutter or I should say overall Flutter as a development kit. But if I have to choose one then I would say the ease of development which made so many non-tech people become developers.

Q3: What do you say to all the beginners in Flutter?

I would say that please don’t just run behind creating UIs around Flutter but rather focus on improving your skills by creating small to large apps. There are hundreds of tutorials and a powerful community to help you out.

Q4: What are some resources that you recommend for those who are just starting out with Flutter? & are there good Flutter resources in your language?

Obviously, as a creator myself, I would suggest watching MTECHVIRAL YouTube videos and iampawan GitHub repos 😜. But apart from that, there are many good resources like —

  1. The Flutter Documentation (It is itself the best).
  2. Google Flutter Codelabs
  3. Flutter Youtube Channel
  4. Some paid Udemy courses probably. Note — I also make videos in my native language Hindi 😆.

Pooja Bhaumik

Bengaluru, India

Q1: How did you start with Flutter as a beginner back in the time? 🤓

Last year, I joined a company as an Android Developer but they wanted me to work on Flutter for one of their flagship mobile apps. I learned Flutter on the job, watched talks, tried out codelabs, read articles and implemented UI on my own to get comfortable with UI-as-code since I was coming from an Android world. Now I can’t go back❤

Q2: What do you love the most about Flutter?

The concept of “Everything is a widget” is pretty interesting because it provides less restriction while writing code and the customization factor for components is high. How animations are handled in Flutter blew my mind because I was finally able to create beautiful and interactive applications in a simple manner. But more than the technology, it is the community that wins everyone’s heart. People might say the community is small compared to other dev communities, but it’s concentrated, welcoming and extremely helpful. This is possible only because of the culture created by the DevRel Flutter team who are doing the toughest job so kudos to them!

Q3: What do you say to all the beginners in Flutter?

Make sure you know your basics right before you attempt to write Flutter code. Flutter is fairly easier than other frameworks but it still requires you to know your OOP properly. You can’t jump on this train without the OOPs ticket. And even if you managed to jump, you will face plenty of hurdles during the intermediate stages of Dart and Flutter.

Q4: What are some resources that you recommend for those who are just starting out with Flutter? & are there good Flutter resources in your language?

I always share my own article with people struggling to find the right resources for Flutter. I have listed all the recommendations here! Check them out!

You can follow me here:

http://github.com/PoojaB26

http://medium.com/@poojabhaumik

http://linkedin.com/in/poojab26

Randal L. Schwartz

Portland, Oregon, United States

Q1: How did you start with Flutter as a beginner back in the time? 🤓

I started with the tutorials on what is now flutter.dev, at the urging of Wm Leler.

Q2: What do you love the most about Flutter?

Hot reload.

Q3: What do you say to all the beginners in Flutter?

Do the codelabs at flutter.dev. Hang out on Gitter flutter/flutter.

Q4: What are some resources that you recommend for those who are just starting out with Flutter? & are there good Flutter resources in your language?

Again, the codelabs at flutter.dev, and review the cookbook there.

Slawomir Kulinski

London, UK

Q1: How did you start with Flutter as a beginner back in the time?🤓

Bit of background.

I was an Android developer for a couple of years already and working with Android every day taught me about the problems of mobile development. Android requires a lot of work to learn and do things the right way. If you are not careful you end up with a codebase that is hard to maintain, extend or even explain to anybody. Android developers have to master two languages, Gradle, SDK, different types of automation testing, a handful of third-party tools. On top of it, they have to understand the application architecture.

This wasn’t the hard thing for me only. The strain was visible not only on me but on my Android teammates and on the iOS team as well. We were highly skilled in a very narrow domain and couldn’t even share knowledge just because of differences between the frameworks.

One day one of my teammates mentioned in the community meeting that Google has just published Flutter. It was an early alpha. I’ve decided I will check it out. After a couple of days, I’ve had my first prototype app. It was a copy of our company's internal app, just reimplemented in Flutter. This is where I’ve started to realize what I’ve stumbled upon.

Flutter was easy to grasp. Dart was simple to someone who used Java and Kotlin before. Some concepts were counterintuitive to Android developer so it took me a couple of days for my brain to click. The things which were slowing me down were the habits I have learned when learning Android.

For example:

Where is my layout XML file? Oh, there is none. My code is my layout.

How do I update the text in this specific widget? Oh, you don’t. You just return an entire tree of widgets with all the changes and make Flutter figure out what has changed since last time.

How do I manage the Android lifecycle? Oh, you don’t. Flutter does it for you.

What is the Dart equivalent of the Retrofit library? Actually, a basic HTTP client is good for you out of the box. You may find something more elaborate later.

Q2: What do you love the most about Flutter?

Flutter can be learned by developer wannabes as well as seasoned developers. It promotes good engineering principles. There is a number of things that made me fall in love with Flutter.

💙 Hot Reload

It is not a gimmick you show to your iOS and Android friends. It is a core feature and the entire framework is built around it. Hot reload allows you to see the result of the changes in the code instantly on the running application without losing the state of the application. The reload takes less than a second. The importance of this feature cannot be unnoticed. It not only helps you find your mistakes faster. It helps you try more things more often. It allows you to learn quicker and more.

💙 Lack of dependencies

Flutter was built ground up without its predecessors’ dependencies, but it was built on knowledge learned from its predecessors. This is why the Flutter Team is fully in charge of what can be implemented. In most of the other frameworks, it is the opposite, and the codebase determines what is achievable. This is also why Flutter SDK is improving so rapidly.

Thanks to that freedom Flutter team was able to right the wrongs of old frameworks. For example by applying SOLID principles to the codebase.

For example, please compare Android TextView with Flutter Text. TextView class not only has to know how to draw text but also how to position it in the layout. It does other things as well, for example, it can act as a button.

Flutter Text widget only knows how to draw text on the screen. It leaves layout behavior to the parent widget it sits in. This means Flutter Text class will be much easier to master by the fresh developer than Android TextView. The code for the class will be smaller. It will have fewer tests and hopefully fewer bugs. The class will also allow much more creative use of it. The principle which talks about it is called the Single Responsibility Principle.

💙 Affordability

I think Flutter may cause something the Flutter Team didn’t expect initially. Training as a mobile developer is a cost in time and money. Flutter cuts this time so it is affordable for companies that couldn’t afford their mobile teams to have them now. It also enables developers to learn Flutter even if they have a full job doing something else.

💙 Fun

Flutter is fun. It is a feature which has a serious use. Answer me this: Would you prefer to learn something which is fun or something which isn’t? The fun comes from its features.

Q3: What do you say to all the beginners in Flutter?

Start it on Sunday evening. When there is nothing new to watch but you still want to have some fun before Monday. Create your pet project and play with it.

Join the community. It is amazing, open, and helpful. There is open Slack, Gitter, and of course the Flutter repository GitHub. Join the conversation here!

Q4: What are some resources that you recommend for those who are just starting out with Flutter? & are there good Flutter resources in your language?

First of all, there is official documentation. It is the best way to get things started. The API documentation is also very good. It is available in your SDK. Simply go to the source of the class you want to check and read the comments there.

Dart is designed to be learned easily. This is why it has just enough features to be usable in frontend development but no more to avoid learning concepts you probably won’t use.

You can learn Dart from its website and you don’t even have to install it just use DartPad which is an online application running in your browser.

If you prefer more structured learning there is plenty of Dart and Flutter tutorials, free and paid that can help you with it. Check for workshops in your area. There local Flutter communities like FlutterLDN or FlutterTokyo but also Google Developers Groups have an interest in Flutter. You may find that there are workshops nearby, some of them conducted by Google Developer Experts.

If you learn by trying the combo of Flutter Git repository, StackOverflow, Medium posts and Youtube will be your place to go. Check Youtube for Flutter. Make sure you subscribe to Flutter Boring Development Show.

And one more thing… Don’t learn alone! Find people on Slack, Gitter or the local community. It is much faster and more fun this way!

Are we there yet? Hang on, we’re landing on the last destination. Stay in the loop and keep those eyes wide open for the ultimate surprise! 🥁

About the writers

Beyza Sunay Güler is an archaeologist and a software developer. She loves making translations about Flutter and publishing them on Flutter Turkey. She’s a co-organizer at GDG & WTM Ankara and a WTM Ambassador. You can find her on Linkedin and Twitter. Feel free to contact her!

Nawal Alhamwi is an SDG advocate and a software wizard. Flutter to her is love at first sight! She is a co-organizer at GDG Jeddah and a leader at WTM Jeddah. LinkedIn & Twitter are her favorable virtual places and thus you can find her hanging out there!

Until then, happy Flutter-ing & stay hydrated 🥤💙

--

--