Google search engine
Home Blog Page 54

Bluetooth Functionality in Flutter

Bluetooth is a type of functionality that provides access in and for other electronic devices, In the app world it is the most reliable wireless tool which provides access to other devices and it also gives free cost service because it is an inbuilt feature of the most mobile and other electronic devices. However, now some devices like mobile phones are out there without Bluetooth because their developers prefer to rely on the internet instead of Bluetooth for any kind of connectivity. In this era of digitalization when the internet is cheaper than food and every electronic device is becoming internet processed device but Bluetooth is still reliable functionality for connectivity.

In this example, we are going to use flutter_blue package to implement Bluetooth functionality in our app

Implementation

Adding FlutterBlue package into in the Flutter. First, you need to add this package in pubspec.yaml

flutter_blue:

Importing FlutterBlue Dependency package into the flutter Dart Code:

import 'package:flutter_blue/flutter_blue.dart';

Now when you are using this flutter plugin then you need to access it from the library and for this, you need to create an instance of it, so we do this by writing this code

FlutterBlue flutterBlueInstance  = FlutterBlue.instance;

there are different parts while you are making a connection with the device and theses steps are scanning device, discovering device, connecting device, reading, and writing characteristic and also implementing notification setting into your app.

for all these processes there is a set of code and it is a kind of boilerplate because you need to write exactly as it is for different steps mentioned above

so let’s see how can we implement these steps in our app

Scanning Device

// this line will start scanning bluetooth devices
var scanDevices = flutterBlue.scan().listen((scanResult) {
});
// this line will stop scanning bluetooth devices
scanDevices.cancel();

after scanning all the devices you need to connect your device with the scanned device and you can do this by using this

Connect to a Bluetooth device

// need to create connection for device
var deviceConnection = flutterBlue.connect(device).listen((s) {
if(scan == BluetoothDeviceState.connected) {
// now device is connected you can perform your action
}
});
// it will disconnect your device 
deviceConnection.cancel();

Searching Bluetooth services

List<BluetoothService> services = await device.discoverServices();
services.forEach((service) {
// perform action with services
});

Reading and writing characteristics

// Reads all characteristics
var characteristics = service.characteristics;
for(BluetoothCharacteristic c in characteristics) {
List<int> value = await device.readCharacteristic(c);
print(value);
}
// Writes to a characteristic
await device.writeCharacteristic(c, [0x12, 0x34])

Reading and writing descriptors

// Reads all descriptors
var descriptors = characteristic.descriptors;
for(BluetoothDescriptor d in descriptors) {
List<int> value = await device.readDescriptor(d);
print(value);
}
// Writes to a descriptor
await device.writeDescriptor(d, [0x12, 0x34])

Setting notifications

await device.setNotifyValue(characteristic, true);
device.onValueChanged(characteristic).listen((value) {
// do something with new value
});

so these are one of the key methods and by using these you can make your app rich in functionality.

This Flutter blue plugin is having some functionalities which are platform-specific for example

Read the MTU and request a larger size

final mtu = await device.mtu.first;
await device.requestMtu(512);

Note that iOS will not allow requests of MTU size, and will always try to negotiate the highest possible MTU (iOS supports up to MTU size 185)

Flutter_blue has some references these references indicate which functionality is available for Android, iOS, or for both and it has been clearly instructed by the Flutter_blue team so before going over implementation you must go through this section.

while implementing all these methods you must set your minimum SDK version 19

References





Scanning for service UUID’s doesn’t return any results

One thing which you need to focus on the device is advertising which type of service UUID’s support, there are some advertisement packets like UUID 16 bit and UUID 128 bit.

here in the given images, you can see how at first step device is scanning all available devices and how it is showing all its notification.

you can find the full source code here

flutter-devs/flutter_bluetooth
A new Flutter application. This project is a starting point for a Flutter application. A few resources to get you…github.com

Conclusion

This Flutter_blue package provides a good milieu to implement all your required functionalities whether it is connecting with mobile devices, electronic devices, or IoT devices, It fits in all works for all and is compatible with all. You will get an awesome experience with its implementation.

Note: In some blogs, it has been written that you need to make some changes to info.plist(for iOS) and in the manifest file(for android) but you don’t need to do that. It works fine with any changes in these files.


Thanks for reading this article if you find anything that could be improved please let me know, I would love to improve.💙

If this article has helped you a bit and found interesting please clap!👏


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! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter related queries.

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.

Implementing Google-Maps in Flutter

What we will build ::

Before starting the blog let me tell you what you can learn from this blog/article:-

  1. You learn how to implement Google-Maps in your flutter app using flutter_google_maps package.
  2. How to fetch the live Geo-coordinates of the user location using location package.
  3. How to implement light and dark mode in google maps.
  4. How to move the maps camera bound form one geo-coord to another.
  5. You will learn how to add markers, polygons, directions, information about any geo-coord , displaying a dialog box containing information about the geo-coord ,clear polygon, direction, markers, etc.
  6. You will learn how to implement functionality into your flutter app, how to work with multiple packages.

Demo of our app: —


Introduction

Google Maps is a mapping service developed by Google. This tool provides us a lot of features that we can use in our daily lifestyle. Google Maps is highly effective and fast, provides us a lot of information in realtime.

Key Features:

  • :: Provide realtime information about traffic
  • :: Provide all possible routes between two points
  • :: Calculate accurate distance between two points
  • :: Provides us additional information about the location in which we are interested
  • :: Stores our travel history
  • :: Controls two-third of the online navigation market
  • :: Shopping app and websites actively uses maps to fasten their delivery process
  • :: Maps is highly used as a marketing tool

Table of content :

  1. Setting up project
  2. Install Packages
  3. Initialize Google maps
  4. Get the live location
  5. Displaying the google_map on screen
  6. Adding Widgets to implement functionality
  7. GitHub Link

Setting up Project :

  1. Follow the steps give in the documentation:

flutter_google_maps | Flutter Package
A Flutter plugin for integrating Google Maps in iOS, Android, and Web applications. It is a wrapper of…pub.dev

Do not forget to specify the API key in your android/app/src/main/AndroidManifest.xml file.

2. Add the location permission into the AndroidManifest.xml manifest outside of the application tag.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

3. Update your build.gradle file dependencies to this

dependencies {
classpath 'com.android.tools.build:gradle:3.3.0'
classpath 'com.google.gms:google-services:4.2.0'
}

4. minSdkVersion 21

Note: Last Two steps are used for location: package

Installing Package:

Install the following package:

flutter_google_maps | Flutter Package
A Flutter plugin for integrating Google Maps in iOS, Android, and Web applications. It is a wrapper of…pub.dev

location | Flutter Package
This plugin for Flutter handles getting a location on Android and iOS. It also provides callbacks when location is…pub.dev

hawk_fab_menu | Flutter Package
A floating action button menu that will pop up small fabs on top Add dependency in pubspec.yaml: hawk_fab_menu: ^0.2.2…pub.dev

Import package :

import 'package:flutter_google_maps/flutter_google_maps.dart';
import 'package:hawk_fab_menu/hawk_fab_menu.dart';
import 'package:location/location.dart';

Initialize Google maps :

Inside the main function, intit("your key") method is used to initialize the Google Map API.

void main() {
GoogleMap.init('your key');
WidgetsFlutterBinding.ensureInitialized();
runApp(MyApp());
}

Get the live location:

To get the live location we will use the location package.

location | Flutter Package
This plugin for Flutter handles getting a location on Android and iOS. It also provides callbacks when the location is…pub.dev

getLocation() is a method used to get the live latitude and longitude . longitude , latitude are two variables used to store the geo-coordinates. getLocation is a method inside the Location() class which provides us the geo-coordinates. userLocation is used to provide the access the longitude ,latitude . We have used the try and catch method to display the error message if there is an error.

