<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kouki Badr</title>
    <description>The latest articles on DEV Community by Kouki Badr (@koukibadr).</description>
    <link>https://dev.to/koukibadr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F644740%2F2dc95912-aafe-4614-9c1a-5ce2568fa6df.jpeg</url>
      <title>DEV Community: Kouki Badr</title>
      <link>https://dev.to/koukibadr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/koukibadr"/>
    <language>en</language>
    <item>
      <title>Optimizing Performance in Android Apps with Kotlin</title>
      <dc:creator>Kouki Badr</dc:creator>
      <pubDate>Thu, 12 Feb 2026 10:08:43 +0000</pubDate>
      <link>https://dev.to/koukibadr/optimizing-performance-in-android-apps-with-kotlin-51l0</link>
      <guid>https://dev.to/koukibadr/optimizing-performance-in-android-apps-with-kotlin-51l0</guid>
      <description>&lt;p&gt;Optimizing the performance of your Android applications is crucial for providing a smooth and responsive user experience. Kotlin, with its concise syntax and powerful features, offers several ways to enhance the performance of your apps. In this article, we'll explore various techniques and best practices to help you get the most out of your Android applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Profiling Your App
&lt;/h2&gt;

&lt;p&gt;Before you can optimize your app, you need to understand where the performance bottlenecks are. Android Studio provides powerful profiling tools that can help you identify issues related to CPU usage, memory allocation, and network activity.&lt;/p&gt;

&lt;p&gt;CPU Profiling: Use the CPU profiler to identify methods that are consuming the most CPU resources. Look for methods that are called frequently or take a long time to execute.&lt;br&gt;
Memory Profiling: The memory profiler can help you track memory allocations and identify memory leaks. Pay attention to objects that are being created frequently or not being released properly.&lt;br&gt;
Network Profiling: Use the network profiler to monitor network requests and identify any delays or inefficiencies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Memory Management
&lt;/h2&gt;

&lt;p&gt;Efficient memory management is essential for preventing memory leaks and reducing the risk of your app being killed by the system due to high memory usage.&lt;/p&gt;

&lt;p&gt;Use ViewHolder Pattern: When working with RecyclerView, use the ViewHolder pattern to recycle views and reduce the overhead of view inflation.&lt;br&gt;
Avoid Memory Leaks: Be cautious with anonymous inner classes and non-static inner classes, as they can hold references to their outer class instances, leading to memory leaks.&lt;br&gt;
Use Kotlin's Null Safety: Kotlin's null safety features can help you avoid null pointer exceptions and manage memory more efficiently.&lt;/p&gt;

&lt;h2&gt;
  
  
  Efficient Coding Practices
&lt;/h2&gt;

&lt;p&gt;Writing efficient code is key to optimizing the performance of your Android apps.&lt;/p&gt;

&lt;p&gt;Use Kotlin Coroutines: Coroutines allow you to write asynchronous code in a sequential manner, making it easier to manage and optimize.&lt;br&gt;
Leverage Inline Functions: Inline functions can reduce the overhead of function calls, improving performance in hot code paths.&lt;br&gt;
Optimize Loops: Avoid performing expensive operations inside loops. Instead, precompute values and reuse them when possible.&lt;br&gt;
Use Efficient Data Structures: Choose the right data structures for your use case. For example, use Set for fast lookups and Map for key-value pairs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;By following these techniques and best practices, you can significantly improve the performance of your Android applications. Remember that performance optimization is an ongoing process, and it's important to continuously profile and optimize your app as it evolves.&lt;/p&gt;

&lt;p&gt;Happy coding!&lt;/p&gt;

