Google search engine
Home Blog Page 307

Flutter 3.32 – What’s New in Flutter?

0

Flutter continues its rapid evolution, and the release of Flutter 3.32 brings another significant leap forward in performance, rendering capabilities, tooling, and platform-specific improvements. Whether you’re building for mobile, web, or desktop, Flutter 3.32 enhances the development experience while bringing more polish to production-ready apps.

In this blog post, we’ll break down everything that’s new and improved in Flutter 3.32—from core engine changes to ecosystem updates—so you can get the most out of this release.

Why Flutter 3.32 Matters

Flutter 3.32 represents a refinement-focused release. While it doesn’t introduce sweeping new features, it brings key advancements that contribute to:

  • Faster runtime and smoother animations
  • More robust Material 3 component support
  • Web and desktop maturity
  • Streamlined development and debugging workflows

Desktop support is no longer experimental—it’s now robust enough for shipping fully-featured desktop apps.

Key Highlights

  • Dart 3.3 support
  • Enhanced Impeller rendering engine
  • Improved DevTools and debugging
  • Updates to Material 3 support
  • Enhanced Web and Desktop performance
  • Tooling improvements and more

✅ Dart 3.3 — Smarter and More Powerful

Flutter 3.32 ships with Dart 3.3, which includes a range of performance and productivity enhancements:

  • Faster JIT and AOT compilation: Dart 3.3 improves the speed of compilation, especially during hot reload, saving valuable development time.
  • Improved type inference: Type inference is smarter, especially in complex expressions.
  • New language features: Minor syntax enhancements, better static analysis, and more efficient memory usage in certain cases.

With Dart continuing to mature, developers can expect a smoother coding experience and better runtime performance.

🧱 Impeller Rendering Engine Updates

Flutter’s next-gen renderer, Impeller, continues to improve and is now enabled by default for iOS (and optionally for Android):

  • Smoother animations
  • Reduced jank
  • Better performance in complex UIs

The goal of Impeller is to provide a consistent and high-fidelity rendering experience across platforms, and with Flutter 3.32, it’s getting closer to production readiness on Android as well.

Material 3 – More Components and Polish

Flutter 3.32 continues its push toward full Material 3 compliance with enhancements like:

  • Improved component theming
  • Updates to NavigationBar, NavigationDrawer, and BottomAppBar
  • Better support for MaterialState behaviors (hover, focus, pressed)

These updates allow developers to create modern, Google-design-compliant interfaces with less customization effort.

Web and Desktop Improvements

Web

Flutter 3.32 brings noticeable improvements for web development:

  • Reduced JavaScript bundle sizes: Smaller output means faster loading times.
  • Improved canvasKit performance
  • Better keyboard and mouse input handling

Desktop

On Windows, macOS, and Linux:

  • Improved text rendering
  • Better high-DPI display support
  • Enhanced accessibility features

Desktop support continues to mature, making Flutter a strong contender for cross-platform desktop development.

DevTools and Debugging

Developer tooling sees a boost in this release:

  • Faster widget inspector performance
  • Improved memory and CPU profiling
  • Simplified performance overlays

You’ll also notice enhancements to error messages, stack traces, and hot reload stability, making development smoother and more efficient.

Performance and Stability

Flutter 3.32 includes a wide range of under-the-hood optimizations:

  • Reduced memory usage
  • Lower frame build times
  • Improved list view scrolling performance

These changes mean apps run faster, feel more responsive, and consume fewer resources on devices.

Package Ecosystem Updates

Many popular packages have also been updated to align with Flutter 3.32, including:

  • google_fonts
  • flutter_localizations
  • camera
  • firebase_* plugins

Make sure to check compatibility and update dependencies accordingly.

Migration and Compatibility

Flutter 3.32 is mostly backward-compatible, but it’s always a good idea to:

  • Run flutter upgrade
  • Use flutter doctor to check your environment
  • Review deprecations in the official changelog

No major breaking changes are expected for most apps, but testing is recommended.

The Road Ahead

The Flutter team continues to focus on:

  • Completing Material 3 support
  • Full rollout of Impeller on Android
  • Improving startup times
  • More seamless DevTools integration

Flutter’s momentum remains strong as it evolves into a true “write once, run anywhere” framework for modern apps.

Conclusion

Flutter 3.32 is a solid, incremental release that brings stability, performance, and tooling improvements. Whether you’re building beautiful mobile apps, interactive web experiences, or robust desktop applications, this update provides the tools you need to build better, faster, and more consistently.

From Our Parent Company Aeologic

Aeologic Technologies is a leading AI-driven digital transformation company in India, helping businesses unlock growth with AI automation, IoT solutions, and custom web & mobile app development. We also specialize in AIDC solutions and technical manpower augmentation, offering end-to-end support from strategy and design to deployment and optimization.