Future getLocation() async {
try {
var userLocation = await Location().getLocation();
setState(() {
longitude = userLocation.longitude;
latitude = userLocation.latitude;
});
} on Exception catch (e) {
print('Could not get location: ${e.toString()}');
}
}
double latitude;
double longitude;

Initializing the getLocation()

@override
void initState() {
getLocation();
super.initState();
}

Displaying the google_map on screen:

initializing Global keys

final _scaffoldKey = GlobalKey<ScaffoldState>();
final key = GlobalKey<GoogleMapStateBase>();

google map

flutter_google_maps provides us GoogleMap() widgets to display the map view on the screen. This widget has lots of properties that can be used to customize the map view. markers is the list of Marker() , used to display the markers on the screen. initialZoom is the initial zoom of the maps camera. initialPosition is the initial position of the map. It takes GeoCoord() widget. mapType specify the type of map type. mapStyle is the color combination of the map. Here I have added a functionality when the user will click on the map at any position the marker will we added to the map at that particular location.

onTap: (geo) {
setState(() {
longitude = geo.longitude;
latitude = geo.latitude;
});
_scaffoldKey.currentState.showSnackBar(SnackBar(
content: Text(geo?.toString()),
duration: const Duration(seconds: 2),
));
GoogleMap.of(key)
.addMarkerRaw(GeoCoord(latitude, longitude));
polygon.add(GeoCoord(latitude, longitude));
},

To do this we will need the coordinates of the point at which the user will click, so need to change the latitude ,longitude . Whenever the user clicks the screen snakeBar is also displayed that shows the values of geo-coord. Also to display the polygon we need some points that is why we used polygon.add(GeoCoord(latitude, longitude)); here polygon is the list of GeoCoord . To display the marker, GoogleMap class provides us addMarkerRaw() method.

GoogleMap(
key: key,
markers: {
Marker(
GeoCoord(latitude, longitude),
),
},
initialZoom: 12,
initialPosition: GeoCoord(latitude, longitude),
mapType: _mapType == null ? MapType.roadmap : _mapType,
mapStyle: _mapStyle,
interactive: true,
onTap: (geo) {
setState(() {
longitude = geo.longitude;
latitude = geo.latitude;
});
_scaffoldKey.currentState.showSnackBar(SnackBar(
content: Text(geo?.toString()),
duration: const Duration(seconds: 2),
));
GoogleMap.of(key)
.addMarkerRaw(GeoCoord(latitude, longitude));
polygon.add(GeoCoord(latitude, longitude));
},
mobilePreferences: const MobileMapPreferences(
trafficEnabled: true, zoomControlsEnabled: false),
webPreferences: WebMapPreferences(
fullscreenControl: true,
zoomControl: true,
),
),

Adding Widgets to implement functionality :

Screen Widgets

Changing the style of the map:

To change the style of the map I have used a CircleAvatar on the left of the screen, on tapping it displays a Dialog Box that shows the list of the type of the style of the map. On pressing any style it will change the map style.

List<MapType> mapType = [
MapType.hybrid,
MapType.roadmap,
MapType.satellite,
MapType.terrain,
MapType.none,
];
MapType _mapType ;
List<String> mapTypeName = [
"Hybrid",
"Roadmap",
"Satellite",
"Terrain",
"None"
];

The above variables are used to implement the functionality.

Positioned(
top: 15,
right: 20,
child: InkWell(
onTap: () {
showDialog(
context: context,
builder: (_) {
return AlertDialog(
title: Text("Map Style"),
content: Container(
height: mapType.length * 64.0,
width: 100,
child: ListView.builder(
physics: NeverScrollableScrollPhysics(),
itemBuilder: (context, index) {
return Card(
child: ListTile(
title: Text(mapTypeName[index]),
onTap: () {
setState(() {
_mapType = mapType[index];
});
Navigator.of(context).pop();
},
),
);
},
itemCount: mapType.length,
),
),
actions: <Widget>[
FlatButton(
onPressed: () {
Navigator.of(context).pop();
},
child: Text("CANCEL"),
)
],
);
});
},
child: CircleAvatar(
radius: 25,
backgroundColor: Colors.white,
child: Icon(
Icons.filter_none,
color: Colors.blue,
),
),
))

Edit menu

To display the edit menu I have used an animated floatingActionButton .

body: HawkFabMenu(
items: [
HawkFabMenuItem(
label: 'Add Polygon',
ontap: () {
},
icon: Icon(
Icons.crop_square,
),
),
HawkFabMenuItem(
label: 'Info Demo',
ontap: () {
},
icon: Icon(Icons.pin_drop),
),
HawkFabMenuItem(
label: 'Directions',
ontap: () {
},
icon: Icon(Icons.directions),
),
],
body: _body
],
),
));

Add Polygon :

addPolygon() is a method that makes id and a List of GeoCoord() that connect each other to display a polygon on the map screen. editPolygon is used to edit the polygon.

ontap: () {
if (!_polygonAdded) {
GoogleMap.of(key).addPolygon(
'1',
polygon,
onTap: (polygonId) async {
await showDialog(
context: context,
builder: (context) => AlertDialog(
content: Text(
'This dialog was opened by tapping on the polygon!\n'
'Polygon ID is $polygonId',
),
actions: <Widget>[
FlatButton(
onPressed: Navigator.of(context).pop,
child: Text('CLOSE'),
),
],
),
);
},
);
} else {
GoogleMap.of(key).editPolygon(
'1',
polygon,
fillColor: Colors.purple,
strokeColor: Colors.purple,
);
}

setState(() => _polygonAdded = true);
},

Information Demo :

ontap: () {
GoogleMap.of(key).addMarkerRaw(
GeoCoord(latitude, longitude),
info: 'test info',
onInfoWindowTap: () async {
await showDialog(
context: context,
builder: (context) => AlertDialog(
title: Text("Palace Info..."),
content:
Text('Latitude:$latitude\nLongitude:$longitude'),
actions: <Widget>[
FlatButton(
onPressed: Navigator.of(context).pop,
child: Text('CLOSE'),
),
],
),
);
},
);

},

Directions :

ontap: () {
GoogleMap.of(key).addDirection(
'San Francisco, CA',
'San Jose, CA',
startLabel: '1',
startInfo: 'San Francisco, CA',
endIcon:
'https://cdn0.iconfinder.com/data/icons/map-markers-2-1/512/xxx018-512.png',
endInfo: 'San Jose, CA',
);
},

Drawer

Light and dark mode :

To change the theme of the map GoogleMap class provides us changeMapStyle() method to change the style of the map. _darkMapStyle is a bool variable used to change the state of text, icon, and map style.

 ListTile(
leading: Icon(
Icons.wb_sunny,
color: _darkMapStyle ? Colors.deepOrange : Colors.black,
),
onTap: () {
Navigator.of(context).pop();
if (_darkMapStyle) {
GoogleMap.of(key).changeMapStyle(null);
_mapStyle = null;
} else {
GoogleMap.of(key).changeMapStyle(darkMapStyle);
_mapStyle = darkMapStyle;
}

setState(() => _darkMapStyle = !_darkMapStyle);
},
title:
Text(_darkMapStyle ? "Enable Light Mode" : "Enable Dark Mode"),
),

Move Camera Bound :

moveCameraBounds is a method used to move the maps camera from one

geo-coord to anothergeo-coord . It takes GeoCoordBounds() that is used to specify thenortheast, and southwest GeoCoord() . We are also displaying a marker on the specified location.