</description>
      <category>android</category>
      <category>kotlin</category>
      <category>development</category>
      <category>mobile</category>
    </item>
    <item>
      <title>Bottom_Picker new Major version</title>
      <dc:creator>Kouki Badr</dc:creator>
      <pubDate>Sat, 26 Jul 2025 10:50:26 +0000</pubDate>
      <link>https://dev.to/koukibadr/bottompicker-new-major-version-2kee</link>
      <guid>https://dev.to/koukibadr/bottompicker-new-major-version-2kee</guid>
      <description>&lt;p&gt;🎉 Exciting News for Flutter Devs! 🎉&lt;/p&gt;

&lt;p&gt;We're thrilled to announce a major update to our beloved bottom_picker package! We've bumped the version all the way to 4.0.0! 🚀&lt;/p&gt;

&lt;p&gt;This release is packed with awesome new features and improvements for your Flutter applications, including:&lt;/p&gt;

&lt;p&gt;✨ Filter Options: &lt;br&gt;
Now you can easily add filters to unpickable or blocked days in your date pickers! Say goodbye to those unwanted dates. 🗓️&lt;/p&gt;

&lt;p&gt;➕ Year Picker: Selecting a year just got a whole lot easier with the new dedicated year picker. ⚙️&lt;/p&gt;

&lt;p&gt;🛠️ Enhanced Title Flexibility: We've transformed the pickerTitle into an optional header builder callback, giving you full control over the picker's header!&lt;/p&gt;

&lt;p&gt;But wait, there's more! We've also squashed a pesky bug where selectedItemIndex parameters weren't working correctly for simple pickers. 🐛&lt;/p&gt;

&lt;p&gt;⚠️ Breaking Changes Alert! ⚠️&lt;/p&gt;

&lt;p&gt;Due to the significant enhancements, especially the title customization via the new callback, this release includes potential breaking changes.&lt;br&gt;
All attributes that are related to the old title, description and closing widget are now deprecated if you're planning to upgrade to 4.0.0 version.&lt;/p&gt;

&lt;p&gt;We believe these changes will greatly improve the flexibility and usability of bottom_picker in your Flutter projects.&lt;/p&gt;

&lt;p&gt;Check out the full release notes and upgrade guide here: &lt;a href="https://pub.dev/packages/bottom_picker" rel="noopener noreferrer"&gt;Bottom_Picker&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;#flutter #dart #bottompicker #mobiledev #opensource&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Say "Oui" to Global Users: Localize Your Flutter App with Gemini</title>
      <dc:creator>Kouki Badr</dc:creator>
      <pubDate>Sun, 09 Jun 2024 15:09:41 +0000</pubDate>
      <link>https://dev.to/koukibadr/fast-localization-with-gemini-on-flutter-4keh</link>
      <guid>https://dev.to/koukibadr/fast-localization-with-gemini-on-flutter-4keh</guid>
      <description>&lt;p&gt;Why localize your app?  Think about it, ignoring international users is like making a fire meme and forgetting to post it online - what's the point?  But don't worry, we hear you screaming Fear not, for Gemini is here to  be your Yoda in the localization swamp.  We'll tackle all your app translation woes, so buckle up and get ready for a smooth ride and dive deep with us in this post!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is localization and How it's done?&lt;/strong&gt;&lt;br&gt;
To conquer the globe, you need some serious localization skills.&lt;/p&gt;

&lt;p&gt;Think of locales as your app's Rosetta Stone – they unlock the ability to understand different languages, date formats (no more confusing July 4th with 4th of July!), currencies, and all those cultural nuances. So, French users see euros and "dd/mm/yyyy," while Spanish speakers get their pesos and the familiar "dd/mm/aaaa."&lt;/p&gt;

&lt;p&gt;Now, managing these locales can feel like herding cats. But fear not, there's a better way than wrestling with JSON files (because, let's be honest, that's a recipe for disaster).&lt;br&gt;
Enter the dynamic duo of flutter_localizations and intl – these packages are your knight in shining armor, recommended by the official Flutter people themselves.&lt;/p&gt;