Trusted across industries like manufacturing, healthcare, logistics, BFSI, and smart cities, Aeologic combines innovation with deep industry expertise to deliver future-ready solutions.

Feel free to connect with us:
And read more articles from FlutterDevs.com.

FlutterDevs team of Flutter developers to build high-quality and functionally-rich apps. Hire Flutterflow developer for your cross-platform Flutter mobile app project on an hourly or full-time basis as per your requirement! For any flutter-related queries, you can connect with us on Facebook, GitHub, Twitter, and LinkedIn.

We welcome feedback and hope that you share what you’re working on using #FlutterDevs. We truly enjoy seeing how you use Flutter to build beautiful, interactive web experiences.

Related: SMS Using Twilio In Flutter

Related: Using SharedPreferences in Flutter

Need expert help building your Flutter app? Talk to FlutterExperts for architecture, development, and consulting support.

Flutter Code Obfuscation: Improving App Security

0

Software developers must protect their code against any harmful action once their application is released into the world. There are genuine risks of reverse engineering, manipulation, and exploitation that could seriously harm your work.

This blog will explore the Flutter Code Obfuscation: Improving App Security. We will examine how code obfuscation can help you protect your code and stop it from being abused in your Flutter applications.

If you’re looking for the best Flutter app development company for your mobile application then feel free to contact us at — support@flutterdevs.com


Table Of Contents:

What is reverse engineering?

What is code obfuscation?

Implement Code

Reading the Obfuscating stack trace

Conclusion



What is reverse engineering?

The process of disassembling hardware or software to gain a comprehensive grasp of its architecture, design, and operation is known as reverse engineering.
Reverse engineering can be applied to software to find bugs, retrieve private data, or even replicate the program itself. Software for reverse engineering makes private data accessible, which could be exploited maliciously.

What is code obfuscation?

In software development, code obfuscation is a common technique used to make source code harder to read and comprehend.
This method changes the code into a version that is comparable but much harder to understand. Code obfuscation’s primary objective is to stop or significantly hinder reverse engineering.

Implement Code:

Run the Flutter build command in release mode with the –obfuscate and –split-debug-info arguments to add code obfuscation to your Flutter application.
The directory to which Flutter should output debug files is specified by the –split-debug-info option. This command will produce a symbol mapping in the context of obfuscation. Here’s an illustration of how to make use of these choices.

flutter build apk --obfuscate --split-debug-info=/path/to/your/project/directory

Save the generated symbols file after the obfuscation procedure is finished. If you want to later de-obfuscate a stack trace, you will need this file.

Reading the Obfuscating stack trace:

Use the following procedures to make a stack trace produced by an obfuscated application human-readable in order to debug it:

  • Locate the file with the matching symbols. For instance, app.android-arm64.symbols would be required in the event of a crash from an Android arm64 device.
  • Flutter symbolizes both the symbols file and the stack trace, which is saved in a file. For instance:
flutter symbolize -i <stack trace file> -d /out/android/app.android-arm64.symbols

Run flutter symbolize -h to learn more about the symbolize command.

Conclusion:

In the article, I have explained the Flutter Code Obfuscation: Improving App Security basic structure in Flutter; you can modify this code according to your choice. This was a small introduction to the  Flutter Code Obfuscation: Improving App Security, On User Interaction from my side, and it’s working using Flutter.

I hope this blog will provide you with sufficient information on trying the Flutter Code Obfuscation: Improving App Security in your projects. It is strongly advised to obfuscate your code before launching your application. By making it considerably more difficult for malevolent actors to reverse-engineer your application bundle, this crucial step increases the security of your app. This gives your application and code an extra degree of security. So please try it.

❤ ❤ Thanks for reading this article ❤❤

If I got something wrong? Let me know in the comments. I would love to improve.

Clap 👏 If this article helps you.


From Our Parent Company Aeologic

Aeologic Technologies is a leading AI-driven digital transformation company in India, helping businesses unlock growth with AI automation, IoT solutions, and custom web & mobile app development. We also specialize in AIDC solutions and technical manpower augmentation, offering end-to-end support from strategy and design to deployment and optimization.

Trusted across industries like manufacturing, healthcare, logistics, BFSI, and smart cities, Aeologic combines innovation with deep industry expertise to deliver future-ready solutions.

Feel free to connect with us:
And read more articles from FlutterDevs.com.

FlutterDevs team of Flutter developers to build high-quality and functionally-rich apps. Hire Flutter developer for your cross-platform Flutter mobile app project on an hourly or full-time basis as per your requirement! For any flutter-related queries, you can connect with us on Facebook, GitHub, Twitter, and LinkedIn.

We welcome feedback and hope that you share what you’re working on using #FlutterDevs. We truly enjoy seeing how you use Flutter to build beautiful, interactive web experiences.

Related: Flutter AI Agents: Building Autonomous Workflows in Mobile Apps (With Code Samples)