ListTile(
title: Text("Move camera bound"),
leading: Icon(
Icons.camera_enhance,
color: Colors.red,
),
onTap: () {
Navigator.of(context).pop();
final bounds = GeoCoordBounds(
northeast: GeoCoord(34.021307, -117.432317),
southwest: GeoCoord(33.835745, -117.712785),
);
GoogleMap.of(key).moveCameraBounds(bounds);
GoogleMap.of(key).addMarkerRaw(
GeoCoord(
(bounds.northeast.latitude + bounds.southwest.latitude) / 2,
(bounds.northeast.longitude + bounds.southwest.longitude) / 2,
),
onTap: (markerId) async {
await showDialog(
context: context,
builder: (context) => AlertDialog(
content: Text(
'This dialog was opened by tapping on the marker!\n'
'Marker ID is $markerId',
),
actions: <Widget>[
FlatButton(
onPressed: Navigator.of(context).pop,
child: Text('CLOSE'),
),
],
),
);
},
);
},
),

Clear Polygon :

clearPolygons() method clear all the drawn polygon on the map screen. polygon list is set to [] so that it also clear when all polygons are cleared.

ListTile(
title: Text("Clear Polygons"),
leading: Icon(
Icons.crop_square,
color: Colors.blue,
),
onTap: () {
GoogleMap.of(key).clearPolygons();
Navigator.of(context).pop();
setState(() {
polygon = [];
_polygonAdded = false;
});
},
),

Clear Marker :

clearMarker() method is used to clear all the markers from the maps.

ListTile(
title: Text("Clear Markers"),
leading: Icon(
Icons.location_off,
color: Colors.green,
),
onTap: () {
GoogleMap.of(key).clearMarkers();
Navigator.of(context).pop();
},
),

Clear Direction :

clearDirection()is used to clear all the directions from the map.

ListTile(
title: Text("Clear Directions"),
leading: Icon(
Icons.directions,
color: Colors.orangeAccent,
),
onTap: () {
GoogleMap.of(key).clearDirections();
Navigator.of(context).pop();
},
),

Github Link

flutter-devs/google_maps_demo
A new Flutter application. This project is a starting point for a Flutter application. A few resources to get you…github.com


If you find anything that could be improved please let me know, I would love to improve.💙

If this article has helped you a bit and found interesting please clap!👏


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! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter related queries.

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.

www.flutterdevs.com

Push Notifications vs. In-App Notification— An Approach to Customer Engagement

0

Targeted marketing is the most effective with a multi-channel approach, and the best mobile campaigns often use a combination of mobile push notifications and in-app messaging. That’s because the complementary channels each offer their own advantages and disadvantages.

Mobile is personal. It’s more tailored to user interests than any other before it, which means app marketing has to be less about blatant agenda pushing and more about targeted engagement.

App messaging techniques are a key part of this strategy, working to reach the user at the right time, with the right content, to engage him or her further. The two most important are push notifications and in-app messages. So, what’s the difference when it comes to your app marketing?

Push notifications are probably what comes to mind when you think of mobile app messaging; most marketers use it often because it’s an easy-to-implement industry standard. But since 2014, in-app notification has become much more widespread in mobile marketing. Used to highlight new features, showcase special offers, onboard new users, and more, in-app is a powerful tool to create more targeted, purposeful user sessions. Our research has shown that apps who use it see a 27% increase in app launches and a 3.5x increase in retention.

But when do you use push notification, and when is an in-app message the right call? Let’s discuss it!

A Quick Introduction

The Difference Between Push Notifications and In-App Notification

The two most important ways to deliver app messaging campaigns are push notifications and in-app messages. So, what’s the difference between in-app notification and push notifications?

What are Push Notifications?

Push Notifications allow you to deliver messages to the user’s home screen. It’s like an SMS message, but coming from an app instead of your mom. Traditionally, push notifications were solely text, but now, rich push notifications let mobile marketers include text as well as images, video, and sound. Great for prompting immediate interaction and engaging users not currently active in your app, push messaging directs attention to the desired action. Users who opt-in for push notifications are a high-value demographic, those users tend to engage with your app on a regular basis 88% more. But often, push messaging comes down to three key considerations:

  • Content
  • Frequency
  • Timing

In-App Messaging

Recently, in-app notification has become more common in mobile marketing. It can be used to draw attention to new features, highlight special offers, better onboard new app users, and much more. What’s more, in-app messages can deliver rich content like images and video too. Overall, in-app notification is a powerful tool to create more targeted user sessions. There are stats floating around the industry that say those who use in-app notification see around a 30% increase in uptake of app launches and a massive 4 times increase in app retention.

When To Use Push Notifications?

Push notifications are great for prompting immediate interaction and engaging app users who are not currently active in the app. A weather app sends push-notifications of severe weather, for example. Social media users receive notifications that someone has sent them a message. You can also consider this approach in these cases:

Transactional Updates

Notifications about order placements, delivery status updates, abandoned carts, payment success/failure, etc. are best served as push notifications as they need the users’ immediate attention.

Deliver Time-Sensitive Deals & Offer

Time-sensitive alerts and reminders are best sent via push notification, as users aren’t always in the app when important news needs to be relayed. For appointment reminders, low-funds account balance warnings, and last-minute travel changes, users need to be notified via the fastest channel possible.

App Related Updates

Whenever there are any updates in your app or new versions of the app, feature upgrades, service enhancements, etc, these can be communicated to the users with timely mobile push notifications. This conveys a straight message to the users that you are constantly improving the overall app usage experience.

Nudge Users

Push notifications are the best tools for nudging the app abandoners. With precision push notification service, brands can woo users back with customized messaging based on a variety of factors: a number of days inactive, best re-engagement times, response to previous re-engagement attempts, and previous in-app behavior.

When To Use In-App Messages?

You can use in-app messages to:

Help Users During the Onboarding process

With the advancements in the technology and creativity of the people, apps have become tricky and have complex features. Because of this, a process of onboarding has become fairly popular among the app makers and especially when there are changes in the UI. For example, many brands use in-app notification as part of its onboarding process or for walking users through design changes.

Offer Recommendations

There is a huge opportunity for cross-selling and upselling products when the user is active on the app. Giving smart recommendations based on the user’s search or buying history can be very beneficial for sales growth and customer life-cycle. In-app messages can do this job seamlessly.

Share App features & updates

Sometimes, users just forget about a feature. Sending an in-app message to point out the feature can give users more value out of the application.

Gather Feedback

Getting users’ feedback is usually complex. In-app messages for feedback sent right after a user experiences an update or beta feature can give brands some of the highest percentages of responses and the best feedback.

What’s Best For You?

The decision of what suits the best for your app depends a lot on your marketing and customer engagement strategies. How you plan to engage your users and increase retention.

Talking about Push Notifications, often, the decision of using push messaging comes down to the content, frequency, and timing of the messaging. If you get all three right then push messaging drives lapsed users back into your app and brings awareness to your mobile marketing campaigns. But wait, don’t misuse it. Push notification can be a strong tool to gain user attention but can also be the biggest reason for the app being uninstalled.

Note, Push Notifications can be irritating for the user and ineffective if they lack context or purpose. Overdo push notifications and you will risk an app uninstall.

When it comes to In-App Messaging, Due to its tailored style of triggering based on user interaction, it creates a more seamless progression from an app user’s initial session to the desired conversion. If it’s done well, in-app notification should feel like a natural part of the app.

But again, just like push notification, if in-app messages are not done right it can end up feeling too much advertising. Also, if the messages are not sent in real-time they can present irrelevant content.

The gist of it all comes down to one thing, that push notifications and in-app notification should go hand-in-hand to help you run highly efficient marketing campaigns. Smart marketing always knows the ways to combine the power of these two to get the maximum out of the app.

Wrapping Up

