MobilePro #139: Dart Packages in Flutter, Widget Dev, SOLID principles, Gemini Flash, PaliGemma, iOS/Android tracking alerts, Routing prompts.
Advertise with Us | Sign Up to the Newsletter
How Tinder Engaged Millions With Their "Swipe To Vote" Feature Quickly?
Step 1: The polling feature was designed to be highly engaging
Step 2: It’s easier for enterprise company employees to get budget allocated from their manager vs. getting the internal dev team to do the work. Tinder realized this and turned to Codingscape who built this super software for them.
Hi ,
Welcome to the mobile app development world with _mobilepro! In this edition we cover mobile development community discussions on:
How to Create Dart Packages in Flutter: A Step-by-Step Guide
How to Implement a Global Error Handling Popup in React Native with React Query
In our relatively new section captures internet jibber-jabber about the mobile ecosystem:
iOS 17.5 is allegedly resurfacing pictures that were deleted years ago for some users
Apple and Google deliver support for unwanted tracking alerts in iOS and Android
Today's news covers release stories on Apple, Android, Ionic, JetBrains and Microsoft . Want to boost your mobile development game? Then don’t miss our tutorial from the book ‘C# 12 and .NET 8 – Modern Cross-Platform Development Fundamentals - Eighth Edition’! And if you are currently developing an iOS app, checkout this week's resources on iOS tools.
P.S.: If you have any suggestions or feedback, or would like us to feature your project on a particular subject, please write to us. Just respond to this email!
If you liked this installment in our new series, fill in our survey below and win a free PDF on your Packt account.
Thanks,
Apurva Kadam
Editor-in-Chief, Packt
Mobile App Dev Community Speak
What are Mobile developers discussing? What are the latest tips and tricks? Shortcuts and experiments? Cool tutorials? Releases and updates? Find it all out here.
Automating Ionicon Usage in Angular - In a modern development workflow, reducing bundle size to optimize performance is key to providing the best user experience. However, In the realm of Ionic Standalone Components, manually running add Icons to utilize IonIcons can be repetitive and cumbersome for developers. To simplify this process, Masahiko Sakakibara from the Ionic community has devised a custom approach that trims bundle size and improves app speed. This blogpost contains a brief tutorial.
How to Create Dart Packages in Flutter: A Step-by-Step Guide - One of the cornerstones of Flutter’s modularity is the concept of Dart packages. These self-contained code units allow developers to encapsulate functionalities, making them reusable across different projects and fostering a rich ecosystem of shared components. This step-by-step guide is designed for Flutter developers who want to delve into the world of creating custom Dart packages. Whether you're looking to share reusable functionalities within your own projects or contribute to the wider Flutter community, this guide will equip you with the knowledge and tools to get started.
Ultimate Guide to Flutter Development Setup 2024 - Since its inception, Flutter has undergone significant evolution. Originally launched in 2017, Flutter has continuously expanded its functionality and improved its performance. Early versions focused primarily on mobile applications, but with the release of Flutter 2.0, support extended to web and desktop applications, flutter has improved more since its recent release of flutter 3.22. Each iteration has introduced enhancements in speed, usability, and developer experience, solidifying Flutter's position as a versatile and powerful development tool. This blogpost helps you with Flutter Setup.
Enhancing Mobile Apps with Effective Widget Development - Are you looking to take your mobile app to the next level with engaging and responsive widgets? Checkout our latest blog post where we dive into the best practices and approaches for mobile widget development. Perfect for both iOS and Android developers, this guide will help you create widgets that not only boost user engagement but also enhance the overall user experience.
Mastering SOLID principles in Flutter - SOLID principles are a set of guidelines for writing clean, maintainable, and scalable object-oriented code. By applying these principles to your Flutter development, you can create well-structured applications that are easier to understand, modify, and extend in the future. This article provides a breakdown of each principle of Flutter development.
How to Implement a Global Error Handling Popup in React Native with React Query- Handling errors gracefully in a React Native application is essential for providing a smooth user experience. One effective approach is to implement a global error handling popup that informs users of issues and allows them to retry failed actions. In this blog post, we will walk through how to achieve this using React Native and React Query.
Utility package for web developers in Flutter - This article shares how flutter_gg can improve your coding process and why you should prefer it in your next project. Read about key benefits you can expect from flutter_gg and provides a tutorial to help you set up.
Mobile App Dev Repos
Check this space for new repos, projects and tools each week! This week we bring you a collection
of iOS tools for Audio.
AudioBus - Add Next Generation Live App-to-App Audio Routing.
AudioKit - A powerful toolkit for synthesizing, processing, and analyzing sounds.
EZAudio - An iOS/macOS audio visualization framework built upon Core Audio useful for anyone doing real-time, low-latency audio processing and visualizations.
novocaine - Painless high-performance audio on iOS and macOS.
QHSpeechSynthesizerQueue - Queue management system for AVSpeechSynthesizer (iOS Text to Speech).
Cephalopod - A sound fader for AVAudioPlayer written in Swift.
Chirp - The easiest way to prepare, play, and remove sounds in your Swift app!
Internet Jibber-Jabber
Interesting stories and curious musings from the Internet.
Gemini Flash - Google DeepMind’s lightweight model, optimized for speed and efficiency featuring multimodal reasoning and breakthrough long context window of up to 1 million tokens.
PaliGemma - PaliGemma is a lightweight open vision-language model (VLM)inspired by PaLI-3, andbased on open components like the SigLIP vision model and the Gemma language model. PaliGemma takes both images and text as inputs and can answer questions about images with detail and context, meaning that PaliGemma can perform deeper analysis of images and provide useful insights, such as captioning for images and short videos, object detection, and reading text embedded within images.
iOS 17.5 is allegedly resurfacing pictures that were deleted years ago for some users - A bug in iOS 17.5 is allegedly resurfacing photos that were deleted years ago for some iPhone users, according to posts on Reddit. The affected iPhone users say that after updating to iOS 17.5 – which was released on Monday – there are a number of pictures in the Photos app that were deleted years ago.
Apple and Google deliver support for unwanted tracking alerts in iOS and Android -Apple and Google have worked together to create an industry specification— Detecting Unwanted Location Trackers — for Bluetooth tracking devices that makes it possible to alert users across both iOS and Android if such a device is unknowingly being used to track them. This will help mitigate the misuse of devices designed to help keep track of belongings. Today Apple is implementing this capability in iOS 17.5, and Google is now launching this capability on Android 6.0+ devices.
Routing prompts to different LLMs? - Dynamically routing prompts to different Large Language Models (LLMs) can offer a range of benefits, enhancing efficiency, accuracy, and user experience in various applications. This blog lists some of the potential benefits.
Mobile App Development Tutorial
Creating a console app to publish
Let’s explore how to publish a console app:
Use your preferred code editor to add a new Console App / console project named DotNetEverywhere to the Chapter07 solution. Make sure you target .NET 8.
Modify the project file to statically import the System.Console class in all C# files.
In Program.cs, delete the existing statements, and then add a statement to output a message saying the console app can run everywhere and some information about the operating system, as shown in the following code:
WriteLine("I can run everywhere!");
WriteLine($"OS Version is {Environment.OSVersion}.");
if (OperatingSystem.IsMacOS())
{
WriteLine("I am macOS.");
}
else if (OperatingSystem.IsWindowsVersionAtLeast(major: 10, build: 22000))
{
WriteLine("I am Windows 11.");
}
else if (OperatingSystem.IsWindowsVersionAtLeast(major: 10)){
WriteLine("I am Windows 10.");
}
else
{
WriteLine("I am some other mysterious OS.");
}
WriteLine("Press any key to stop me.");
ReadKey(intercept: true); // Do not output the key that was pressed.
Run the DotNetEverywhere project and note the results when run on Windows 11, as shown in the following output:
I can run everywhere!
OS Version is Microsoft Windows NT 10.0.22000.0.
I am Windows 11.
Press any key to stop me.
In DotNetEverywhere.csproj, add the runtime identifiers (RIDs) to target five operating systems inside the <PropertyGroup> element, as shown highlighted in the following markup:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0
</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<RuntimeIdentifiers>
win10-x64;osx-x64;osx.11.0-arm64;linux-x64;linux-arm64
</RuntimeIdentifiers>
</PropertyGroup></Project>.…read more.
Read C# 12 and .NET 8 – Modern Cross-Platform Development Fundamentals - Eighth Edition now!
What's Happening in Mobile App Dev?
Latest releases, updates, launches and news on mobile app dev!
Apple
Checkout the new Apple Developer Forums - The Apple Developer Forums have been redesigned for WWDC24 to help developers conn ect with Apple experts, engineers, and each other to find answers and get advice. Apple Developer Relations and Apple engineering are joining forces to field your questions and work to solve your technical issues. You’ll have access to an expanded knowledge base and enjoy quick response times — so you can get back to creating and enhancing your app or game. Plus, Apple Developer Program members now have priority access to expert advice on the forums. Check out the new forums.
Transition from XML to the App Store Connect API - Game Center management will no longer be supported by the XML feed as of July 15, 2024. Support for in-app purchases, subscriptions, metadata, and app pricing ended on November 9, 2022. You can manage this content via the App Store Connect REST API, which makes it easy to customize and automate your workflows. Add to calendar.
Android
Google@ KotlinConf 2024: A Look Inside Multiplatform Development with KMP and more.- Following our recent Google I/O announcement recommending Kotlin Multiplatform (KMP) for sharing business logic across mobile, web, server, and desktop platforms, and our move to use KMP in Google Workspace, KotlinConf2024 was the next moment to share the highlights and connect with the Kotlin community. The Android team has been working to support KMP and recently released an alpha version of Room with KMP support. As of today, Annotations, Collections and DataStore are already instable with KMP support . We've also commonified Lifecycle, ViewModel and Paging libraries to allow integrations with non-Android platforms.
Ionic
Introducing: Capacitor Barcode Scanner Plugin - Since Ionic and OutSystems have joined forces, we’ve been excited to see how this change would impact Capacitor and our open-source tools. Both companies support a large ecosystem of plugins, with a mix of ecosystem-specific plugins and ones that overlap between Ionic and OutSystems. As we work together, we aim to combine our ecosystems and provide the best possible experience, for both the Capacitor and OutSystems communities. In pursuit of that goal, we are thrilled to bring our first shared plugin to the Capacitor ecosystem as a core supported plugin.
JetBrains
Celebrating Kotlin 2.0: Fast, Smart, and Multiplatform - Today we are excited to release Kotlin 2.0 with a stable K2 compiler, which is multiplatform from the ground up, understands your code better, and compiles it twice as fast.
Microsoft
.NET Announcements and Updates from Microsoft Build 2024 - At Microsoft Build 2024,we’re thrilled to unveil a new set of features and tools designed to make .NET development faster and easier. Explore the .NET sessions at Microsoft Build 2024 to see the new features in action, or try them yourself by downloading .NET 9 Preview 4 today. Prepare for the .NET 9launch by saving the date for .NET Conf 2024 in November.
And that’s a wrap.
P.S.: If you have any suggestions or feedback, or would like us to feature your project on a particular subject, please write to us. Just respond to this email!



