Mert Özen Further With Every Line

Blog

Mert Özen's blog posts on software development, backend, frontend, and DevOps.

Series
17 posts found #flutter
What Is Flutter? One Codebase, Its Own Rendering Engine and Where It Stands Against .NET MAUI, React Native and Native
Frontend PART 01

What Is Flutter? One Codebase, Its Own Rendering Engine and Where It Stands Against .NET MAUI, React Native and Native

Flutter is a UI toolkit that draws every pixel with its own engine (Impeller) instead of using the platform's native controls, and builds Android and iOS apps from one Dart codebase. We walk through its layers, show with real measurements how Dart is JIT-compiled in development and AOT-compiled for release, compare it with .NET MAUI, React Native and native development, and explain when not to choose Flutter.

15 Nov 2026 12 min 6
Installing Flutter and Your First Project: the SDK, Android Studio, Xcode, Emulators, flutter doctor and Hot Reload
Frontend PART 02

Installing Flutter and Your First Project: the SDK, Android Studio, Xcode, Emulators, flutter doctor and Hot Reload

This post covers installing Flutter on Windows for Android and on macOS for Android and iOS, reading the output of flutter doctor and creating bookstore_app with material_ui. We show with a real run that hot reload keeps state while hot restart resets it, map pubspec.yaml to csproj and package.json, and verify the app without an emulator using a widget test and a web build.

15 Nov 2026 14 min 5
Dart for C# Developers, Part 1: Types, Null Safety, Collections, Functions and Records
Frontend PART 03

Dart for C# Developers, Part 1: Types, Null Safety, Collections, Functions and Records

Dart's null safety, unlike C#'s, is sound: using a nullable value without a check is a compile error rather than a warning, and a non-nullable variable can never be null at run time. For readers who know C#, we explain var/final/const, how const produces canonical instances, collection if/for and null-aware elements, named parameters and records with real output, and write Bookstore's Book and Author models.

15 Nov 2026 14 min 4
Dart for C# Developers, Part 2: Classes, Primary Constructors, Mixins, Sealed Classes and Pattern Matching
Frontend PART 04

Dart for C# Developers, Part 2: Classes, Primary Constructors, Mixins, Sealed Classes and Pattern Matching

In Dart, a switch over a sealed hierarchy stops compiling when a new subtype is added and names the missing case, while value equality does not come without writing == and hashCode. We cover the kinds of constructors, how Dart 3.13 primary constructors differ from C# 12, class modifiers, mixins and extension types with real output, and write Bookstore's OrderStatus and Money types.

15 Nov 2026 14 min 5
Asynchronous Programming in Dart: Futures, async/await, Streams and Isolates
Frontend PART 05

Asynchronous Programming in Dart: Futures, async/await, Streams and Isolates

Dart runs on a single-threaded event loop: async/await does not move work to the background, heavy work freezes the UI, and real parallelism needs isolates with separate memory. We compare Future with C#'s Task and Stream with IAsyncEnumerable, measure that parsing a 20 MB JSON on the main isolate stops frames while Isolate.run does not, and show how the error of an un-awaited Future gets lost.

15 Nov 2026 13 min 5
Everything Is a Widget in Flutter: StatelessWidget, StatefulWidget, BuildContext and the Three Trees
Frontend PART 06

Everything Is a Widget in Flutter: StatelessWidget, StatefulWidget, BuildContext and the Three Trees

In Flutter a widget is not the thing on the screen but an immutable configuration: on a rebuild widgets are replaced while elements and render objects stay, and State lives in the element. Using BookCard and FavoriteButton, we show with real test output the State lifecycle with its Angular counterparts, how const cuts off rebuilds, the mounted check after an await, and how state slides to the wrong row without keys.

15 Nov 2026 12 min 6
Flutter Layout: Constraints Go Down, Sizes Go Up — Row, Column, Expanded, Stack and Overflow Errors
Frontend PART 07

Flutter Layout: Constraints Go Down, Sizes Go Up — Row, Column, Expanded, Stack and Overflow Errors

In Flutter a parent gives its child a constraint, the child picks its own size within it, and the parent sets the position; a Text in a Row overflows because it gets an unbounded width. We print constraints in a test and show with real output tight versus loose constraints, Expanded and Flexible, the three classic layout errors, and a book details screen with phone and tablet layouts built on LayoutBuilder.

15 Nov 2026 11 min 6
Lists and Grids in Flutter: ListView.builder, Slivers, Lazy Rendering and the Bookstore Catalog Screen
Frontend PART 08

Lists and Grids in Flutter: ListView.builder, Slivers, Lazy Rendering and the Bookstore Catalog Screen

The default ListView constructor also builds only the visible rows, but it creates every row widget up front; data-driven lists are built with ListView.builder or slivers, while shrinkWrap makes all thousand rows build. We build Bookstore's catalog screen with CustomScrollView, SliverAppBar and a list/grid switch, and show with real test output paged loading, pull-to-refresh, empty and error states, and cacheWidth cutting a cover's memory from 8 MB to 122 KB.

15 Nov 2026 11 min 5
Theming and Material 3 in Flutter: ThemeData, ColorScheme, Dark Mode, the material_ui Package and Cupertino
Frontend PART 09

Theming and Material 3 in Flutter: ThemeData, ColorScheme, Dark Mode, the material_ui Package and Cupertino

ColorScheme.fromSeed does not use the seed color as is; it generates separate light and dark palettes with readable contrast, and values with no slot in ColorScheme are added to the theme with ThemeExtension. With real test output we cover Bookstore's brown theme, dark mode, our own color tokens, the move to material_ui/cupertino_ui as the SDK's Material is deprecated in 3.50, adaptive widgets, and the Turkish locale with intl formatting.

15 Nov 2026 9 min 6
Forms and User Input in Flutter: Form, TextFormField, Validation, Focus and the Keyboard
Frontend PART 10

Forms and User Input in Flutter: Form, TextFormField, Validation, Focus and the Keyboard

In Flutter a form is held together by Form and a GlobalKey<FormState>; a field is valid when its validator returns null, and the server's ProblemDetails errors are written to the matching field with forceErrorText. Using the sign-in and delivery address forms, we show with real test output how to choose an AutovalidateMode, focus the first invalid field with FocusNode, where input formatters stop, how the body shrinks when the keyboard opens, and the Angular Reactive Forms counterparts.

15 Nov 2026 9 min 7
State Management in Flutter: From setState to ChangeNotifier, DI with provider and the Official Architecture Guide
Frontend PART 11

State Management in Flutter: From setState to ChangeNotifier, DI with provider and the Official Architecture Guide

Flutter's official architecture guide recommends View, ViewModel, Repository and Service layers for app state, unidirectional data flow, and dependency injection with provider. We build Bookstore's cart with a ChangeNotifier-based CartViewModel, Commands and a sealed Result, show with real test output how Selector cuts an unneeded rebuild on a price change, and compare the approach with Riverpod, Bloc and signals.

15 Nov 2026 10 min 6
Navigation in Flutter: Navigator, Declarative Routing with go_router, Deep Links and Auth Guards with redirect
Frontend PART 12

Navigation in Flutter: Navigator, Declarative Routing with go_router, Deep Links and Auth Guards with redirect

In go_router, context.go goes to a URL and rebuilds the stack from the URL's hierarchy, while context.push adds to the current stack and can return a result. With real test and Chromium output we add to Bookstore a bottom navigation where each tab keeps its own stack with StatefulShellRoute, the /catalog/books/:isbn deep link, a redirect auth guard that reruns by itself through refreshListenable, and PopScope to keep a form from being lost.

15 Nov 2026 10 min 6
Blog Map