Recently I’ve been reviewing the different types of keys that are often encountered in Flutter apps and I’ve come up with a short synopsis on the matter.

A Key’s Purpose

Keys control which widgets the framework matches up with other widgets when a widget rebuilds. By default, the framework matches widgets in the current and previous build according to their runtimeType and the order in which they appear. With keys, the framework requires that the two widgets have the same key as well as the same runtimeType.

Types of keys

The type of key you should use depends on what the distinguishing characteristic is for the…

Some time ago I was working on an accessibility feature for one of my Flutter apps. The goal was to make sure that the app looks good enough when used with large fonts. Thinking of a way to test the results on different screens and with different font sizes I came up with an idea to write screenshots tests for this purpose.

Introducing this technique was quite a good idea as it helped to kill two birds with one stone:

  • I was able to quickly verify that the app looks good on different screens with various font sizes without even…


Sometimes, and it’s not so uncommon, you may need to have a fast, stable, and consistent data source without a need to depend on network calls and real backend service’s data. This is where the approach with faked/stubbed data comes in handy.

So far I’ve needed to fake backends’ data for my apps in the following scenarios:

  • application UI testing;
  • productive client-side development with unstable/non-working/rapidly changing backend.


Let’s set this reasonable goal for a demo Flutter app: it should be able to fake HTTP(S) responses for the requests it makes, so it can be run and UI tested without a…

Lately, I’ve been revising the information I gathered on the SOLID Principles of Software Design a few years ago and I decided to come up with a synopsis for this topic in the form of this article. It contains just the theory on the point whereas the thorough code examples can be found in this repository.

First things first: a small dive in history

Universal principles such as coupling, cohesion, and separation of concerns, along with Object-Oriented Design (OOD) principles, give us some rather general guidance about how to design a software application.

In the early 2000s Robert C. Martin (“Uncle Bob”) came up with a list of…

Have you finished developing your first iOS app and ready to deploy it to the App Store?

Cool, how much time do you think you need to prepare it to be published? 1 hour? 1 day? It depends…

I’ve recently released my first iOS app and got a better understanding of how this process goes and what you need to be aware of.

If you want to take a look at the app itself, give it a try here.

Here are the things that may be helpful to you to get prepared for your app’s publishing.

1. App’s Website (Landing Page)

If you’ve developed just…

The image is from this article.

Visual Studio can perform code analysis of managed code with modern .NET Compiler Platform-based (“Roslyn”) code analyzers. These code analyzers inspect your C# code for style, quality and maintainability, design, and other issues.

I’m going to walk you through the options you can use based on “Roslyn” code analyzers and the configuration which works best for me at the moment.

‘.editorconfig’ file without additional packages

Both VS and VS for Mac understand when you place ‘.editorconfig’ file inside your project or solution and use the settings inside this file to enforce consistent coding styles.

‘.editorconfig’ settings take precedence over global Visual Studio text editor settings…

The choice of tools to be used in the software development process can literally make or break a project, so it’s vitally important to be aware of the options and choose the one that suits you most.

To be able to build and debug a Xamain iOS project you have to be on a macOS machine or at least have a connection to macOS. And this is the place where you have options…

The main question here is whether you’re satisfied with what Visual Studio for Mac offers to you. If you feel comfortable with it, then just stay on…


If you need to implement an app with more than one screen the odds are that one of the screens will represent its data in some form of a list. I’d like to show you how you can develop an “infinite” list of items with “pull-to-refresh” and “error-handling” on top of Flutter + Redux.


Make sure you feel comfortable with the terms described in the docs in redux.dart and flutter_redux repositories. I would also suggest that you take a look at my previous article.


An app that displays issues from the flutter GitHub repository sounds reasonable to me for the…


This article assumes that you’ve either recently got acquainted with how Redux can be utilized in a Flutter project or you’re on this way. If you don’t have enough confidence in Redux terms, I’d suggest reading the docs in redux.dart and flutter_redux repositories.


As soon I learned the basic samples of Flutter + Redux and started applying the concepts to a simple app I realized that such operation as “displaying a SnackBar notification” was not obvious to implement in Redux flow.

Execution of such one-off operations is relatively hard in Redux as you only get to observe “current state”, meaning…

Flutter is getting so popular today that I couldn’t help myself but try it.

Flutter is Google’s mobile app SDK for crafting high-quality native interfaces on iOS and Android in record time.

Having spent some time diving into this technology I should say it looks quite promising to me and I’m going to invest my time into it.

When I was reading through the Flutter’s documentation, I came across this Continuous Delivery using fastlane with Flutter article.

fastlane is a tool for iOS and Android developers to automate tedious tasks like generating screenshots, dealing with provisioning profiles, and releasing your…

Pavel Sulimau

Flutter and .NET (ASP.NET Core, Xamarin) developer.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store