&lt;p&gt;Here's the battle plan:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recruit your allies: Integrate flutter_localizations and intl into your app.&lt;/li&gt;
&lt;li&gt;Set up your command center: Create a l10n.yaml config file.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;arb-dir&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;lib/l10n&lt;/span&gt;
&lt;span class="na"&gt;template-arb-file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app_en.arb&lt;/span&gt;
&lt;span class="na"&gt;output-localization-file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;app_localizations.dart&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Deploy your troops: Create .arb files under the lib/l10n folder (or a location of your choosing, just update the config file accordingly). These .arb files will house all your app's localized strings.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With this battle plan in place, you'll be a localization champion in no time, ready to take your app to a global phenomenon!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;With Gemini&lt;/strong&gt;&lt;br&gt;
Feeling overwhelmed by app localization? Manually translating endless lines for every language can be a daunting task. But fear not, developer! Google Gemini has your back with the arb_translate package.&lt;/p&gt;

&lt;p&gt;Think of arb_translate as your personal localization assistant. You simply write the default translations, and then unleash the power of Gemini! With a single arb_translate command, Gemini translates all the other languages you need, taking context (e-commerce, cars, coding?) into account for natural-sounding translations.&lt;/p&gt;

&lt;p&gt;Ditch the manual translation grind and let Gemini be your localization hero. It's a much more efficient way to conquer the world with your app! Now that you've got a taste of Gemini's localization magic.&lt;/p&gt;

&lt;p&gt;why not jump in and try it for yourself you can finally overcome the language barrier and reach new heights, just like Lara Croft raiding tombs and uncovering hidden treasures across the globe!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://docs.flutter.dev/ui/accessibility-and-internationalization/internationalization" rel="noopener noreferrer"&gt;https://docs.flutter.dev/ui/accessibility-and-internationalization/internationalization&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://pub.dev/packages/arb_translate" rel="noopener noreferrer"&gt;https://pub.dev/packages/arb_translate&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>flutter</category>
      <category>gemini</category>
    </item>
    <item>
      <title>EasyDeps : brick-ception</title>
      <dc:creator>Kouki Badr</dc:creator>
      <pubDate>Sun, 12 May 2024 16:34:56 +0000</pubDate>
      <link>https://dev.to/koukibadr/easydeps-brick-ception-2jcl</link>
      <guid>https://dev.to/koukibadr/easydeps-brick-ception-2jcl</guid>
      <description>&lt;p&gt;The Flutter ecosystem is abuzz with a new framework – Mason. Boasting over 300 bricks and counting, it's a construction zone of awesome functionality. But what if we could take things a step further? Enter the meta-brick, a brick built specifically for other brick developers.&lt;/p&gt;

&lt;p&gt;This isn't your average UI brick. It's about streamlining the workflow for fellow brick builders. Imagine a world without manually managing dependencies in each brick. This innovation offers centralized dependency management through a dedicated package.json file, keeping your code clean and organized.&lt;/p&gt;

&lt;p&gt;Picture this: You integrate your brick into a Flutter project, and poof! All necessary dependencies are installed automatically. That's the magic of this brick.&lt;br&gt;
Additionally, it champions project structure, residing within a dedicated hooks directory for a minimalist's dream layout.&lt;/p&gt;

&lt;p&gt;Ready to unlock this developer superpower? Buckle up – we'll be diving into &lt;a href="https://brickhub.dev/bricks/easy_deps/0.1.0+1" rel="noopener noreferrer"&gt;EasyDeps&lt;/a&gt;, with clear instructions that demystify the process. It's recursion made simple, without the headache of explaining Inception.&lt;/p&gt;

&lt;h2&gt;
  
  
  How this project work?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation:
&lt;/h3&gt;

&lt;p&gt;Get your brick on board with mason add &lt;a href="https://brickhub.dev/bricks/easy_deps/0.1.0+1" rel="noopener noreferrer"&gt;easy_deps&lt;/a&gt; (or go global with mason add -g easy_deps).&lt;/p&gt;