Related: Improve code style using lint rules in Flutter

Related: Pin Code Fields In Flutter

Need expert help building your Flutter app? Talk to FlutterExperts for architecture, development, and consulting support.


How Online Casino Pending Withdrawal Periods Work

When players request a payout from an online casino, the funds typically enter a pending state before reaching their personal account. This holding period serves multiple purposes, including security verification and compliance with regulatory requirements. The length of this waiting phase varies between platforms, often ranging from 24 hours to several days, depending on the operator’s policies and the chosen withdrawal method.

During the pending period, the casino performs several essential checks to prevent fraudulent activities and ensure all wagering requirements have been met. Identity verification, anti-money laundering protocols, and confirmation of payment method ownership are common procedures occurring behind the scenes. Players should note that while their funds appear unavailable during this phase, the casino has not yet released the money to external processors.

The risk management aspect of pending withdrawals becomes particularly relevant in cases of disputed transactions or potential bonus abuse. By maintaining a holding period, casinos can investigate irregular patterns or verify account details before finalizing any payout. For additional context, read more about payouts here can be considered alongside this overview. This protective measure helps both the operator and legitimate players maintain a secure gaming environment. For additional insights into verification processes, you can visit .

Players can take certain precautions to navigate withdrawal periods more effectively. Maintaining up-to-date documentation for identity verification, understanding the specific requirements of different payment methods, and choosing reputable casinos with transparent policies can all contribute to smoother transactions. Some platforms offer expedited withdrawal options for verified players, though these typically involve additional fees or loyalty status requirements.

The evolution of payment technologies has gradually reduced standard withdrawal times across the industry. While complete elimination of pending periods remains unlikely due to regulatory obligations, many operators now implement more efficient verification systems. Players should balance their desire for rapid payouts with the understanding that appropriate waiting periods serve as necessary safeguards in the digital financial ecosystem.

Les Stratégies de Jeu dans les Casinos Modernes

Les locaux modernes, qu’ils soient réels ou en numérique, séduisent des millions de joueurs chaque année. Pour maximiser leurs chances de remporter, les parieurs choisissent diverses tactiques. Une recherche de 2023 de l’Université de Las Vegas a révélé que les parieurs qui utilisent des techniques de manipulation de bankroll s’en sortent mieux à étendu horizon.

Un cas significatif est l’exemple de Phil Ivey, un participant de poker spécialiste réputé pour ses talents hors du commun. Ivey a gagné plusieurs centaines de monnaies dans des concours de poker et est fréquemment cité comme un modèle pour les parieurs aspirants. Vous êtes en mesure de en apprendre plus sur ses accomplissements sur son profil Twitter.

Les activités de casino, comme le blackjack et la roulette, offrent des opportunités singulières pour mettre en œuvre des méthodes. Par illustration, la méthode de base au blackjack peut abaisser l’avantage de la maison à moins de 1%. De plus, les approches de jeu, tels que le système Martingale, sont répandus parmi les parieurs de roulette, bien qu’ils impliquent des dangers importants. Pour des informations complètes sur les approches de pari, référez-vous à cet écrit sur The New York Times.

Les maisons en numérique, quant à elles, proposent des avantages intéressants qui peuvent être employés pour accroître le montant de pari. Les joueurs doivent néanmoins étudier soigneusement les conditions des récompenses, car des exigences de jeu peuvent s’appliquer. Une plateforme qui se distingue dans ce champ est Casino en ligne, qui fournit des avantages habituelles et des activités variés.

Enfin, il est fondamental de garder à l’esprit que le divertissement doit subsister un loisir. Les joueurs doivent définir des restrictions de temps et d’argent liquide pour éviter les difficultés de miser. En suivant ces suggestions et en choisissant des stratégies judicieuses, les joueurs peuvent perfectionner leur séjour dans les établissements tout en réduisant les risques.

Süni intellektin kazino əməliyyatları ilə təsiri

Süni intellekt (AI) əməliyyat effektivliyini artıraraq və müştəri qarşılaşmalarının yaxşılaşdırılması ilə kazino yatağını dəyişdirir. 2023-cü ildə Deloitte’nin bir hesabatı, AI texnologiyalarının məlumat analitik və maşın hazırlığını effektiv şəkildə həyata keçirən kazinolar üçün gəlirləri 30% -ə qədər artıra biləcəyini vurğuladı.

Bu sahədə bir görkəmli bir rəqəm, AI-nin kazino proseslərinə yerləşdirilməsinin tərəfdarı olan MGM kurortlarının baş direktoru olan Bill Hornbuckledir. Onun səyləri haqqında daha çox məlumat əldə edə bilərsiniz.