Both push notifications and in-app notifications are the next waves of communication for businesses. Research shows 7.33 billion people worldwide will own a smartphone by 2023, which means businesses must embrace mobile marketing methods to ensure a continued connection between brands and consumers.

At the end of the day, push notifications and in-app notifications each provide an invaluable opportunity to connect and re-engage users with your app. And, when done well, creative strategies can help boost app engagement and revenue.


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! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter related queries.

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: Auth using AWS Amplify In Flutter

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

Our Journey of Developing A Women Safety Mobile App in Flutter

0

Safety for women is one of the most pressing issues of our time that should have been a fundamental, undeniable concept for any civilized society centuries ago. Denying fundamental rights to safety, personal choices, freedom to pursue whatever lifestyle they wish to, sexual and physical empowerment are not new issues — but have strangely not managed to be eradicated even in today’s times.

A lot of people have been crying out loud for better ways to ensure women’s security and make things better for them. And it seems like, that people are definitely trying to do; something about it!

Now finally, there’s an app that promises to add its drop into the ocean to ensure safety for women that’s completely designed for the general public.

Here’s everything you need to know:

The App Itself

The need for a women safety and panic alert app is, unfortunately, increasing in the current societies across the world. One of the biggest roles that have been played in ensuring the safety of women, has to be the digital transformation and advancement in technology. Especially in the world where 3 out of every5 people have smartphones and use dozens of mobile apps every day.

Our app is an exceedingly useful alert and response solution based on the tracking of the location and sharing the coordinates with local authorities.

Let’s quickly take a look at the app’s best features and functions

  • There’s a one-time registration that requires the user(s) to fill out their details and that of the emergency contacts.
  • You need not even open the app to run it. On the mobile device even shaking the phone thrice will trigger the app to register it as an emergency.
  • Immediately, your emergency contacts, as well as the local security authorities, will be notified that you are possibly in an emergency situation along with exact GPS coordinates.
  • Simultaneously, the police control room/local authorities are also notified so that they can immediately take action, which will be ridiculously fast since they have your constant tracking location and can monitor your location in real life.
  • The location of the emergency will be shared by the police/authority admin to the security officer nearest to the emergency location.
  • Works 24/7

Some Unique Points

  • The app doesn’t require internet data/WiFi to work. In most emergency situations, users will not be in a position to have internet working or switch it on or wait for a signal, this is a unique factor the app.
  • The user can add a local crime/alert in the app so that people around that place can view the alert and take action.
  • The app has a feature to view alerts on the map with time, date, and pictures.
  • The user can also make use of a feature called “follow me” in an uncertain or suspicious place. This will leave breadcrumbs of the user’s location for the authorities to map.
  • The users can use a feature called “Follow me” to leave breadcrumbs of the
  • Real-time updates.
  • Works on all mobile networks.
  • Works on virtually all smartphones with GPS in them, which almost all smartphones already do.

Why Did We Choose Flutter To Make This App?

Whenever we’re building an app that is supposed to be targeting the vast majority of the people, the best development solution that comes to mind is building a Cross-Platform App. And when it comes to choosing the best cross-platform mobile app development frameworks, many app owners and developers must be wondering why we have chosen Flutter over various mobile frameworks like React Native, Angular Js, or Xamarin.

Let’s find out why

1. Multi-Platform Portability

The first thing you need to check is the cross-platform compatibility of the app development framework. And for an app like this, you always want to go to the framework that makes sure that your app will smoothly run on a different platform to reach a broader audience.

While Flutter, React and Xamarin will seamlessly run on both iOS and Android, these three have a specific set of plugins that permit them to run on different platforms.

However, with the launch of HummingBird on 7th May 2019, Google has added web support to the Flutter mobile applications that use a web view control and can load and display the content dynamically without rewriting the content.

2. Native Appearance

The native look and feel of an app is something that Flutter is promoting as its USP. While the performance is the sign of React Native Development is available for the world to peek in and explore, the reason why we use the Flutter framework is its feature to use the device’s native functionalities without using any 3rd party component.

3. Strong backend

Firebase is at the heart of Flutter. Firebase is Google’s mobile platform that provides a bunch of services, from cloud storage to real-time databases and Hosting & many more. Firebase is the absolute key to app success.

In a nutshell, Firebase is a collection of essential tools that can be complied with automated tools to make the app development process simple and ensure speedy delivery.

4. Multiple IDE Support

No matter how complex and broad you want your application, Flutter for app development has recently become a top choice of developers. WHY?

The reason being, Flutter provides excellent support for several IDEs and offers more comfort to the developers while developing a cross-platform application.

Usually, when developers start working with an IDE, they never want to switch to another IDE, so that’s where Flutters take the momentum and provides access to a massive number of IDEs including Android Studio, VC Code, IntelliJ, and many more.

Our Experience With The App

Building an app that is responsible for the safety of the users and ensures that the app will help them in emergency situations is a lot of responsibilities on the app and on the developers as well. An app like this can be very complex handling so many different user responses at the same time.

But, then our initial approach of building the app in Flutter made the challenges very easy and provided the support needed for building such an application.

Let’s discuss some of the ways how Flutter helped us in the journey of building this app

1. Configuration and Setup

Flutter’s setup process is much more straight and aligned as compared to React Native. Flutter has the benefits of automated system problem check-ups, something which is missed in a lot of frameworks to a great extent.

2. Improved Productivity

Developer’s productivity is the key to building apps faster. To achieve this, it’s very important to focus on app development without any kind of distractions.

The hot reload feature in the framework lets any changes made in the code of the app instantly visible to the developers on their screen without having to recompile the code, which in turn saves a lot of time and eventually improves the overall productivity.

3. Testing Support

The greatest way to get feedback on the code is by writing tests. There is always a testing work-frame associated with every mature technology to create unit, integration, and UI testing.

Flutter has great documentation and a rich set of testing features to test apps at the unit, widget, and integration level.

Flutter Platform — App Performance

Being a mobile app development company, we have had the experience of using most of the cross-platform tools and technology like React Native, Xamarin, and many more. And since flutter is still fairly new to the developer’s community, it was a chance that we took with Google-backed Flutter. And the results are beyond expectations.

It’s been more than a year since the app was launched and made public. The app is being used by thousands of live users and the performance it has shown since the first day has made us certain of the choice of building it in Flutter. The best of all is that the maintenance is not stress anymore, due to the single code-base, it becomes fairly easy to maintain the app on multiple platforms by just maintaining one set of code.

Need I say, Flutter is the best cross-platform mobile application framework. Give it a try!

Conclusion

Building an app that ensures the safety and security of its users comes with a ton of responsibilities. There is no room for any errors. In such scenarios, choosing the right development approach is the most important thing.

One must thoroughly research and then should come to a conclusion on why a specific technology or platform is the best suitable for all the key features and specifications. Flutter, in this case, has proven to be the best suitable framework which not only fulfills the technical requirement but also exceeds in a bunch of areas.

Our experience of using Flutter as our driving technology for mobile app development has been phenomenal. We have been building apps for more than 10 years now, we have seen and used a lot of cross-platform frameworks. But need I say Flutter is hands-down the best cross-platform mobile app development framework.

After using Flutter since it’s inception, we think it’s safe to say that it’s the future of mobile development. If not, it’s definitely a step in the right direction.


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! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter related queries.

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.

Dough Package For Smooshy UI Flutter

In Flutter there are different ways to design beautiful UI’s but what makes it User Friendly is its Responsiveness, Smoothness, and Squishiness. This Dough package provides this squishiness to your app where you design your app smooshy to gain user attention and make it smoothy to use.

Dough package provides different features in its package like dragging, pressable and you can also pause its shape when you are dragging or pressing any widget.

Why we need this?