&lt;h3&gt;
  
  
  Generation:
&lt;/h3&gt;

&lt;p&gt;Unleash the magic with mason make &lt;a href="https://brickhub.dev/bricks/easy_deps/0.1.0+1" rel="noopener noreferrer"&gt;easy_deps&lt;/a&gt;. This brick is low-maintenance – no pesky questions to slow you down.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dependency Nirvana:
&lt;/h3&gt;

&lt;p&gt;Boom! You've got yourself a packages.json file nestled within your brick's folder.&lt;/p&gt;

&lt;p&gt;But Wait, There's More!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://brickhub.dev/bricks/easy_deps/0.1.0+1" rel="noopener noreferrer"&gt;easy_deps&lt;/a&gt; doesn't stop at a fancy package.json. It also introduces some undercover heroes:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;package_installation_handler&lt;/code&gt;: This bad boy parses your package.json, ensuring all the dependencies are listed and ready for action.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;post_gen.dart&lt;/code&gt;: In the early days, easy_deps might be a little overzealous, replacing your existing post_gen.dart It simply includes the call to the package_installation_handler code, ensuring your dependencies are installed smoothly.&lt;/p&gt;

&lt;p&gt;Don't worry the package.json will be deleted once your brick is integrated into the app project, It's all temporary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here's the good stuff:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Manual configuration?
&lt;/h3&gt;

&lt;p&gt;More like "manual vacation!" This bad boy handles it all, so you can spend your time on more important things.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cleanliness
&lt;/h3&gt;

&lt;p&gt;The dependency handler chills in the hooks directory, keeping your project looking like a masterpiece.&lt;/p&gt;

&lt;h3&gt;
  
  
  Dedicated package.json for dependencies?
&lt;/h3&gt;

&lt;p&gt;Think of it as your own personal spice rack – everything neatly organized and ready to flavor your app just right. No more hunting for that elusive sprinkle of unicorn dust dependency.&lt;/p&gt;

&lt;p&gt;Well, that's just next-level meta, who are we to judge brick-ception dreams?&lt;/p&gt;

&lt;p&gt;Feel like to contribute to this project? head to github and send me your PRs and Issues &lt;a href="https://github.com/koukibadr/B-Bricks" rel="noopener noreferrer"&gt;https://github.com/koukibadr/B-Bricks&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Also head to brickhub page to learn more about easy_deps&lt;br&gt;
&lt;a href="https://brickhub.dev/bricks/easy_deps/0.1.0+1" rel="noopener noreferrer"&gt;https://brickhub.dev/bricks/easy_deps/0.1.0+1&lt;/a&gt;&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>opensource</category>
      <category>mason</category>
    </item>
    <item>
      <title>Internationalization? More Like International-WIN-ization with Flutter Mason! (Effortless Internationalization)</title>
      <dc:creator>Kouki Badr</dc:creator>
      <pubDate>Sun, 05 May 2024 10:42:47 +0000</pubDate>
      <link>https://dev.to/koukibadr/internationalization-more-like-international-win-ization-with-flutter-mason-effortless-internationalization-349e</link>
      <guid>https://dev.to/koukibadr/internationalization-more-like-international-win-ization-with-flutter-mason-effortless-internationalization-349e</guid>
      <description>&lt;p&gt;Flutter devs, ever feel like you're stuck in a loop localization drudgery?&lt;/p&gt;

&lt;p&gt;Fear not, weary coder! Even if you're not a Flutter master (yet!), this article will have you saying "I'm beginning to see the pattern...".&lt;/p&gt;

&lt;p&gt;We all know Flutter is fast compared to native development (looking at you, Android Studio!), but buckle up because Flutter Mason is about to blow your development speed right out of the water. ️  This article will be your guide to the specific Flutter Mason trick that'll make ARB localization a breeze.&lt;/p&gt;