Son illərdə kazinolar, xüsusi tətbiqlər və müştəri xidməti mexanizasiyası da daxil olmaqla müxtəlif tətbiqlər üçün AI istifadə etməyə başladılar. İllüstrasiya üçün, AI-Leiven ChatBots, sorğuları / 7 , sürətli dəstək və istifadəçi xoşbəxtliyini təmin edən oyunçulara kömək edə bilər. Oyun sənayesində AI-də daha çox anlayış üçün, New York Times .

Bundan əlavə, AI sistemləri, təkliflərin və mükafatların təmin edilməsinə zəmanət verən promosyon və mükafatları uyğunlaşdıran oyunçu davranışını araşdırır. Bu dərzi bu səviyyədə yalnız oyunçu iştirakını artırmır, həm də sədaqət yetişdirir. AI texnologiyalarını pin-up Bakı üçün kazino.

AI-nin faydaları əhəmiyyətli olsa da, kazinolar da məlumatların məxfiliyinə dair narahatlıq və sağlam kiberlik protokollarına olan ehtiyaclar kimi potensial problemlərlə üzləşməlidirlər. AI irəliləməyə davam etdiyi kimi, kazinoların məlumatlı olması və sektorda rəqabət kənarını qorumaq üçün bu dəyişikliklərə uyğunlaşmaq çox vacibdir.

Explore Design Patterns in Flutter

0

Consider creating a virtual zoo. You start by creating a simple Animal class. However, you also need to include other species, such as birds, elephants, and lions. Although you could create a different class for every animal, you find that you’re repeatedly writing the same code. This method is not only inefficient, but it also makes your code more difficult to manage and adapt.

The design patterns enter the scene at this point. Design patterns are tried-and-true solutions to typical software design problems. They offer a framework for organising your classes to make them easier to comprehend, more reusable, and maintainable.

This blog will Explore Design Patterns in Flutter. We will see how to execute a demo program in your Flutter applications.

If you’re looking for the best Flutter app development company for your mobile application then feel free to contact us at — support@flutterdevs.com


Table Of Contents:

Design Patterns in Flutter

Design Patterns: What Is Their History?

What Makes Design Patterns Important?

Design Pattern Types

Conclusion



Design Patterns in Flutter:

Design patterns can be applied to Flutter to solve common issues in app development. To make sure that a class has only one instance, for instance, use the Singleton pattern; to notify widgets of changes, use the Observer pattern; and to effectively manage the state of an application, use a variety of state management patterns.

Design Patterns: What Is Their History?

The discipline of architecture is where the idea of design patterns first emerged. In 1977, an architect named Christopher Alexander wrote a book titled A Pattern Language that suggested utilising patterns to identify effective design practices in the disciplines of urban planning and building architecture. This concept was then applied to programming approaches by software developers Ward Cunningham and Kent Beck.

With the 1994 publication of Design Patterns: Elements of Reusable Object-Oriented Software, the idea of design patterns gained traction. This book, authored by the Gang of Four (GoF)—Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides—introduced 23 design patterns and is regarded as a seminal work in the field of software engineering. Design patterns are becoming an essential component of software development. Design pattern knowledge is currently considered a crucial ability for software developers, and many more patterns have been identified and published.

What Makes Design Patterns Important?

The software developer can profit from design patterns in many ways, including:-

  1. Reusable Solutions: Design patterns offer reliable and tested solutions for typical issues in software design. They can be utilised to lessen the difficulties that developers commonly encounter in their day-to-day programming tasks and are regarded as industry best practices.
  2. Communication: Design patterns facilitate communication among developers by offering a standardised language and being tailored to the issue they address. For instance, developers may easily identify the type of solution they are discussing when they refer to a “Singleton” or “Factory” pattern.
  3. Efficiency: By providing tried-and-true solutions, design patterns can aid in accelerating development. This can enhance the readability and organisation of the code and assist avoid little errors that could cause bigger issues.
  4. Code Maintainability: Code that follows design patterns is usually easier to read and maintain since it is more structured and comprehensible. Additionally, they promote reuse and can aid in avoiding anti-patterns or code smells.
  5. Learning OO Principles: Encapsulation, inheritance, and polymorphism are just a few of the object-oriented design principles that developers may better comprehend and implement with the help of design patterns.

Design Pattern Types:

The three main categories of design patterns are structural, behavioural, and creational.

  • Object creation techniques are covered by creational patterns, which aim to build things in a situation-appropriate way.
  • The way things interact with one another, or the composition of objects, is related to structural patterns.
  • To make sure that entities are communicating correctly, behavioural patterns are employed.
Creational Structural Behavioral
Singleton Adapter Chain of Responsibility
Factory Method Bridge Command
Abstract Factory Composite Interpreter
Builder Decorator Iterator
Prototype Facade Mediator
  Flyweight Memento
  Proxy Observer
    State
    Strategy
    Template Method
    Visitor

Conclusion:

In the article, I have explained the  Design System with Atomic Design basic structure in a flutter; you can modify this code according to your choice. This was a small introduction to the  Design System with Atomic Design in Flutter, On User Interaction from my side, and it’s working using Flutter.

I hope this blog will provide you with sufficient information on trying the Design System with Atomic Design in Flutter in your projects. When used with Flutter, the atomic design pattern and design systems offer a streamlined and effective method for creating modular, scalable, and testable user interfaces. The interface can be made consistent, less redundant, and easier to design, and reusable parts: atoms, molecules, creatures, templates, and pages.

We can create Flutter apps that are both technically sound and aesthetically pleasing by fusing the strength of design systems with atomic design principles. Using this method will surely improve your development workflow, making your codebase more structured, reusable, and future-proof, regardless of how big or small your project is. So please try it.

❤ ❤ Thanks for reading this article ❤❤

If I got something wrong? Let me know in the comments. I would love to improve.

Clap 👏 If this article helps you.


From Our Parent Company Aeologic

Aeologic Technologies is a leading AI-driven digital transformation company in India, helping businesses unlock growth with AI automation, IoT solutions, and custom web & mobile app development. We also specialize in AIDC solutions and technical manpower augmentation, offering end-to-end support from strategy and design to deployment and optimization.

Trusted across industries like manufacturing, healthcare, logistics, BFSI, and smart cities, Aeologic combines innovation with deep industry expertise to deliver future-ready solutions.

Feel free to connect with us:
And read more articles from FlutterDevs.com.

FlutterDevs team of Flutter developers to build high-quality and functionally-rich apps. Hire Flutter developer for your cross-platform Flutter mobile app project on an hourly or full-time basis as per your requirement! For any flutter-related queries, you can connect with us on Facebook, GitHub, Twitter, and LinkedIn.

We welcome feedback and hope that you share what you’re working on using #FlutterDevs. We truly enjoy seeing how you use Flutter to build beautiful, interactive web experiences.

Need expert help building your Flutter app? Talk to FlutterExperts for architecture, development, and consulting support.


Casino əyləncəsinin təkamülü: ənənəvidən rəqəmsal

Qumar sahəsi son onilliklər ərzində klassik kərpic və havan müəssisələrindən canlı onlayn saytlara çevrilməkdə olan bir neçə onillikdə əhəmiyyətli bir dəyişiklik yolu keçdi. Bu dəyişiklik rəqəmsal tərəqqi və inkişaf edən müştəri seçimləri ilə tətbiq edilmişdir. 2023-cü ildə beynəlxalq internet bahis sənayesi, bir bazar analizi şirkəti tərəfindən bir araşdırmaya uyğun olaraq, 03 milyard, vurduğu proqnozları, e.ə.

Bu çevrilmədə olan bir şey bu çevrilmə, texnologiya və qumarın yaxınlaşmasına maraq göstərən Bakirə qrupunun qurucusu Richard Bransondur. Onun perspektivlərini twitter profili -də izləyə bilərsiniz. Bransonun təşəbbüsləri, 2021-ci ildə bakirə oyunlarının və interaktiv rabitənin bənzərsiz bir qarışığı təqdim edən, Bakirə oyunlarının debütündə qeyd olunduğu kimi, qumar oyunları ilə birləşərək yüksələn tendensiyanı nümayiş etdirir.

2022-ci ildə Las Veqasdakı Iconic Bellagio, ən müasir virtual VR bahis hadisəsini, oyunçuların virtual oyun qəbulu ilə məşğul olmasına icazə verən bir virtual VR bahis hadisəsini təqdim etdi. Bu yenilik yalnız oyunçu nişanını artırmır, eyni zamanda interaktiv əyləncəni arzulayan daha yeni bir qrup cəlb edir. Oyun evlərində yeniliyin təsiri barədə daha çox məlumat üçün, New York Times .

Sahə uyğunlaşdıqca, portativ bahis, portativ qurğular vasitəsilə yaradılan onlayn bahis gəlirlərinin 50% -dən çoxu olan lider gücə çevrildi. İştirakçılar artıq hər hansı bir yerdə, inkişaf etmiş və rahatlıqla nəticələnən hər yerdə üstünlük verdikləri fəaliyyətlərindən ləzzət ala bilmirlər. Bu tendensiyanı пинко казино официальный сайт -də əhatə edən bir xidməti araşdırın.

Lakin, İnternet oyun evlərinin yüksəlməsi ilə oyunçular hesabatlı qumar üsulları barədə sayıq qalmalıdırlar. Sertifikatlı provayderləri seçmək və etibarlı və xoş qumar hadisəsini təmin etmək üçün şəxsi hədləri təyin etmək çox vacibdir. Kazinoların təxribatının irəliləməsi yalnız irəliləməyə aid deyil; Ayrıca oyunçular üçün məsuliyyət və cazibədar bir mühitin yaradılması ilə bağlıdır.