Though there are numerous ways to make UI interactive and feature-rich, as a user every one wants new experiences. However, functionality is important in App but when as a user you find the same UI experiences you get kind of bored.

So as service providers we need to make our app functionality-rich as well as attractive. This Dough package is compatible with changes like for features you can override its features and behaviors according to your need.

Explanation

In its explanation part, we will just go through all kind of dough widgets which can fit into your existing widget and will make your widgets squishy smooth and draggable, in this package you get the kind of slow animation feel. So let’s have a look

Pressable Dough

PressableDough(
child: FloatingActionButton( ... ),
);

in Pressable Dough, you only need to wrap your widget with it as you can see in the below example we have used the DoughRecipe widget, in this widget, there are three options data, child, and key. In data, you can provide its viscosity and expansion value.

final doughWidget = DoughRecipe(
data: DoughRecipeData(
viscosity: 3000,
expansion: 1.025,
),
child: PressableDough(
child: centerContainer,
onReleased: (details) {
// This callback is raised when the user release their
// hold on the pressable dough.
print('I was released with ${details.delta} delta!');
},
),
);

https://gist.github.com/shivanchalaeologic/1c0b1e0ed8a414e5e364004e222a31c5#file-pressable_dough-dart

Draggable Dough

It allows you to drag and drop your widget when you drag your widget it shows its squishy nature.

DraggableDough<String>(
data: 'My data',
child: Container( ... ),
feedback: Container( ... ),
);

for example, you can see in the below code

https://gist.github.com/shivanchalaeologic/c7b234e156a81d50db37994a519b77ae#file-draggable_dough-dart

DraggableDough works like the Flutter draggable widget, and the only extra feature is it’s squishy! So you can just use the already built drag widgets that

Custom Dough Widget

If You want to customize your own widget you can do that by using native Dough widgets, Customization does not require any specific implementation.

You only need to just provide values according to your requirement.

DoughRecipe(
data: DoughRecipeData(
adhesion: 4,
viscosity: 250, // a more jello like substance
usePerspectiveWarp: true, // use for added jiggly-ness
perspectiveWarpDepth: 0.02,
exitDuration: Duration(milliseconds: 600),
...
),
child: PressableDough( ... ),
);

https://gist.github.com/shivanchalaeologic/350c6cd79790083b90da032be844a2ff#file-custom_drag-dart

Conclusion

Dough package is easy to use and implement its methods for beautiful UI representation are best in some contexts however it is still improving there will some new changes and improvements when it comes to the modification of the new feature, yet it is easy to use of beautification of UI.

dough | Flutter Package
This package provides some widgets you can use to create a smooshy UI. This package provides squishy widgets you can…pub.dev


Thanks for reading this article if you find anything that could be improved please let me know, I would love to improve.💙

If this article has helped you a bit and found interesting please clap!👏


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! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter related queries.

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: Developing packages in Flutter

Related: Managing State in Flutter with the State Rebuilder Library: A Comprehensive Guide

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

Android vs. iOS User behavior: How Does it Impact Mobile App Development?

0

The use of Smartphones has increased at an exponential rate across the modern world. Mobile applications have become an imperative part of mobile devices. A majority of the population of the contemporary world is making use of several mobile apps for their everyday functions; mobile app development is considered a very critical process.

Amid myriad mobile apps that are built and deployed, only a selected few succeed in gaining popularity with users and sustaining their repetitive visits. It is those apps that solve specific problems of users and offer the appropriate solution to the unique needs of users with a seamless user experience that finally succeeds. To be able to come up with such winning apps, developers and entrepreneurs need to understand user behavior analytics and the information gathered from it.

Significance of User Behaviour

What is inevitable in building and delivering a successful app is to understand details such as who the target user of a conceived app is and their preferences and requirements. Developing mobile apps is not like creating a piece of software. In order to come up with successful apps, you need to focus first on what problems of the users are you going to solve with your app. To be able to provide the solution, you must understand the target population at a granular level.

Users’ behavior and personality traits play a vital role in developing a mobile app that attracts and retains users. One way of discerning these factors is by checking the users’ choice of their Smartphone. The choice of the platform among the two major players, namely, iOS and Android which are different in several ways, speaks a lot about users’ specific interests and behaviors. This choice indicates important factors such as whether users are concerned about pricing, whether they take interest in downloading if they are prepared to pay a price for the app, whether they are loyal to some specific brand or not.

User Behaviour Factors That Impact Mobile App Development

Users’ preferences and behavior are representative of their idea about the mobile device as well as applications. By running user behavior analytics in a professional manner, developers and mobile app development companies may arrive at the right decision about choosing their app development platform.

User Preference

While building a mobile app, entrepreneurs and mobile app developers need to consider and understand clearly the interests and choices of users. It is to be noted here that iOS and Android have to be used for targeting entirely different groups of users. While iOS is for users who can spend money easily to buy apps, Android is meant for people in the lower-middle-income group. If acquiring a customer base is your agenda, you need to go in for Android while for revenue generation, iOS is the best bet.

The Role Played by Device Capabilities

Smartphone users view their devices in a personal way. The difference in operating systems has a direct bearing on the user experience. This is one factor that influences the choice of a particular OS by users. Apple’s iOS has stringent regulations for push notifications, timeframe for system updates, and app submissions. In the case of Android, the submission of apps may be performed freely and in a customizable manner.

User’s Spending Tendency

Although the once large gap in consumer spends between Android and iOS users is witnessed to have become smaller, iPhone users are still making more purchases when compared to Android users. While iOS provides opportunities for generating revenue through paid apps, Android apps are seen to draw revenue from mobile advertising.

App Engagement and Retention

One of the key factors that impact the success of the mobile app, is considering the app engagement and retention while planning to build the app. It is common that iOS users are more likely to be engaged with apps and they also usually have higher retention. Android users being not so consistent with app engagement, developers have to face the challenge of building apps that enhance retention rate.

User Demographics

It is well known that Android has more market share than iOS. Good user experience under affordable pricing is the main reason for this. Users’ preferences and spending habits play a vital role in deciding which platform to make use of. Income and location are a few crucial factors that need to be considered while creating a mobile app.

Android Vs iOS App Development: Capabilities

Each OS comes with different capabilities that could impact your final product. Consider how the OS differs for the end-user to build the best possible app on the best possible platform.

Latest Version

Both iOS and Android have grown up into dashingly-handsome operating systems with a lot to offer. Here’s what the latest versions have to offer:

iOS 13 Key Features

  • Dark Mode
  • Better Photo App
  • Improved Portrait Mode
  • CarPlay
  • Siri Update
  • 3d Maps
  • Performance boost

Android 10 Key Features

  • Live Caption
  • Smart Reply
  • Better Gesture Navigation
  • Focus Mode
  • Dark Theme
  • More Privacy Controls
  • Immediate Security Updates
  • Family Control

Customizability

One of the most noticeable differences between iOS and Android is customizability. Apple keeps things simple: you use what we allow you to. Users can customize wallpaper, but that’s about it. Even the default browser is locked into Safari: third-party browsers are forced to use the Safari rendering engine, which makes them slower.

Android, on the other hand, lets users customize just about anything and makes the device feel much more personal to the user as they can customize it according to their preferences. Users can change their SMS Client, edit their lock screen, or even add a custom ROM. As a result, Android gives you a lot more room to build a customizable experience for your user.

Security

Apple devices have developed a reputation for security. While iOS is hardly virus-proof, it remains remarkably secure. The big difference is that iOS is much more closed off than Android. While Android is entirely open-source, Apple’s source code is hidden. Since iOS is a closed system, security threats are pretty rare.