&lt;h2&gt;
  
  
  Localiz
&lt;/h2&gt;

&lt;p&gt;As it's description mentioned "Ease and Speed up Internationalizing Flutter Apps" this brick integrate all the arb dependencies, configuration and arb files for you.&lt;/p&gt;

&lt;h3&gt;
  
  
  How ? 🤔
&lt;/h3&gt;

&lt;p&gt;Alright, installation time! But before we dive in, here's a friendly reminder:&lt;/p&gt;

&lt;p&gt;We've got two options for getting Mason and mason_cli on your machine. For the command-line cowboys,there's the classic &lt;br&gt;
&lt;code&gt;dart pub global activate mason_cli&lt;/code&gt;.&lt;br&gt;
But if you're a true programmer of culture (and a Homebrew user), you can unleash the power of &lt;br&gt;
&lt;code&gt;brew tap felangel/mason; brew install mason&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Finally, the moment we've all been waiting for: installing the localiz brick.&lt;br&gt;
You can do this locally with &lt;code&gt;mason add localiz&lt;/code&gt; or go full global dominance with &lt;code&gt;mason add -g localiz&lt;/code&gt;. The choice is yours, but choose wisely!&lt;/p&gt;
&lt;h3&gt;
  
  
  Use it
&lt;/h3&gt;