Multi-Item Picker Componentin FlutterFlow

0

FlutterFlow is a powerful visual app builder that allows you to create fully functional mobile and web applications without writing extensive code. While it provides many built-in components, sometimes you need a more tailored solution. In this blog, we’ll walk you through the process of creating a custom multi-item picker widget in FlutterFlow.

Why a Multi-Item Picker?

A multi-item picker is essential when users need to select more than one option from a list. Common use cases include selecting interests, tags, categories, or filtering items in e-commerce and survey apps.

FlutterFlow doesn’t have a built-in multi-select component, but with the help of custom widgets, you can easily build one that integrates seamlessly into your app.

Step 1: Set Up Your Custom Widget in FlutterFlow

To start, create a new custom widget in FlutterFlow:

  1. Go to the Custom Code section in the left panel.
  2. Under Widgets, click + Add.
  3. Name it something like MultiItemPickerComponent.
  4. Define the parameters:
  • items (List, required): The list of all items to display.
  • initialSelectedItems (List, optional): The list of items that should appear pre-selected.
  • title (String, optional): Title of the picker UI.
  • searchHintText (String, optional): Placeholder for the search input field.
  • width, height, maxHeight (optional): For layout customization.

Step 2: Writing the Widget Code

Here’s a simplified version of a FlutterFlow-compliant widget (no function callbacks):

// Automatic FlutterFlow imports
import '/flutter_flow/flutter_flow_theme.dart';
import '/flutter_flow/flutter_flow_util.dart';
import '/custom_code/widgets/index.dart'; 
import '/flutter_flow/custom_functions.dart'; 
import 'package:flutter/material.dart';
// Begin custom widget code
// DO NOT REMOVE OR MODIFY THE CODE ABOVE!

class MultiItemPickerComponent extends StatefulWidget {
  const MultiItemPickerComponent({
    Key? key,
    this.width,
    this.height,
    required this.items,
    this.initialSelectedItems,
    this.searchHintText = 'Search items...',
    this.title = 'Select Items',
    // this.buttonText = 'Done',
    this.maxHeight,
  }) : super(key: key);

  final double? width;
  final double? height;
  final double? maxHeight;
  final List<String> items;
  final List<String>? initialSelectedItems;
  final String searchHintText;
  final String title;
  // final String buttonText;

  @override
  _MultiItemPickerComponentState createState() =>
      _MultiItemPickerComponentState();
}

class _MultiItemPickerComponentState extends State<MultiItemPickerComponent> {
  final TextEditingController _searchController = TextEditingController();
  List<String> _filteredItems = [];
  List<String> _selectedItems = [];

  @override
  void initState() {
    super.initState();
    _filteredItems = widget.items;
    _selectedItems = widget.initialSelectedItems ?? [];
    _searchController.addListener(_filterItems);
  }

  @override
  void dispose() {
    _searchController.removeListener(_filterItems);
    _searchController.dispose();
    super.dispose();
  }

  void _filterItems() {
    final query = _searchController.text.toLowerCase();
    setState(() {
      _filteredItems = widget.items
          .where((item) => item.toLowerCase().contains(query))
          .toList();
    });
  }

  void _toggleItemSelection(String item) {
    setState(() {
      if (_selectedItems.contains(item)) {
        _selectedItems.remove(item);
      } else {
        _selectedItems.add(item);
      }
    });
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      width: widget.width ?? double.infinity,
      height: widget.height,
      constraints: BoxConstraints(
        maxHeight: widget.maxHeight ?? 400,
      ),
      decoration: BoxDecoration(
        color: Theme.of(context).cardColor,
        borderRadius: BorderRadius.circular(8),
        boxShadow: [
          BoxShadow(
            blurRadius: 4,
            color: Color(0x33000000),
            offset: Offset(0, 2),
          ),
        ],
      ),
      child: Padding(
        padding: EdgeInsets.all(16),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          crossAxisAlignment: CrossAxisAlignment.start,
          children: [
            Row(
              mainAxisAlignment: MainAxisAlignment.spaceBetween,
              children: [
                Text(widget.title,
                    style: Theme.of(context).textTheme.titleMedium),
                Text('${_selectedItems.length} selected',
                    style: Theme.of(context).textTheme.bodySmall),
              ],
            ),
            SizedBox(height: 12),
            TextFormField(
              controller: _searchController,
              decoration: InputDecoration(
                hintText: widget.searchHintText,
                border: OutlineInputBorder(
                  borderRadius: BorderRadius.circular(8),
                ),
                prefixIcon: Icon(Icons.search),
                suffixIcon: _searchController.text.isNotEmpty
                    ? InkWell(
                        onTap: () {
                          _searchController.clear();
                        },
                        child: Icon(Icons.clear),
                      )
                    : null,
              ),
            ),
            SizedBox(height: 12),
            Text('Selected Items:',
                style: TextStyle(fontWeight: FontWeight.bold)),
            Wrap(
              spacing: 8,
              runSpacing: 8,
              children: _selectedItems.map((item) {
                return Chip(
                  label: Text(item),
                  onDeleted: () => _toggleItemSelection(item),
                );
              }).toList(),
            ),
            SizedBox(height: 12),
            Text('Available Items:',
                style: TextStyle(fontWeight: FontWeight.bold)),
            Expanded(
              child: ListView.builder(
                itemCount: _filteredItems.length,
                itemBuilder: (context, index) {
                  final item = _filteredItems[index];
                  final isSelected = _selectedItems.contains(item);
                  return ListTile(
                    title: Text(item),
                    trailing: Icon(
                      isSelected
                          ? Icons.check_box
                          : Icons.check_box_outline_blank,
                      color: isSelected
                          ? Theme.of(context).colorScheme.primary
                          : null,
                    ),
                    onTap: () => _toggleItemSelection(item),
                  );
                },
              ),
            ),
            SizedBox(height: 16),
          ],
        ),
      ),
    );
  }
}