Android, on the other hand, lags behind in security. Even though Google releases security updates every month, device manufacturers tend to push updates a bit late. As a result, many Android devices run a slightly-outdated version of the OS. In the event of a major security update, this lag can be a big security issue.

The Verdict

As long as the web world exists, Android and iOS platforms for mobile app development will always be dominant. Though brands are constantly looking out for mobile applications that can be developed and deployed on both Android and iOS mobile devices, operating constraints, time and costs make developers and software companies choose a platform that suits one better than the other. Which justifies the immense popularity of cross-platform mobile applications in technologies like Flutter, React Native, etc.

An efficient app development process must consider the needs of users and their problems at ground level and perform diligent user behavior analytics to be able to provide the perfect solution to users.

The best decision would be to consider both platforms that can help you achieve a wider customer base. But if constraints are prevalent, a clear understanding of both platforms is a must for improved business value. In this case, the above-featured factors can help you choose the most suitable platform.


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! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter related queries.

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.

How to Reduce The Mobile Application Development Cost

0

The competition in the app market is too high for you to compromise with the quality of your app. There are a plethora of high-quality apps that are built every year and still remain unnoticed. But with high quality comes high costs and when we say high costs, we mean it. This may be a reason why most people avoid app development altogether — which, in turn, does more harm than benefiting.

The world is going mobile rapidly so it becomes important to make your place in the same world. Businesses have doubled their revenues and sales with the help of their mobile app. So, when you see it from a birds-eye view of the long term benefits, these initial investments seem quite worth it.

However, mobile app development costs can still be high for startups since the capital is limited and there is not much to offer. But that shouldn’t stop any startup from reaping the benefits of having an app, right? For the same, we figured out some great strategies to help you reduce app development costs.

There are many ways to cut the cost of your mobile app development without compromising the quality of the app. Let’s have a deeper dive into the various factors that significantly influence mobile app development costs.

It’s All About the Requirements

The first and foremost tip is, make sure to write clear and in-detail requirements about your app development project. By writing a detailed document, you can clearly communicate about your requirements with the app developer that will save their time and effort. So put your thoughts of the app together in an organized yet elaborated manner.

Let’s take an example of our client, who wanted to develop a Women Safety application. Our client contacted us and shared the document, containing requirements about the project. Our client was very clear about his concept, so our business representative instantly understood the concept. In fact, our professional app developers did not face any challenge while developing this app and completed this project in a tight budget and time constraint.

So, if you yourself don’t have a requirement document, that just means you are not clear what you want in the app, which will lead to numerous changes in the app, resulting in an increase in the development time and cost. Make sure to gather your requirements and note down those requirements in the document so that the development team or company gets a clear picture in mind.

A product requirement document, also called a PRD, is a highly-structured list of your app features as well as the projected tech stack. Here are some key PRD components:

  • Project objectives and product idea
  • Company background
  • Timelines
  • App features
  • Platforms
  • UX and UI design (or requirements for it)
  • Project execution milestones and control points

Outsource Or In-House

Hiring dedicated developers and outsourcing the project to them remains a favorite cost-saving strategy of both large- and medium-scale enterprises.

Mobile app development outsourcing will save money for you in the long run. Your project will be managed by experienced developers, and the overall quality will be superior. It gives you various options & you can choose the best suited for your project. You can either go for a fixed budget, or you can also go for an hourly basis payment model.

If you compare this with the cost of hiring an in-house team of developers, it will cost you much less. You can’t ignore in-house expenses such as electricity bills, internet bills, and other utilities other than fixed salaries.

Choose Cross-Platform Development

There are two approaches to creating apps in mobile development — native applications for each specific platform and cross-platform applications that are supported by all modern OS.

Native Applications are considered the most expensive to build from an investor’s standpoint. The clear reason being writing code separately for each operating system, Android & iOS. Whereas in the cross-platform application development process, a single code is written for application to run on multiple operating systems.

Less Development Time equals Less Development Cost.

If you are building your first mobile app, and don’t know where to start, you can take a look at this article.

A Complete Guide to Build Your First Mobile App
Imagine, you woke up one fine day and you have an idea of an amazing app that can bring revolutionary changes, and you…medium.com

Start With MVP

MVP (Minimal Viable Product) can be simply defined as the most basic version of the app that solves the problem. MVP holds a massive prominence in the app industry, especially among startups that are looking to validate their ideas in the market.

It is one of the quickest and most utilized approaches for businesses around the world to validate their idea. Employing an MVP to test their idea into the market is a tremendous quickstep to avoid potential disappointment.

But how will it reduce the cost? Well, something that I can tell you being a part of an app development company is that the more features and functionalities you add in your application, the greater will be the resources that will go behind its development, which means the cost will be greater. MVPs are undoubtedly the best bet for any startup.

What this means is that rather than developing a full-fledged app, the cost of MVP will certainly be less than half.

Keep it Simple!

You must analyze practically the features of your application and the real purpose of creating an app. If you do not need it, do not go! It’s that simple!

When we talk about the overall design of the app, you need to be pretty sure that it should not be cumbersome so that user participation becomes a challenge. So; on your side, you need to do a little analysis of the real needs of the users so that you can project big by little.

The design of the application must be simple but attractive to maximize the number of downloads. Keep UI/UX Simple — One of the strategies to reduce app development costs is to go for simple yet elegant designs. A good UI/UX design is essential, especially for new users since adaptation becomes easy.

Now let’s understand how FlutterDevs as a Mobile App Development Company helps our client reduce their development cost without compromising on the quality even a bit.

This Is How FlutterDevs Operate: Our Process

Once you have an idea for implementation, the most important factor is to check it’s Technical and Economical feasibility.

In technical feasibility analysis, your concepts will be analyzed by our technical experts to check if it technically possible or if it has some challenges.

In economical feasibility, the project is analyzed for its budget. A lot of times the complexity of the project can increase the budget which should be kept in consideration and the client should know about this.

At FlutterDevs, our expert team members Do Free Technical and Economical Feasibility Interactions, so that the client knows about the product before investing their money.

Final Words

Despite the fact that professional app creation isn’t cheap, by following our advice, you can reduce the cost of mobile app development without losing the quality of the final product. You can do a lot of cost-cutting in various ways. But, the most important factor which will control all the above factors in selecting the right mobile app development team. Your app efficiency can be optimized and you can get a fully tested high performing app from the day-0.


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! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter related queries.

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.

Building a Secured Flutter Application

0

Demo of Application ::

Demo.gif

Introduction

In this blog, we shall learn how to build a secured app that doesn’t allow screenshots, video recording of the app. Also when the user exits the app temporarily he has to pass local auth i.e. fingerprint to access the app content.

Safety and privacy of the user’s data have become very important, also very frequently we hide our phone when we are dialing any private content eg. Bank Details, messages, etc to protect our content from the nearby people. We can now close our app temporarily and next time anyone opens it he won’t be able to access ore content neither he can take screenshots and record video.


Table of content

Dependencies used

Setting up our project

Local Auth

Securing application

Github Link


Dependencies used::

We shall use secure_application package to implement the functionality of “no screenshots”, “no video recording”, “prevent unauthorized access”.

secure_application | Flutter Package
This plugin allows you to protect your application content from view on-demand Plugin in iOS is in swift Plugin in…pub.dev

To prevent unauthorized access we shall use the local_auth package to provide a gateway to get the access the app content as many times the user closes the app temporarily.

local_auth | Flutter Package
This Flutter plugin provides a means to perform local, on-device authentication of the user. This means referring to…pub.dev

Note: secure_application proves us a blur screen to prevent unauthorized access and we will use local_auth logic to pass the authentication. You will understand better while we will build logic.

Setting up our project::

Edit your Android Manifest file.

