flutter

Native interop with Kotlin/Java in Flutter

Native interop with Kotlin/Java in Flutter

Last year during the Fluttercon session about future of native interop I learned about this new tool called jnigen. It's became quite stable recently and I wanted to try it out again. Some background In the past I used Xamarin and back then it was quite natural to invoke platform APIs from C# through something called bindings. In other words classes like Activity, Context, NSUrl, UIView were accessible directly from C# without any additional glue code. It was also possible with a bit of work to expose most of the native libraries in a similar fashion. Sort of similar thing…
Read More
Effortless Multithreading in Flutter: Mastering Isolates Like a Pro

Effortless Multithreading in Flutter: Mastering Isolates Like a Pro

If you've ever felt your Flutter app slow down or freeze while performing a heavy task, you’re not alone. Flutter runs your app’s code in a single thread (main thread), which means any blocking operation can bring your UI to a grinding halt. That’s where isolates come in—Flutter's solution for handling multithreading without breaking a sweat.By the end of this post, you’ll: Understand what isolates are and why they’re awesome. Learn when to use isolates over other concurrency methods. Implement isolates in your Flutter project, step by step. The Basics: What Are Isolates? In Dart (and Flutter), isolates are independent…
Read More
Flutter vs React Native: Which Framework is Better for Mobile Apps?

Flutter vs React Native: Which Framework is Better for Mobile Apps?

Today, Flutter and React Native are currently the leading cross-platform app frameworks, and their popularity continues to grow. But one of the questions mobile developers often ask is what should I choose React Native or Flutter my name is Usman, and today we will dive into the topic of React Native VS Flutter. We will find out what makes each of them unique their advantages disadvantages similarities and differences also we will talk about career opportunities for developers working with these Frameworks. Most importantly, I will help you understand which framework is best for your project and why. Well let's…
Read More
Building a Robust Local Storage Service in Flutter

Building a Robust Local Storage Service in Flutter

Modern mobile applications often need to store various types of data locally - from user preferences to authentication tokens. While Flutter provides SharedPreferences for basic storage and FlutterSecureStorage for encrypted storage, managing these effectively in a large application requires careful architectural planning. In this article, we'll explore how to build a robust key-value storage system that separates concerns, provides type safety, and makes storage operations maintainable and secure. The Two-Layer Architecture Our implementation uses a two-layer architecture: KeyValueStorageBase: A low-level base class that directly interfaces with storage plugins KeyValueStorageService: A high-level service that provides typed, domain-specific storage operations Why Two…
Read More
Rethinking interfaces in Flutter projects

Rethinking interfaces in Flutter projects

Let's say we have this code: import 'package:flutter/foundation.dart'; abstract interface class NameRepository { Future<List<String>> getAll(); } class NameRepositoryImpl implements NameRepository { NameRepositoryImpl({required dynamic httpClient}) : _httpClient = httpClient; final dynamic _httpClient; @override Future<List<String>> getAll() async => _httpClient .get('v1/names') .body() .maybeAs<List<String>>() .orElse(() => []); } class NameController extends ChangeNotifier { NameController({required NameRepository repository}) : _repository = repository; final NameRepository _repository; bool _isLoading = false; bool get isLoading => _isLoading; List<String> _names = []; List<String> get names => _names; Future<void> init() async { _isLoading = true; notifyListeners(); _names = await _repository.getAll(); _isLoading = false; notifyListeners(); } } Enter fullscreen mode Exit fullscreen…
Read More
Revolutionizing Mobile Updates: How Rokomari Transformed Its App with Shorebird Code Push

Revolutionizing Mobile Updates: How Rokomari Transformed Its App with Shorebird Code Push

In the dynamic world of e-commerce, agility is paramount. At Rokomari, Bangladesh’s leading online bookstore, we constantly strive to enhance our mobile app to provide users with a seamless experience. However, the traditional app update process — requiring approvals from the App Store and Play Store — often delayed our ability to implement quick fixes or new features. This all changed when we discovered Shorebird Code Push, a tool that allows us to deploy updates instantly across both iOS and Android platforms. In this blog post, I’ll share our journey of integrating Shorebird into the Rokomari app, the challenges we…
Read More
Why is impossible to have a clean architecture inside a frontend project

Why is impossible to have a clean architecture inside a frontend project

The internet is full of videos, courses and articles teaching you to have something like "domain" folders in your frontend project, to create "entities" and everything that would make Uncle Bob fall apart. This little post shows why it's impossible to have a clean architecture in this kind of project. Clean Architecture Clean Architecture is a set of good practices to build a good architecture. It is based on the following principles: Independent of Frameworks Testable Independent of UI Independent of Database Independent of any external agency This post will not gonna dive into them. You can check the original…
Read More
FlutterFlow Templates to build Faster

FlutterFlow Templates to build Faster

FlutterFlow has become a popular tool for developers who want to build apps quickly and efficiently. Whether you're a seasoned developer or just getting started, this blog will introduce you to FlutterFlow, discuss different types of FlutterFlow templates, and explore how you can use CodeParrot AI to build UIs faster. What is FlutterFlow? FlutterFlow is a visual app builder that allows developers to create mobile and web applications without needing to write extensive code. It’s built on top of Google’s Flutter framework, which is widely used for creating cross-platform apps with a single codebase. With FlutterFlow, you can design, build,…
Read More
Building a calculator using Flet with python

Building a calculator using Flet with python

Introduction Hello there, Arsey here, a Python speaker, this is my first blog and I'll guide you to build this simple calculator app using Flet. I'm so excited to share this with you and here we go. In today’s digital era, creating cross-platform applications is a necessity. With a plethora of frameworks available, selecting the right one can be challenging. One such framework is Flet, a Python library that enables developers to effortlessly build web, desktop, and mobile apps using Flutter, but for Python. In this blog, we’ll explore how to create a basic calculator app using Flet, illustrating how…
Read More
Registro 002 - Organizando el Código: Clean Architecture en Acción para tu Proyecto Flutter

Registro 002 - Organizando el Código: Clean Architecture en Acción para tu Proyecto Flutter

Como hemos visto luego de planear ya podemos comenzar escribir nuestro codigo, y si bien no quisiera entrar en temas muy iniciales de flutter y demas, si podemos obviar algunas cosas que necesitamos para comenzar: Prerequisitos Comenzaremos con que es importante tener Flutter instalado y Android Studio, entre otros pasos que puedes revisar aquí, primeramente para crear nuestro proyecto: flutter create {nombre de directorio} --project-name {nombre de nuestro app} Enter fullscreen mode Exit fullscreen mode Luego agregaremos las librerias que utilizaremos en nuestro proyecto: flutter pub add supabase_flutter bloc flutter_bloc dartz get_it dio flutter_gen google_fonts error_stack cached_network_image equatable flutter_dotenv flutter_screenutil…
Read More
No widgets found. Go to Widget page and add the widget in Offcanvas Sidebar Widget Area.