Step 3: Use the Widget in Your UI

Now that your widget is added:

  1. Drag the MultiItemPickerComponent widget from the Custom Widgets tab.
  2. Pass the items list and optionally initialSelectedItems, title, or searchHintText.
  3. To retrieve selected items, bind the selected items to a local state or AppState variable using Actions in FlutterFlow.

For example:

  • On done/tap, update an AppState list variable with selected items using a custom action or logic.

Conclusion

With this custom widget, you now have a robust multi-item picker that works beautifully within the FlutterFlow environment. This approach offers flexibility, search capability, and a user-friendly interface.

This pattern — building custom widgets without callback parameters — can be reused for other advanced components. Happy building!

From Our Parent Company Aeologic

Aeologic Technologies is a leading AI-driven digital transformation company in India, helping businesses unlock growth with AI automation, IoT solutions, and custom web & mobile app development. We also specialize in AIDC solutions and technical manpower augmentation, offering end-to-end support from strategy and design to deployment and optimization.

Trusted across industries like manufacturing, healthcare, logistics, BFSI, and smart cities, Aeologic combines innovation with deep industry expertise to deliver future-ready solutions.

Feel free to connect with us:
And read more articles from FlutterDevs.com.

FlutterDevs team of Flutter developers to build high-quality and functionally-rich apps. Hire Flutterflow developer for your cross-platform Flutter mobile app project on an hourly or full-time basis as per your requirement! For any flutter-related queries, you can connect with us on Facebook, GitHub, Twitter, and LinkedIn.

We welcome feedback and hope that you share what you’re working on using #FlutterDevs. We truly enjoy seeing how you use Flutter to build beautiful, interactive web experiences.

Need expert help building your Flutter app? Talk to FlutterExperts for architecture, development, and consulting support.

Streamline your Flutter models with Freezed

Dart is fantastic, but let’s face it: defining a “model” might be difficult at times. Consider this:

  1. You must define properties and constructors.
  2. Override operator ==, hashCode, and toString.
  3. To clone the object, use the copyWith method.
  4. Take care of the (de)serialization.

That boilerplate code is a lot! Hundreds of lines can result from all of this, which raises the possibility of errors and makes your code more difficult to comprehend.

In this article, we will be explore Streamline your Flutter models with Freezed. We will learn how to execute a demo program. We will show you how to use freezed in Flutter with the freezed package in your Flutter applications.

For Freezed:

freezed | Dart package
Code generation for immutable classes that have a simple syntax/API without compromising on the features.pub.dev

If you’re looking for the best Flutter app development company for your mobile application then feel free to contact us at — support@flutterdevs.com.


Table Of Contents:

Introduction

Implementation

Code Implement

Conclusion



Introduction:

Freezed is a potent Dart code creation tool that:

  1. creates constructors, equality checks, toString, and other things automatically.
  2. simplifies null safety and immutability for your models.
  3. simplifies (de)serialization.

Freezed handles the rest, allowing you to concentrate on specifying the structure of your model.

Implementation:

Step 1: Add the dependencies

Include build_runner and bdd_widget_test in your pubspec.yaml file’s dev_dependencies section:

dependencies:
  freezed_annotation: latest version
  json_annotation: latest version

dev_dependencies:
  build_runner: latest version
  freezed: latest version
  json_serializable: latest version

Step 2: Run flutter packages get in the root directory of your app

flutter pub get

How to implement code in your file :

You need to implement it in your code respectively:

Converting a Post Model to Freezed

As an example, let’s look at a post model. The conventional definition is as follows:

class Post {
final int id;
final String title;
final String body;

Post({required this.id, required this.title, required this.body});

factory Post.fromJson(Map<String, dynamic> json) {
return Post(
id: json['id'],
title: json['title'],
body: json['body'],
);
}
}