<uses-permission android:name="android.permission.USE_FINGERPRINT"/>

import:

import 'package:local_auth/auth_strings.dart';
import 'package:local_auth/local_auth.dart';
import 'package:secure_application/secure_application.dart';

Local Auth ::

Go Through the Local Authentication Blog or you can just copy source code to get started —

Local Authentication in Flutter
Local Authentication in Fluttermedium.com

Securing Your Application ::

import ‘package:secure_application/secure_application.dart’;

provides us SecureApplication, SecureGate class to protect our application. SecureGate is used inside SecureApplication.

class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
@override
void initState() {
super.initState();
}
@override
Widget build(BuildContext context) {
return SecureApplication(
child: SecureGate(
),
);
}
}

SecureGate takes a child, lockedBuilder to pass the widget that will be displayed on the screen and widget that will be displayed at the time of authentication respectively.

lockedBuilder display a blur screen and it takes a widget that will use to pass our fingerprint logic using a button.

lockedBuilder: (context, secureNotifier) => Center(
child: FlatButton(
color: Colors.cyan,
child: Text(
'UNLOCK WITH FINGERPRINT',
style: TextStyle(color: Colors.white),
),
onPressed: () async {
//local auth logic
authenticated
? secureNotifier.authSuccess(unlock: true)
: print("fail");
     //local auth logic start
},
),
),

Most important part is the last line logic i.e.

authenticated
? secureNotifier.authSuccess(unlock: true)
: print("fail");

authenticated returns true if local auth is successful and false if it fails. secureNotifier is a SecureApplicationController and authSucesss() method confirms the auth is successful or not.

SecureApplicationProvider provides us various methods to control the app state. If the app is not secured then HomePage() will be returned and if it is not secured then the fingerprint authentication screen will be displayed.

This logic of child will work for the first time when the user will open the app. After that user will log in through fingerprint and during that the app will be secured through SecureApplicationProvider.of(context).secure() .

authenticated ? SecureApplicationProvider.of(context).secure()
: print("fail");

The above logic will set the app secure only if the local auth is successful.

child: Builder(builder: (context) {
return ValueListenableBuilder<SecureApplicationState>(
valueListenable: SecureApplicationProvider.of(context),
builder: (context, state, _) => state.secured
? MaterialApp(home: HomePage())
: Scaffold(
body: Center(
child: RaisedButton(
onPressed: () async {
//local auth logic
                 authenticated
? SecureApplicationProvider.of(context).secure()
: print("fail");
},
color: Colors.cyan,
child: Text(
'UNLOCK WITH FINGERPRINT',
style: TextStyle(color: Colors.white),
),
),
),
),
);
}),

HomePage and NewPage ::

class HomePage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Secure App demo"),
),
body: Center(
child: RaisedButton(
onPressed: () {
Navigator.of(context).push(MaterialPageRoute(builder: (_) {
return NewPage();
}));
},
child: Text("Test on new page"),
),
),
);
}
}

class NewPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: Text("New PAGE")),
body: Center(child: Text("Hello")),
);
}
}

Main Dart File ::

https://gist.github.com/anmolseth06/083670bbf3bce03283d364cd34148b4d#file-main-dart

Github Link ::

flutter-devs/secure_flutter_App_Demo
A new Flutter application. This project is a starting point for a Flutter application. A few resources to get you…github.com

If you find anything that could be improved please let me know, I would love to improve.💙

If this article has helped you a bit and found interesting please clap!👏


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! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter related queries.

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: Building Custom Widgets from Scratch

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

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

Things to do for App Engagement and User Retention

0

Simply put — mobile app engagement is providing your users with a reason to keep coming back to your mobile app or open your mobile app and perform the desired action. You must create an engagement strategy that boasts high-quality communication.

As well as this, you must use the data, analytics, and insights from your users to help you to learn which part of your app engagement strategy is working the best.

App engagement is all about putting the user needs first. There’s no quick fix. It involves defining your essential app KPIs. Then creating an app communication strategy that is relevant to your mobile audience.

What are the most common metrics and KPIs?

Active Users

This is a crucial metric for app developers, and it’s kind of the going currency in the world of apps. This metric will help you to understand how useful and important your app is by identifying how many users come back to your app.

This can be done on a daily basis or on a monthly basis. Both are, but daily active users is a sign of a genuinely engaging app.

Retention Rate

This metric tells you, as an app developer, what percentage of customers are coming back to your app. On the flip side, you’ll be able to see how many users you are letting go of.

The periods that you are comparing will be dependant on the insights that you want. Should you compare MAUs to last month’s active users, or should you compare it to the previous year?

With retention rate calculations, it’s essential to look at the metric you are measuring. For some apps, it will make more sense to measure logins rather than only app usage.

Session Length

This metric is the amount of time that a user spends in your app each time they open it. This is an excellent indicator of app engagement as time spends in each app is one of the key ways to tell how useful your app is to a user.

Depending on your app, it might make sense to focus on this metric rather than DAUs.

Push Notifications

Push notifications are one of the most effective ways to engage your app users. But, if misused, they are one of the quickest methods to app deletion. The truth is that many mobile apps seeking to engage their users fall into the second category.

So how often should you send push notifications to your users?

With push notifications, it’s about providing the most value to your app audience. If your mobile users are getting value from your app, then they are going to be more engaged.

That sounds obvious, yet so many app engagement strategies fail to consider it. There are so many push notification services that claim that quantity is key to boosting engagement. But, this will very quickly have a negative effect if you don’t consider personalization and relevancy in your push notification strategy.

It’s also vital to understand push notification statistics when trying to engage your audience.

So, let’s look at how you can engage your mobile app users by building a push notification strategy.

Think about your App Experience

A note on personalization — ultimately, your app engagement metrics will improve if you place personalization at the heart of your app engagement strategy.

This means that you need to think of the user at every point in the user journey. If you want to take your app engagement to new heights, then you’ll have to personalize the user experience, clearly define your app’s KPIs and learn how your users want to engage with your app.

But that’s only the first part. How do you keep learning what your app users are engaging with and what elements of your strategy in performing best? Well, that leads me nicely onto…

Regularly upgrade the UI

Once you start seeing your mobile app as a living thing that, like all living things, needs care and attention to grow and evolve, you’ll start addressing the UI more.

In other words, you’ll regularly update it.

When you upgrade the UI, do it based on the needs of your users. What are their needs? To find out, do what we suggested above — gather feedback.

The more upgrades you carry out, the smoother and easier your app will be to use — and the more your engagement and retention will increase.

However, it is normal to have minor bugs upon launch. But if your app lags, crashes, or has slow load times — these factors are all unacceptable to users and your retention rate and other metrics will suffer.

Let’s Conclude

Think about which app engagement metric is most important to you. Clearly define which aspects of your app engage your users. Place the user first. Think about providing value to your users rather than communicating with them for the sake of it. Use highly personalized notification to engage your users in the best in-app micro-moment. Re-engagement can be the most effective way to improve your app revenue or bottom line. Take a data-centric approach to engagement. Always be ready to hypothesize and learn from your engagement data.

Follow these rules and you’ll be well on your way to creating a mobile app engagement and retention strategy that works for your app.


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! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter related queries.

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.

How to build a music player in Flutter 2026

Things that you may likely learn from the Blog :

Before starting the blog let me tell you what you can learn from this blog:-

In this blog, you will learn how to implement a music player into your flutter app.

  • How to fetch the music from external storage, play from assets file , how to play the music using a URL(internet).
  • Controlling the volume of the music player.
  • How to pause and play the song.

Demo of App ::

DEMO.gif: {Working gif of module}

Video :

new.mp4
Edit descriptiondrive.google.com


Introduction