&lt;p&gt;All you need to do now it to use it on your project&lt;br&gt;
&lt;code&gt;mason make localiz&lt;/code&gt;&lt;br&gt;
this will trigger the brick, and it will ask you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Choose language to include &lt;span class="k"&gt;in &lt;/span&gt;your app?
  ◯  English &lt;span class="o"&gt;(&lt;/span&gt;en&lt;span class="o"&gt;)&lt;/span&gt;
  ◯  Arabic &lt;span class="o"&gt;(&lt;/span&gt;ar&lt;span class="o"&gt;)&lt;/span&gt;
  ◯  Chinese &lt;span class="o"&gt;(&lt;/span&gt;zh-CN&lt;span class="o"&gt;)&lt;/span&gt;
  ◯  Spanish &lt;span class="o"&gt;(&lt;/span&gt;es&lt;span class="o"&gt;)&lt;/span&gt;
  ◯  French &lt;span class="o"&gt;(&lt;/span&gt;fr-FR&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;it's a multiple selection so use the spacebar to select the languages you want to include when localizing your app&lt;/p&gt;

&lt;p&gt;after this the brick will ask you which language of those you select it's the default and will act like the arb template reference.&lt;/p&gt;

&lt;p&gt;That's it! Now you can high-five yourself, commit your changes, push it to the repo, mark your Jira ticket as "DONE" with the smug satisfaction of a champion.&lt;/p&gt;

&lt;p&gt;The localiz brick takes care of everything: installing those pesky packages (intl, flutter_localizations), generating the l10n.yaml config file with your default language, and even creates the l10n folder within your lib directory pre-populated with all the languages you selected.&lt;/p&gt;

&lt;p&gt;Basically, it saves you a ton of time on tedious setup, freeing you up to focus on the real coding magic. Because, let's be honest, life is way too short to be wrangling ARB files manually.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>mason</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Searchable Listview</title>
      <dc:creator>Kouki Badr</dc:creator>
      <pubDate>Wed, 24 Apr 2024 21:53:08 +0000</pubDate>
      <link>https://dev.to/koukibadr/searchable-listview-3oo2</link>
      <guid>https://dev.to/koukibadr/searchable-listview-3oo2</guid>
      <description>&lt;p&gt;In Flutter app development, creating a seamless search experience within list views is crucial for enhancing user navigation and data exploration. The searchable_listview package emerges as a robust and customizable solution, empowering you to implement search functionality effortlessly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features and Advantages:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Effortless Filtering:&lt;/strong&gt; Filter your list view based on user input, providing real-time search results that dynamically adjust as the user types.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Asynchronous Support:&lt;/strong&gt; Load data asynchronously, making your list view suitable for handling large datasets or data fetched from remote sources.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expansion List Integration:&lt;/strong&gt; Seamlessly incorporate search functionality within expansion lists, catering to scenarios where your list items contain hierarchical data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sorting Capabilities:&lt;/strong&gt; Allow users to sort their search results, offering them additional control over how they view and interact with the list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pagination Management:&lt;/strong&gt; Implement pagination for extensive lists, ensuring smooth scrolling and data loading as users navigate through numerous items.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pull-to-Refresh:&lt;/strong&gt; Integrate pull-to-refresh functionality, enabling users to easily refresh the list view and retrieve the latest data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Sliver Scroll Effects:&lt;/strong&gt; Leverage various sliver scroll animation effects to beautify your list view and enhance the user experience.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizable Search Field:&lt;/strong&gt; Tailor the search text field to your app's design aesthetics by adjusting its styling, keyboard input type, and behavior.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Empty List Handling:&lt;/strong&gt; Display a custom widget when the search yields no results, providing informative feedback to users.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error Handling:&lt;/strong&gt; Craft an appropriate error widget to gracefully handle situations where loading or processing data encounters issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more intricate search requirements, searchable_listview offers further customization options:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Custom Search Logic:&lt;/strong&gt; Implement custom search logic to filter items based on specific criteria beyond simple text matching.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Separator Builder:&lt;/strong&gt; Designate a custom widget to be built between list items, offering visual separation and potentially additional information.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Search Text Field Placement:&lt;/strong&gt; Position the search text field strategically within your layout, aligning it with your app's overall design flow.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scrollable Direction Control:&lt;/strong&gt; Decide on the scrolling direction (vertical or horizontal) depending on your list view's content and user interaction preferences.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Getting Started and Beyond&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To leverage the searchable_listview package in your Flutter project, follow these steps:&lt;/p&gt;

&lt;p&gt;Installation: Add the package to your pubspec.yaml file and run flutter pub get to install it.&lt;/p&gt;

&lt;p&gt;Import the searchable_listview package in your Dart code and utilize its widgets within your list view implementation.&lt;/p&gt;

&lt;p&gt;Refer to the package's documentation on Pub.dev: &lt;a href="https://pub.dev/packages/searchable_listview" rel="noopener noreferrer"&gt;https://pub.dev/packages/searchable_listview&lt;/a&gt; for in-depth guidance, examples, and advanced customization options, explore the provided examples to get a head start on implementing search functionality in your Flutter app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In Conclusion&lt;/strong&gt;&lt;br&gt;
The searchable_listview package empowers you to create robust and user-friendly search experiences for your Flutter applications. With its rich feature set and extensive customization capabilities, it streamlines the process of adding search functionality to your list views, saving you development time and effort. By effectively integrating this package, you can significantly enhance the navigability and discoverability of data within your apps.&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
    </item>
    <item>
      <title>Flutter Elegant Notification</title>
      <dc:creator>Kouki Badr</dc:creator>
      <pubDate>Sun, 14 Apr 2024 11:09:32 +0000</pubDate>
      <link>https://dev.to/koukibadr/flutter-elegant-notification-2714</link>
      <guid>https://dev.to/koukibadr/flutter-elegant-notification-2714</guid>
      <description>&lt;p&gt;&lt;strong&gt;Level Up Your App's Notifications:&lt;br&gt;
A Guide (from the owner himself 🤯) to elegant_notification&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In today's competitive mobile landscape, every detail matters, and that includes how you communicate with your users. Enter &lt;code&gt;elegant_notification&lt;/code&gt;, a powerful Flutter package that injects a touch of class into your app's notification system.&lt;/p&gt;

&lt;p&gt;This article dives deep into &lt;code&gt;elegant_notification&lt;/code&gt;, exploring its core features, exciting new additions, and how to seamlessly integrate it into your Flutter project. &lt;/p&gt;
&lt;h3&gt;
  
  
  Core Features that Make Your Notifications Shine
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Built-in Themes:&lt;/strong&gt;  Out of the box, &lt;code&gt;elegant_notification&lt;/code&gt; provides pre-designed themes for success, error, and info messages.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customization:&lt;/strong&gt;  Don't like the pre-built themes? &lt;code&gt;elegant_notification&lt;/code&gt; empowers you to fully customize the look and feel of your notifications. From background colors and animation styles to notification position and even adding a progress bar, the possibilities are endless. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Animations:&lt;/strong&gt; Make your notifications stand out with a variety of animation options.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Action Stations!&lt;/strong&gt; Engage your users by adding clickable buttons or widgets to your notifications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stacked notifications&lt;/strong&gt; The package offer the possiblity to display notifications in stacked way.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Latest version updates
&lt;/h3&gt;

&lt;p&gt;What elegant notification brings to you with the latest 2.1.1 version:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customizable borders style (color, radius, stroke...)&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Customizable notification shadow&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Step-by-Step Guide
&lt;/h3&gt;

&lt;p&gt;Here's a quick guide to get you started:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Add the package to your pubspec.yaml:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;dependencies&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;elegant_notification&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;^latest_version&lt;/span&gt;  &lt;span class="c1"&gt;# Replace with the latest version number&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Import the package in your Dart file:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="s"&gt;'package:elegant_notification/elegant_notification.dart'&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Display a notification with ease:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;ElegantNotification&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;title:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Success!'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="nl"&gt;description:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Your data has been updated'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="nl"&gt;animation:&lt;/span&gt; &lt;span class="n"&gt;AnimationType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fromTop&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;show&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Custom notification with stacked options:&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight dart"&gt;&lt;code&gt;&lt;span class="n"&gt;ElegantNotification&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nl"&gt;title:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Success!'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="nl"&gt;description:&lt;/span&gt; &lt;span class="n"&gt;Text&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;'Your data has been updated'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="nl"&gt;animation:&lt;/span&gt; &lt;span class="n"&gt;AnimationType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;fromTop&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;stackedOptions:&lt;/span&gt; &lt;span class="n"&gt;StackedOptions&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;key:&lt;/span&gt; &lt;span class="s"&gt;'top'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;type:&lt;/span&gt; &lt;span class="n"&gt;StackedType&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;same&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;itemOffset:&lt;/span&gt; &lt;span class="n"&gt;Offset&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="p"&gt;),&lt;/span&gt;
  &lt;span class="nl"&gt;border:&lt;/span&gt; &lt;span class="n"&gt;Border&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;bottom:&lt;/span&gt; &lt;span class="n"&gt;BorderSide&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;green&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;width:&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;),&lt;/span&gt;
 &lt;span class="p"&gt;),&lt;/span&gt;
 &lt;span class="nl"&gt;icon:&lt;/span&gt; &lt;span class="n"&gt;Icon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
   &lt;span class="n"&gt;Icons&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;access_alarm&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
   &lt;span class="nl"&gt;color:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;orange&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="p"&gt;),&lt;/span&gt;
 &lt;span class="nl"&gt;progressIndicatorColor:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;orange&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
 &lt;span class="nl"&gt;background:&lt;/span&gt; &lt;span class="n"&gt;Colors&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;white&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;show&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;context&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can imagine what you can do with all this customizations and other attributes (I'll let you unleash your creativity with it)&lt;/p&gt;

&lt;p&gt;Head to &lt;a href="https://pub.dev/packages/elegant_notification" rel="noopener noreferrer"&gt;https://pub.dev/packages/elegant_notification&lt;/a&gt; for more in-depth documentation about this package and let me know if you have any questions, issues or suggestions&lt;/p&gt;

</description>
      <category>flutter</category>
      <category>dart</category>
      <category>package</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