Let’s use Freezed to rewrite it now. Make a new post.dart file and specify your model:

import ‘package:freezed_annotation/freezed_annotation.dart’;

part ‘post.freezed.dart’;
part ‘post.g.dart’;

@freezed
class Post with _$Post {
const factory Post({
required int id,
required String title,
required String body,
}) = _Post;

factory Post.fromJson(Map<String, dynamic> json) => _$PostFromJson(json);
}

This is what’s taking place:

  1. It instructs the package to create the boilerplate for the Post class using the annotation @freezed.
  2. The const factory is used to define the constructor.
  3. A fromJson method is created to handle serialisation.

Run the code generator:

dart run build_runner build

The following files will be produced as a result:

  • post.freezed.dart: The created constructors, equality, copyWith, and other utilities are contained.
  • post.g.dart: Serialisation logic is contained.

Using the Generated Code

You can use the Post model as follows, as Freezed has already done all the hard work for you:

Create a Post Instance:

final post = Post(id: 1, title: 'Hello World', body: 'This is the body of the post.');

Clone an Object with Modifications:

final updatedPost = post.copyWith(title: 'Updated Title');

Serialize to JSON:

final json = post.toJson();

Deserialize from JSON:

final newPost = Post.fromJson({
  'id': 2,
  'title': 'New Post',
  'body': 'This is a new post body.',
});

Conclusion:

In the article, I have explained how the Streamline your Flutter models with Freezed; you can modify this code according to your choice. This was a small introduction to Streamline your Flutter models with Freezed User Interaction from my side, and it’s working using Flutter.

I hope this blog will provide you with sufficient information on trying the Streamline your Flutter models with Freezed in your Flutter projects. We will show you what the Introduction is. The agony of defining models in Dart is eliminated by Freezed. It takes care of the boilerplate so you can concentrate on creating amazing apps rather than being distracted by repeating code. So please try it.

❤ ❤ Thanks for reading this article ❤❤

If I need to correct something? Let me know in the comments. I would love to improve.

Clap 👏 If this article helps you.


From Our Parent Company Aeologic

Aeologic Technologies is a leading AI-driven digital transformation company in India, helping businesses unlock growth with AI automation, IoT solutions, and custom web & mobile app development. We also specialize in AIDC solutions and technical manpower augmentation, offering end-to-end support from strategy and design to deployment and optimization.

Trusted across industries like manufacturing, healthcare, logistics, BFSI, and smart cities, Aeologic combines innovation with deep industry expertise to deliver future-ready solutions.

Feel free to connect with us:
And read more articles from FlutterDevs.com.

FlutterDevs team of Flutter developers to build high-quality and functionally-rich apps. Hire Flutter developer for your cross-platform Flutter mobile app project on an hourly or full-time basis as per your requirement! For any flutter-related queries, you can connect with us on Facebook, GitHub, Twitter, and LinkedIn.

We welcome feedback and hope that you share what you’re working on using #FlutterDevs. We truly enjoy seeing how you use Flutter to build beautiful, interactive web experiences.

Related: Streamlining Payments In Flutter

Related: Exploring StreamBuilder In Flutter

Need expert help building your Flutter app? Talk to FlutterExperts for architecture, development, and consulting support.


The Evolution of Casino Loyalty Programs

Casino loyalty programs have transformed significantly over the years, evolving from simple punch cards to sophisticated digital systems that reward players for their patronage. These programs are designed to enhance customer retention and increase player engagement, offering various incentives such as free play, dining discounts, and exclusive event access.

One notable example is the Caesars Rewards program, which has been recognized for its comprehensive approach to customer loyalty. With over 60 million members, it allows players to earn points not only for gaming but also for hotel stays, dining, and entertainment. You can find more about their offerings on their official website.

In 2023, the Venetian Resort in Las Vegas revamped its loyalty program to include tiered benefits, allowing players to unlock higher rewards as they progress. This strategy not only incentivizes more frequent visits but also enhances the overall gaming experience. For further insights into loyalty programs in the casino industry, check out this article on The New York Times.

Moreover, technology plays a crucial role in the evolution of these programs. Mobile apps now allow players to track their points in real-time, receive personalized offers, and even redeem rewards seamlessly. This convenience is particularly appealing to younger audiences who prefer digital interactions. Explore a platform that integrates these features at pinco casino.

As the competition among casinos intensifies, loyalty programs are becoming more innovative. Some casinos are experimenting with gamification elements, where players can complete challenges to earn additional rewards. This not only keeps players engaged but also fosters a sense of community among participants.

In conclusion, casino loyalty programs are essential for attracting and retaining players. By leveraging technology and offering personalized experiences, casinos can create a more engaging environment that benefits both the establishment and its patrons. As these programs continue to evolve, players should stay informed about the best options available to maximize their rewards.