Music is a language of emotions. Music apps have become an apparent hit and need of the times. Users are using different music apps to listen up to their favourite songs to help them relieve stress or in Improving their creative ability.

As an app developer, you must make some apps that you can use in your daily life. So I tried to make a personal music app, hoping that you will also like it. In this blog, I will help you to build your basic music app using flutter.😊😊

Table of content::

  1. Packages used
  2. Setting up the project
  3. Playing music using the internet and assets
  4. Fetching music files from our external storage.
  5. Setting up the audio
  6. Creating a Control panel
  7. GitHub Link

Packages used::

We will use flutter_audio_query to fetch the music form our external storage(eg. mobile phone, memory card, etc).

flutter_audio_query | Flutter Package
A Flutter plugin, Android only at this moment, that allows you query for audio metadata info about artists, albums…pub.dev

audio_manager package provides us various methods and functions to implement functionality in our app such as play, pause, seek, inc. or dec. volume.

audio_manager | Flutter Package
A flutter plugin for music playback, including notification handling. This plugin is developed for iOS-based on…pub.dev

Setting up the project::

import the packages

import 'package:flutter_audio_query/flutter_audio_query.dart';
import 'package:audio_manager/audio_manager.dart';

Modify your AndroidManifest.xml

<application
...
android:usesCleartextTraffic="true"
...
>

Modify your build.gradle file.

defaultConfig {
minSdkVersion 23
}

Playing music using internet and assets::

Creating an audio manager instance

var audioManagerInstance = AudioManager.instance;

Playing music using the start method

AudioManager provides us start() method to play the music. It takes a URL, title, description, cover, and auto.

onTap: () {
audioManagerInstance
.start("song URL", "song title",
desc: "description",
auto: true,
cover: "cover URL")
.then((err) {
print(err);
});
},

To play the music file using assets file you just need to change the song URL to assets file path.

onTap: () {
audioManagerInstance
.start("assets/music.mp3"song title",
desc: "description",
auto: true,
cover: "assets/cover.png")
.then((err) {
print(err);
});
},

Fetching music files from our external storage::

To fetch the music files form the external storage we will use a FutureBuilder as FlutterAudioQuery returns a future . This class provides us various methods such as getSongs, getSongsFromArtist , getSongsFromAlbum , getSongsFromArtistAlbum , etc.

To keep the logic simple and sleek we will only use getSongs method. You can use as many as you want.

FutureBuilder(
future: FlutterAudioQuery()
.getSongs(sortType: SongSortType.RECENT_YEAR),
builder: (context, snapshot) {
List<SongInfo> songInfo = snapshot.data;
if (snapshot.hasData) return SongWidget(songList: songInfo);
return Container(
height: MediaQuery.of(context).size.height * 0.4,
child: Center(
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircularProgressIndicator(),
SizedBox(
width: 20,
),
Text(
"Loading....",
style: TextStyle(fontWeight: FontWeight.bold),
)
],
),
),
);
},
)

SongWidget

To play the music from the external memory we require a path of that song. SongInfo class provides us filePath property to get the path of the music file.

onTap: () {
audioManagerInstance
.start("file://${song.filePath}", song.title,
desc: song.displayName,
auto: true,
cover: song.albumArtwork)
.then((err) {
print(err);
});
},

https://gist.github.com/anmolseth06/11a33c09b1b4f085494835b1b55bb263#file-songwidget-dart

Setting up the audio::

This is the most important part, because this contolles various events of audio.

void setupAudio() {
audioManagerInstance.onEvents((events, args) {
switch (events) {
case AudioManagerEvents.start:
_slider = 0;
break;
case AudioManagerEvents.seekComplete:
_slider = audioManagerInstance.position.inMilliseconds /
audioManagerInstance.duration.inMilliseconds;
setState(() {});
break;
case AudioManagerEvents.playstatus:
isPlaying = audioManagerInstance.isPlaying;
setState(() {});
break;
case AudioManagerEvents.timeupdate:
_slider = audioManagerInstance.position.inMilliseconds /
audioManagerInstance.duration.inMilliseconds;
audioManagerInstance.updateLrc(args["position"].toString());
setState(() {});
break;
case AudioManagerEvents.ended:
audioManagerInstance.next();
setState(() {});
break;
default:
break;
}
});
}

initializing setupAudio

void initState() {
super.initState();
setupAudio();
}

Creating a control pannel::

This panel has a playpause button, previous button, next button, and a songProgress Slider .

Widget bottomPanel() {
return Column(children: <Widget>[
Padding(
padding: EdgeInsets.symmetric(horizontal: 16),
child: songProgress(context),
),
Container(
padding: EdgeInsets.symmetric(vertical: 16),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: <Widget>[
CircleAvatar(
child: Center(
child: IconButton(
icon: Icon(
Icons.skip_previous,
color: Colors.white,
),
onPressed: () => audioManagerInstance.previous()),
),
backgroundColor: Colors.cyan.withOpacity(0.3),
),
CircleAvatar(
radius: 30,
child: Center(
child: IconButton(
onPressed: () async {
if(audioManagerInstance.isPlaying)
audioManagerInstance.toPause();
audioManagerInstance.playOrPause();
},
padding: const EdgeInsets.all(0.0),
icon: Icon(
audioManagerInstance.isPlaying
? Icons.pause
: Icons.play_arrow,
color: Colors.white,
),
),
),
),
CircleAvatar(
backgroundColor: Colors.cyan.withOpacity(0.3),
child: Center(
child: IconButton(
icon: Icon(
Icons.skip_next,
color: Colors.white,
),
onPressed: () => audioManagerInstance.next()),
),
),
],
),
),
]);
}

Song Duration

This function is used to format the duration of the song this is in millisecond format, we will convert it into this format 00:00 .

Here format is a string 00:00 . _formatDuration takes the duration of the song. If the duration is null then it returns — : — otherwise it returns the duration in the given format.

String _formatDuration(Duration d) {
if (d == null) return "--:--";
int minute = d.inMinutes;
int second = (d.inSeconds > 60) ? (d.inSeconds % 60) : d.inSeconds;
String format = ((minute < 10) ? "0$minute" : "$minute") +
":" +
((second < 10) ? "0$second" : "$second");
return format;
}

SongProgress

Widget songProgress(BuildContext context) {
var style = TextStyle(color: Colors.black);
return Row(
children: <Widget>[
Text(
_formatDuration(audioManagerInstance.position),
style: style,
),
Expanded(
child: Padding(
padding: EdgeInsets.symmetric(horizontal: 5),
child: SliderTheme(
data: SliderTheme.of(context).copyWith(
trackHeight: 2,
thumbColor: Colors.blueAccent,
overlayColor: Colors.blue,
thumbShape: RoundSliderThumbShape(
disabledThumbRadius: 5,
enabledThumbRadius: 5,
),
overlayShape: RoundSliderOverlayShape(
overlayRadius: 10,
),
activeTrackColor: Colors.blueAccent,
inactiveTrackColor: Colors.grey,
),
child: Slider(
value: _slider ?? 0,
onChanged: (value) {
setState(() {
_slider = value;
});
},
onChangeEnd: (value) {
if (audioManagerInstance.duration != null) {
Duration msec = Duration(
milliseconds:
(audioManagerInstance.duration.inMilliseconds *
value)
.round());
audioManagerInstance.seekTo(msec);
}
},
)),
),
),
Text(
_formatDuration(audioManagerInstance.duration),
style: style,
),
],
);
}

Github link::

flutter-devs/music_app_demo
A new Flutter application. This project is a starting point for a Flutter application. A few resources to get you…github.com


If you find anything that could be improved please let me know, I would love to improve.💙

If this article has helped you a bit and found interesting please clap!👏


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! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter related queries.

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.