Google search engine
Home Blog Page 30

Liquid Swipe Animation In Flutter

0

It’s very much-structured animations cause a UI to feel progressively natural, add to the smooth look and feel of a cleaning application, and improve the user experience. Flutter’s movement bolster makes it simple to actualize an assortment of animation types. Numerous widgets, particularly Material widgets, accompany the standard movement impacts characterized in their plan spec, but on the other hand, it’s conceivable to redo these impacts.

In today’s article, I am going to explore Liquid Swipe Animation in Flutter. We will show a demo program to integrate a liquid Swipe animation into your flutter application. Liquid Swipe animation is impressive, and it was Created for the Andriod Platform, iOS Platform, and React Native Platform.

Table of Contents:

Liquid Swipe Animation — Introduction

Implementation — Setup Configuration

Code Implementation

Code File

Conclusion



Liquid Swipe Animation

Liquid Swipe animation is a movement on the screen that has a water-like feel. These animations, as often as possible, have a moderate, flowy development that may wave or repeating designs. (Furthermore, that is what makes it work; liquid swipe animation needs to feel realistic.) Liquid swipe animation may create results as a floating state or swiping action.

This method has genuinely begun to detonate in prevalence, for the most part since ioS, Andriod, and Web devices can render the strategy productively. For this animation, we are will Need liquid_swipe Package. Liquid Swipe is the Unveils a New Page like Liquid Animation

liquid_swipe | Flutter Package
This repository contains the Liquid Swipe source code. Liquid Swipe is the revealing clipper to bring off amazing…pub. dev

Implementation :

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies:

liquid_swipe: ^latest version

Step 2: Add Assets

Add assets to pubspec — yaml file.

We will add images in the assets folder

assets:
- assets/

Step 3: Import

import 'package:liquid_swipe/Helpers/Helpers.dart';
import 'package:liquid_swipe/liquid_swipe.dart';

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

Step 5: Enable AndriodX

Add this to your gradle.properties file:

org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true

How to implement code in dart file:

You need to implement it in your code respectively:

Liquid Swipe Setup

In the LiquidSwipe() method we need to add pages, enbaleloop, fullTransitionValue, enableSlideIcon, waveType, positionSlideIcon.

body:LiquidSwipe(
pages: page,
enableLoop: true,
fullTransitionValue: 300,
enableSlideIcon: true,
waveType: WaveType.liquidReveal,
positionSlideIcon: 0.5,
),

After that, Create three Container for 3 Pages where we will Create Container widget For Each Separate pages.

final pages = [
Container(...),
Container(...),
Container(...),
];

First Screen

In this screen, we will add a gradient color and show two fields of E-mail and Password.

Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
stops: [0.1, 0.4, 0.8, 1],
colors: [
Color(0xFF4563DB),
Color(0xFF5B16D0),
Color(0xFF5036D5),
Color(0xFF3594DD),
],
),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
CircleAvatar(
radius: 70,
backgroundImage: AssetImage("assets/fruit.jpg"),
),
SizedBox(height: 15,),
Text("Flutter Liquid Swipe Demo",style: TextStyle(
fontWeight: FontWeight.bold,fontSize: 20,color: Colors.white),),
SizedBox(height: 15,),
Card(
margin: EdgeInsets.symmetric(vertical: 10,horizontal: 25),

shape: RoundedRectangleBorder(
borderRadius: BorderRadius
.circular(20.0)),
color: Colors.white,
child: Padding(
padding: const EdgeInsets.all(15.0),
child: Row(
children: <Widget>[
Icon(Icons.email,color: Colors.black,),
SizedBox(width: 10,),
Text("user@gmail.com",style: TextStyle(
color: Colors.black,fontSize: 17,fontWeight: FontWeight.bold),),
],
),
),
),
Card(
margin: EdgeInsets.symmetric(vertical: 10,horizontal: 25),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius
.circular(20.0)),
color: Colors.white,
child: Padding(
padding: const EdgeInsets.all(15),
child: Row(
children: <Widget>[
Icon(Icons.lock,color: Colors.black,),
SizedBox(width: 10,),
Text("*******",style: TextStyle(
color: Colors.black,fontSize: 17,fontWeight: FontWeight.bold),),
],
),
),
)

],
),
),

Second Screen

On this screen, we will show some foods item in detail.

Container(
color: Colors.cyanAccent[100],
child: Column(
children: <Widget>[
Container(
width:420,
child: Image.asset("assets/food.jpeg",fit: BoxFit.cover,)),
Padding(
padding: const EdgeInsets.all(15.0),
child: Column(
children: <Widget>[
Text("Foods Item",style: TextStyle(
fontWeight: FontWeight.bold,fontSize: 20,color: Colors.blueGrey[800]),),
],
),
),
SizedBox(height: 20,),
ListTile(
leading:Container(
width: 90,
height: 150,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
image: AssetImage("assets/pizza.jpeg"),
fit: BoxFit.cover,
),
),
),
title:Text("Pizza",style: TextStyle(
fontWeight: FontWeight.bold,fontSize: 16,color: Colors.black),),
subtitle: Text("Pizza is the world’s greatest food. Nothing says “I love you,” “I’m sorry,” or “Let’s be friends,” better than pizza.",style: TextStyle(
fontSize: 16,color: Colors.grey),),
),
SizedBox(height: 20,),
ListTile(
leading:Container(
width: 90,
height: 150,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
image: AssetImage("assets/pasta.jpg"),
fit: BoxFit.cover,
),
),
),
title:Text("Pasta",style: TextStyle(
fontWeight: FontWeight.bold,fontSize: 16,color: Colors.black),),
subtitle: Text("A super quick, healthy and delicious pasta that can de whipped up under\n15 minutes.",style: TextStyle(
fontSize: 16,color: Colors.grey),),
),
SizedBox(height: 20,),
ListTile(
leading:Container(
width: 90,
height: 150,
decoration: BoxDecoration(
shape: BoxShape.circle,
image: DecorationImage(
image: AssetImage("assets/chili.jpeg"),
fit: BoxFit.cover,
),
),
),
title:Text("Chilli Potato",style: TextStyle(
fontWeight: FontWeight.bold,fontSize: 16,color: Colors.black),),
subtitle: Text("Chilli potato is a Indo chinese starter made with fried potatoes tossed in spicy, slightly sweet & sour chilli sauce. ",style: TextStyle(
fontSize: 16,color: Colors.grey),),
),

],
),
),

Third Screen

In this screen, we will show an order success and deliver an order status.

Container(
color: Color(0xFFE7D6F8),
child: Column(
children: <Widget>[
SizedBox(height: 10,),

Image.asset("assets/delivery_man.png"),
SizedBox(height: 30,),
Text('Order Success',
style: TextStyle(
fontSize: 22.0,
color: Colors.black,fontWeight: FontWeight.bold),overflow: TextOverflow
.ellipsis,),
SizedBox(height: 10,),

Text("Now, you're connect directly\nwith your order, lets check the detail\nJust wait your service here",
style: TextStyle(
fontSize: 16.0,
color: Colors.white),overflow: TextOverflow
.ellipsis,textAlign: TextAlign.center,),
],
),
),

Code File

https://gist.github.com/ShaiqAhmedkhan/1e73d999083a9ed0a7805d854a4bc3e3#file-my_home_page-dart

You will see a full code on GitHub, this is a small demo program to integrate with Liquid Swipe Animation, and the below video shows how Liquid Swipe Animation will work.

Conclusion:

Liquid Swipe animation is a significantly trending design procedure. Movement can help keep clients inspired by your UI design longer and furnish one more motivation to collaborate with content. This Ui plan method should look basic and reasonable. Excessively fast movements.

In the article, I have explained the basic architecture of Liquid Swipe Animation you can modify this code according to your choice, and this was a small introduction of Liquid Swipe Animation from my side and its working using Flutter.

I hope this blog will provide you with sufficient information in Trying up Liquid Swipe Animation in your flutter projects. This is a demo program that will integrate Liquid Swipe Animation in a flutter, So please try it.

❤ ❤ Thanks for reading this article ❤❤


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

Clap 👏 If this article helps you.

find the source code of the Flutter Liquid Swipe Animation Demo:

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


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 a 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 FacebookGitHubTwitter, 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.


Explore RangeSlider In Flutter

0

Flutter lets you make lovely, natively assembled applications. The explanation Flutter can do this is Flutter adores Material. As UI configuration keeps on advancing, Material keeps on refreshing its segments, movement, and plan framework. The range slider, an exceptionally adaptable portion for choosing a range of value, has been released in Flutter 1.7.

Flutter recently updated the RangeSlider widgets to the latest Material guidelines. This article explores the changes to the RangerSlider widgets and uses in your flutter application.

Table of Contents:

Range Slider— Introduction

Components

Code Implementation

Use Custom Shapes

Code File

Conclusion



Range Slider

Range sliders have two determination focuses that consider an adaptable change of minimum and maximum value points. This adaptability makes it a valuable segment, for example, when a client likes to control a particular range, for example, showing value focuses or a time.

Components

Range Slider consist of five parts show in above image:

  1. The thumb is the shape that slides on a level plane when the client drags it.
  2. The track is the line that the slider thumb slides along. It has a functioning active and an inactive inert side.
  3. The overlay is the corona impact that shows up while the thumb is squeezed while dragging.
  4. The tick marks are consistently separated imprints that are drawn when utilizing discrete divisions.
  5. The value indicator shows up when the client is dragging the thumb to demonstrate the value being chosen.

Code Implementation

The genuine range slider values are put away as the state in the parent widget. The value is refreshed by calling setState() inside the RangeSlider’s onChange() callback. In other words, so as to have an interactive range slider, the RangeSlider the widget itself must be made inside a StatefulWidget.

RangeValues values = RangeValues(1, 100);

RangeSlider(
activeColor: Colors.red[700],
inactiveColor: Colors.red[300],
min: 1,
max: 100,
values: values,
onChanged: (values){
setState(() {
values =values;
});
}
),

At the point when the thumbs are further separated, contacting the internal track doesn’t choose a thumb

We will add Range labels and divisions

RangeLabels labels =RangeLabels('1', "100");

RangeSlider(
divisions: 5,
activeColor: Colors.red[700],
inactiveColor: Colors.red[300],
min: 1,
max: 100,
values: values,
labels: labels,
onChanged: (value){
print("START: ${value.start}, End: ${value.end}");

setState(() {
values =value;
labels =RangeLabels("${value.start.toInt().toString()}\$", "${value.start.toInt().toString()}\$");
});
}
),

Tick mark

The tick mark size and positioning changed. The tick marks are presently part of the track segment as opposed to expanding the finish of the track. There is additionally padding on the tick mark, so it shows up inside the track component.

Use Custom Shapes

SliderTheme(
data: SliderThemeData(
rangeThumbShape: CustomRangeShape(),
trackHeight: 2
),
),

We will use Slider Theme then add SliderThemeData. In these theme data, we will add range thumb shape, track height, etc. we will add the CustomRangeShape of class into Slider Theme Data

import 'dart:ui';

import 'package:flutter/material.dart';
import 'package:ranger_slider/main.dart';

class CustomRangeShape extends RangeSliderThumbShape {
static const double _thumbSize = 10.0;

@override
Size getPreferredSize(bool isEnabled, bool isDiscrete){
return Size.fromRadius(_thumbSize);
}

@override
void paint(
PaintingContext context,
Offset center, {
@required Animation<double> activationAnimation,
@required Animation<double> enableAnimation,
bool isDiscrete = false,
bool isEnabled = false,
bool isOnTop,
@required SliderThemeData sliderTheme,
TextDirection textDirection,
Thumb thumb,
}) {
final Canvas canvas = context.canvas;

Path thumbPath;
switch (textDirection) {
case TextDirection.rtl:
switch (thumb) {
case Thumb.start:
thumbPath = _rightShape(_thumbSize, center);
break;
case Thumb.end:
thumbPath = _leftShape(_thumbSize, center);
break;
}
break;
case TextDirection.ltr:
switch (thumb) {
case Thumb.start:
thumbPath = _leftShape(_thumbSize, center);
break;
case Thumb.end:
thumbPath = _rightShape(_thumbSize, center);
break;
}
break;
}
canvas.drawPath(thumbPath, Paint()..color = sliderTheme.thumbColor);
}
}

Path _rightShape(double size, Offset thumbCenter, {bool invert = false}) {
final Path thumbPath = Path();
final double halfSize = size / 1.5;
final double sign = invert ? -1.0 : 1.0;
thumbPath.moveTo(thumbCenter.dx + halfSize * sign, thumbCenter.dy);
thumbPath.lineTo(thumbCenter.dx - halfSize * sign, thumbCenter.dy - size);
thumbPath.lineTo(thumbCenter.dx - halfSize * sign, thumbCenter.dy + size);
thumbPath.close();
return thumbPath;
}

Path _leftShape(double size, Offset thumbCenter) => _rightShape(size, thumbCenter, invert: true);

The points of interest here are the two overridden methods. The getPreferredSize and paint methods.

The paint method is utilized legitimately for custom drawing. Since we are expanding the RangeSliderThumbShape class, the paint method gets all the important information required for the structure of the thumb, overlay, or whatever other parts that extend out the RangeSliderThumbShape class to manufacture.

Code File

https://gist.github.com/ShaiqAhmedkhan/b28cd4312ab8897588559d50bd13032f#file-main-dart

Conclusion :

This article would serve as an Exploratory article for RangeSlider in Flutter and its working using Flutter.

I hope this blog will provide you with sufficient information in Trying up RangeSlider in Flutter in your Flutter projectsYou will use a range slider in your project and update your latest Flutter version. The behavior and visual appearance can be changed in the theme at the global level, or on an instance-by-instance basis. So please try it.

❤ ❤ Thanks for reading this article ❤❤


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

Clap 👏 If this article helps you.


From Our Parent Company Aeologic

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

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

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

FlutterDevs team of Flutter developers to build high-quality and functionally-rich apps. Hire a 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 FacebookGitHubTwitter, 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.


Explore Realtime Database In Flutter

0

Firebase offers a lot of tools specific to the application, and storage is one crucial part of that tool. We will look at various ways to perform the Firebase Database operations. All the callbacks are simple and work for both IOS and Andriod with just one code. Google’s Flutter SDK can be used to develop apps that give native UI experience for both Android and iOS platforms. To write apps using Flutter, you have to use Dart programming language.

In this post, We will have a look at how to use the Realtime Database from Firebase in a Flutter. We will show a basics integration of Firebase real-time database into your flutter app.

Table of Content :

Firebase Realtime Database — Introduction

Features

Firebase Database Class

Firebase Security & Rules

Firebase Project Setup

Implementation — Setup Configuration

Code Implement

Code File

Conclusion



Firebase Realtime Database

It is a cloud-hosted database that causes us to store and sync information with a NoSQL database in real-time to each associated client platforms like Android, iOS, and Web.https://www.youtube.com/embed/U5aeM5dvUpA?feature=oembed

These days NoSQL databases are picking up ubiquity, and Firebase Realtime Database is one of the NoSQL databases. Firebase store all the information in JSON group and any adjustments in information reflects quickly by playing out a sync activity over all the stages. This permits us to assemble an adaptable real-time application effectively with negligible endeavors.

It lets you construct rich, cooperative applications by permitting secure access to the database straightforwardly from customer side code. Information is persevered locally, and even while disconnected, real-time occasions keep on terminating, giving the end-client a responsive encounter.

Firebase Realtime Database feature

Realtime: — It implies the information is synchronized with every single associated device inside milliseconds of changes being made to the report.

Offline: — The Firebase Realtime Database endures information on your device. The data is consistently accessible, even application disconnected. The data is consequently synchronized once the application returns on the web.

Security: — You can characterize your security rules, which controls who approaches your Firebase database. You can likewise integrate Firebase Authentication to control access to your information.

Firebase Database Class

  • We will be using the FirebaseDatabase class. This will bridge between the flutter applications and the firebase console.
  • The DB is a NoSQL DB. There will not be tables, rather only JSON data stored.
  • All data stored and read as JSON value only.

Firebase Security & Rules

Firebase gives an extraordinary method to make the database secure. We can apply an approach to recognize client jobs while performing read and write activities. These standards will go about as a security layer on the server before playing out any action. How about we check it.

  • Authentication:- The below rules allow authenticated users can perform read or write operations.
{   
"rules": {
".read": "auth != null",
".write": "auth != null"
}
}
  • Without Authentication:- Below rules allow everyone can read & write data without Authentication. We’ll use it in the demo app.
{
"rules": {
".read": true,
".write": true
}
}
  • Validate:- You can likewise utilize the accompanying guidelines to approve the information before inserting it into the database. You can authorize the name to be under 50 char and email to be valid utilizing email standard articulation.
{  
"rules": {
".read": true,
".write": true,
"users": {
"$user": {
"name": {
".validate": "newData.isString() && newData.val().length < 50"
},
"email": {
".validate": "newData.isString() && newData.val().matches(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\\.[A-Z]{2,4}$/i)"
}
}
}
}
}

Firebase Project Setup

Open the Firebase console and click the “Add project” option.

Now choose a Cloud Firestore location

Now read and acknowledge the Terms and Conditions

When done, look down and click “Create Project.”

The platform might take some time to go through your application. Once completed, then click the continue option to open the overview page of the project you made.

Andriod Configuration :

Register your android app, which is generally your application Id in your app-level build. Gradle.

Now download the google-services.json. Move the downloaded google-serivces.json file into your Android app module root directory.

  • Add your project level build.gradle file.
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.3'
}
  • Add your project app-level build. Gradle file
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.firebase:firebase-analytics:17.2.2'}
apply plugin: 'com.google.gms.google-services'
  • Click on Continue to console and wait for few seconds, and your application will be successfully added with Firebase.

Now you have added Firebase to the Flutter app successfully.

IOS Configuration :

Register IOS app to Firebase, and iOS bundle Id must be the same in the Xcode project and on firebase console.

Download configuration files for your app and adds it to your project folder.

Add firebase dependencies to your project.

  • Make the changes needed in the AppDelegate as suggested by the setup wizard then choose next.
  • Presently check the root folder to run the application. After some time, you may see the setup wizard showing that the application has been remembered for Firebase. Then choose “Continue to the Console” to finish the setup.
  • Presently check the root organizer to run the application. After some time, you may see the arrangement wizard indicating that the application has been remembered for Firebase. At that point, pick “Proceed to the Console” to finish the arrangement.

Implementation

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies:

firebase_database: ^latest version
firebase_core: ^latest version

Step 2: Import

import 'package:firebase_database/firebase_database.dart';

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

Step 4: Create a database reference.

final databaseReference = FirebaseDatabase.instance.reference();

Step 5: Enable AndriodX

Add this to your gradle.properties file:

org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true

How to implement code in dart file:

You need to implement it in your code respectively:

Database Operations :

Create Data

Read Data

Update Data

Delete Data

  • Create Data

At the point when the press of the “CreateData” button, createData() procedure is requested.

To create data, we will create seven data in the database.

void createData(){
databaseReference.child("flutterDevsTeam1").set({
'name': 'Deepak Nishad',
'description': 'Team Lead'
});
databaseReference.child("flutterDevsTeam2").set({
'name': 'Yashwant Kumar',
'description': 'Senior Software Engineer'
});
databaseReference.child("flutterDevsTeam3").set({
'name': 'Akshay',
'description': 'Software Engineer'
});
databaseReference.child("flutterDevsTeam4").set({
'name': 'Aditya',
'description': 'Software Engineer'
});
databaseReference.child("flutterDevsTeam5").set({
'name': 'Shaiq',
'description': 'Associate Software Engineer'
});
databaseReference.child("flutterDevsTeam6").set({
'name': 'Mohit',
'description': 'Associate Software Engineer'
});
databaseReference.child("flutterDevsTeam7").set({
'name': 'Naveen',
'description': 'Associate Software Engineer'
});

}
  • Read Data

At the point when the press of the “Read Data” button, readData() procedure is requested.

We will retrieve all data from the database and show it on Console.

void readData(){
databaseReference.once().then((DataSnapshot snapshot) {
print('Data : ${snapshot.value}');
});
}
  • Update Data

At the point when the press of the “Update Data” button, updateData() procedure is requested.

To update the data, we will update the description of the name in the database.

void updateData(){
databaseReference.child('flutterDevsTeam1').update({
'description': 'CEO'
});
databaseReference.child('flutterDevsTeam2').update({
'description': 'Team Lead'
});
databaseReference.child('flutterDevsTeam3').update({
'description': 'Senior Software Engineer'
});
}
  • Delete Data

At the point when the press of the “Delete Data” button, deleteData() procedure is requested.

To delete data, you can simply call remove() method on to database reference.

void deleteData(){
databaseReference.child('flutterDevsTeam1').remove();
databaseReference.child('flutterDevsTeam2').remove();
databaseReference.child('flutterDevsTeam3').remove();

}

Code File

https://gist.github.com/ShaiqAhmedkhan/121ec6ceec0b3a711fe5d83e95db935a#file-firebase_realtime_demo-dart

Conclusion :

This article would serve as an Exploratory article for Realtime Database in Flutter and its working using Flutter.

I hope this blog will provide you with sufficient information in Trying up Realtime Database in Flutter in your flutter projects. This is a demo example that will integrate the Firebase Realtime Database in a flutter. We will describe all operations, and you will use it in your flutter application, and you will easily store and retrieve the data into the firebase server without the need to set up any servers on the backend, So please try it.

❤ ❤ Thanks for reading this article ❤❤


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

Clap 👏 If this article helps you.

find the source code of the Flutter Realtime Database Demo:

flutter-devs/Flutter-Realtime-Database-Demo
Realtime database using Firebase to store the data in the firebase server. A new Flutter application. This project is a…github.com


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 a 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 FacebookGitHubTwitter, 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.


Ripple Animation In Flutter

0

Flutter makes excellent animations simple. That is the fact. What is likewise the truth of the reality is that we, as developers, are frightened to push our applications to the following level by including those minor animations that make the apps excellent rather than merely beautiful. At the point when we tune in to material design one component, we easily buddy with its miles the ripple animation. The ripple animation is incredibly gainful inside the user to the interface as they could outwardly illuminate the user that a couple of activities like catch click have happened.

In this blog post, let’s check how to create a Ripple Animation In Flutter. We will show a small demo to integrate into your flutter app.

Table of Content :

Flutter

Code Implementation

Code File

Conclusion



Flutter :

Flutter is Google’s UI toolkit that helps you build beautiful and natively combined applications for mobileweb, and desktop in a single codebase in record time.

To begin with, you’ll need the necessary information on Flutter, Git, and GitHub. If you are new to flutter, you can get started by reading the official documentation on flutter.dev

Flutter — Beautiful native apps in record time
Flutter is Google’s UI toolkit for crafting beautiful, natively compiled applications for mobile, web, and desktop from…flutter.dev

Code Implementation:

First, create a class that will be landing page of the module, also known as RippleAnimation class.

So, let me walk you through the code to give a better understanding of what’s happening here. As you can see, the UI we’re going to achieve so accordingly, I created a class RippleAnimation that contains the code for the UI. There are two main elements, the Custom Paint and the widget button animation.

Let’s declare the core of the App, CirclPainter class.

import 'package:flutter/material.dart';
import 'dart:math' as math show sin, pi, sqrt;
import 'package:flutter/animation.dart';

class CirclePainter extends CustomPainter {
CirclePainter(
this._animation, {
@required this.color,
}) : super(repaint: _animation);
final Color color;
final Animation<double> _animation;
void circle(Canvas canvas, Rect rect, double value) {
final double opacity = (1.0 - (value / 4.0)).clamp(0.0, 1.0);
final Color _color = color.withOpacity(opacity);
final double size = rect.width / 2;
final double area = size * size;
final double radius = math.sqrt(area * value / 4);
final Paint paint = Paint()..color = _color;
canvas.drawCircle(rect.center, radius, paint);
}
@override
void paint(Canvas canvas, Size size) {
final Rect rect = Rect.fromLTRB(0.0, 0.0, size.width, size.height);
for (int wave = 3; wave >= 0; wave--) {
circle(canvas, rect, wave + _animation.value);
}
}
@override
bool shouldRepaint(CirclePainter oldDelegate) => true;
}

CirclePainter extends the class CustomPainter and we need to override its paint method to draw the graphics. To draw, from the start, we need to announce something called Paint, it typifies all the properties that are expected to draw something on the screen.

final Paint paint = Paint()..color = _color;

In this Paint, we will add color, style, stroke width, etc., and you will also add a stroke cap.

final double opacity = (1.0 - (value / 4.0)).clamp(0.0, 1.0);
final Color _color = color.withOpacity(opacity);
final double size = rect.width / 2;
final double area = size * size;
final double radius = math.sqrt(area * value / 4);

In these five lines, we calculate the directions for the center of the circle and the double opacity, It is 1.0 minus with bracket value was divided by 4. Add color with opacity. We need the center of the circles exactly in the middle. double size It is half of the width.double areaIt is size was multiply by size.double radius It is the math square of the area multiply by value divided by 4.

canvas.drawCircle(rect.center, radius, paint);

Now we just draw with the drawCircle function called on the provided canvas object, where we go in the center, the radius, and the Paint object.

@override
void paint(Canvas canvas, Size size) {
final Rect rect = Rect.fromLTRB(0.0, 0.0, size.width, size.height);
for (int wave = 3; wave >= 0; wave--) {
circle(canvas, rect, wave + _animation.value);
}
}

In the paint method, we will add the size of the Rect from the left, top, right, and bottom. Then we will add wavein the form of circle function, where we go in the canvas, the rect, and wave with animation value.

Now, let add the animations.

AnimationController _controller;
@override
void initState() {
super.initState();
_controller = AnimationController(
duration: const Duration(milliseconds: 2000),
vsync: this,
)..repeat();
}

We add the animation on the Ripple Animation screen in the initState() method. Then, we have added a AnimationController which is called at each step of the animation. We will add duration 2000 milliseconds, and we will use the Animationcontroller in the Button widget function.

Widget _button() {
return Center(
child: ClipRRect(
borderRadius: BorderRadius.circular(widget.size),
child: DecoratedBox(
decoration: BoxDecoration(
gradient: RadialGradient(
colors: <Color>[
widget.color,
Color.lerp(widget.color, Colors.black, .05)
],
),
),
child: ScaleTransition(
scale: Tween(begin: 0.95, end: 1.0).animate(
CurvedAnimation(
parent: _controller,
curve: const CurveWave(),
),
),
child: Icon(Icons.speaker_phone, size: 44,)
),
),
),
);
}

In this button widget, we will use RadialGradient and add color with lerp function. In this child property, we will add ScaleTransition effect for the animation.

scale: Tween(begin: 0.95, end: 1.0).animate(
CurvedAnimation(
parent: _controller,
curve: const CurveWave(),
),
),

The following code makes a tween begin with 0.95 and ends at 1.0 for the scale property. It constructs a CurvedAnimation, determining a CurveWave() curve. See Curves for other accessible pre-characterized animation Curves.

import 'package:flutter/material.dart';
import 'dart:math' as math show sin, pi;
import 'package:flutter/animation.dart';

class CurveWave extends Curve {
const PulsateCurve();
@override
double transform(double t) {
if (t == 0 || t == 1) {
return 0.01;
}
return math.sin(t * math.pi);
}
}

CurveWave() Extends the class Curveand we will “t” transform the curve with a return value.

Code file :

https://gist.github.com/ShaiqAhmedkhan/f246cf927f2658fb1a6f71703ebcc580#file-ripple_animation-dart

You will see a full code on a GitHub, and this is a small demo example to integrate with Ripple Animation, and this below video shows how Ripple Animation will work.

Conclusion:

In the article, I have explained the basic architecture of Ripple Animation you can modify this code according to your choice, and this was a small introduction of Ripple Animation from my side and its working using Flutter.

I hope this blog will provide you with sufficient information in Trying up Ripple Animation in Flutter in your flutter projects. This is a demo example that will integrate Ripple Animation in a flutter, So please try it.

❤ ❤ Thanks for reading this article ❤❤


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

Clap 👏 If this article helps you.

find the source code of the Flutter Ripple Animation Demo:

flutter-devs/flutter_ripple_animation_demo
This project is a starting point for a Flutter application. A few resources to get you started if this is your first…github.com


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 a 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 FacebookGitHubTwitter, 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.


Firebase Performance Monitoring In Flutter

0

On the off chance that you are a mobile application developer, at that point, you may have comprehended what Firebase is. It’s a stage for developing mobile applications claimed by Google in 2014. It offers different highlights like an ML Kit and Cloud storage Authentication, which are significant for developing modern mobile apps. Additionally, It offers different administrations that incorporate performance monitoringGoogle Analytics, and Crashlytics to direct you to upgrade the application quality.

In this article, We will have a look at how to use Firebase Performance Monitoring in a Flutter project through the help of Firebase.

Table of Contents:

Firebase Project Setup

Configuring for Andriod

Configuring For iOS

Firebase Performance Monitoring — Introduction

Implementation — Setup Configuration

What is a trace?

How to use in Flutter?

Monitoring network request

Conclusion



Firebase Project Setup

To use your Flutter application developer with the Firebase, you will have first to add a project or maybe create one.

  • Now click the Project name
  • You have anything, for example. What’s more, the Firebase will attach a one of a kind ID to the project name consequently.
  • Now choose a Cloud Firestore location
  • Now read and acknowledge the Terms and Conditions
  • When done, look down and click “Create Project.”

The platform might take some time to go through your application. Once completed, then click the continue option to open the overview page of the project you made.

Configuring for Andriod

  • Open the Firebase console, click on your project.
  • It will take you to your project screen, click on the android icon.

You have to enter the package name, which is generally your application Id in your app-level build. Gradle. Add the other two optional fields if you wish to add them as well.

Now download the google-services.json. Move the downloaded google-serivces.json file into your Android app module root directory.

  • Now add Firebase SDK.

Add your project level build.gradle file

dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.3'
}

Add your project app-level build.gradle file

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.google.firebase:firebase-analytics:17.2.2'
}
apply plugin: 'com.google.gms.google-services'
  • Click on Continue to console and wait for few seconds, and your application will be successfully added with Firebase.

Now you have added Firebase to the Flutter app successfully. In spite of having both the Flutter and Firebase from Google awesome,

Configuring For iOS

  • Launch the setup wizard for iOS on the project overview page
  • You will presently observe the setup wizard and add it to the iOS bundle ID. Check whether the register app is lit up then tap on it.
  • Presently you should download the GoogleService — Info. plist config list and add it to the iOS project root file, then proceed the next.
  • Simply go with the instructions and afterward include the Firebase SDK and continue the following.
  • Make the changes needed in the AppDelegate as suggested by the setup wizard then choose next.
  • Presently check the root folder to run the application. After some time, you may see the setup wizard showing that the application has been remembered for Firebase. Then choose “Continue to the Console” to finish the setup.
  • Presently check the root organizer to run the application. After some time, you may see the arrangement wizard indicating that the application has been remembered for Firebase. At that point, pick “Proceed to the Console” to finish the arrangement.

Firebase Performance Monitoring

It is a service that encourages you to pick up an understanding of the presentation attributes of your iOS, Android, and web applications.https://www.youtube.com/embed/videoseries?list=PLl-K7zZEsYLmOF_07IayrTntevxtbUxDL

You utilize the Performance Monitoring SDK to gather execution information from your application, at that point survey and investigate that information in the Firebase comfort. Execution Monitoring encourages you to get where and when the presentation of your application can be improved with the goal that you can utilize that data to fix execution issues.

Implementation :

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies:

firebase_performance: ^latest version

Step 2: Import

import 'package:firebase_performance/firebase_performance.dart';

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

Step 4: Add the dependencies and Plugin

Add dependencies in the app/build. Gradle file.

dependencies {
// ...
implementation 'com.google.firebase:firebase-perf:19.0.7'
}

Add plugin in the app/build. Gradle file.

// Apply the Performance Monitoring plugin
apply plugin: 'com.google.firebase.firebase-perf'

Step 5: Add the Classpath

Add plugin in the build. Gradle file.

dependencies {
// To benefit from the latest Performance Monitoring plugin features,
// update your Android Gradle Plugin dependency to at least v3.4.0
classpath 'com.android.tools.build:gradle:3.4.0
// Add the dependency for the Performance Monitoring plugin
classpath 'com.google.firebase:perf-plugin:1.3.1' // Performance Monitoring plugin
}

Note : Results of firebase performance will appear within 12 hours.

You can define your own traces and monitor network requests.

How is the application behaving?

Presently we should see the performance. According to the record, it can break down the application performance glitches that occur on a client’s device. Use trace to follow the performance of certain application parts and experience a summed up to see in the Firebase console. Stay aware of the application startup time and check the HTTP request without taking a shot at the code.

What is a trace?

A follow can record the information between two distinctive execution fragments in your application.

How to use Flutter?

  • You can make use of it by initializing tracing.
final Trace trace = _performance.newTrace("test");
  • Then, you have to start the trace.
myTrace.start();
  • Then, you need to stop the trace.
myTrace.stop();
  • You can also use your logic in between the traces.
myTrace.incrementMetric("metric1",16);
myTrace.putAttribute("favorite_color", "blue");

Monitoring network request

Make use of the feature plugin that is available known as BaseClient

  • Create a class that goes beyond the BaseClient
class _MetricHttpClient extends BaseClient {}
  • You will have to override the send method of this class.
@override
Future<StreamedResponse> send(BaseRequest request) async {
}
  • Create HttpMetric
final HttpMetric metric = FirebasePerformance.instance
.newHttpMetric(request.url.toString() // Your Url, HttpMethod.Get);
  • Begin the Http Metric
await metric.start();
  • Stop the Http Metric
await metric.stop();
Url Dashboard

class _MetricHttpClient extends BaseClient {
_MetricHttpClient(this._inner);
final Client _inner;
@override
Future<StreamedResponse> send(BaseRequest request) async {
final HttpMetric metric = FirebasePerformance.instance
.newHttpMetric(request.url.toString(), HttpMethod.Get);
await metric.start();
StreamedResponse response;
try {
response = await _inner.send(request);
metric
..responsePayloadSize = response.contentLength
..responseContentType = response.headers['Content-Type']
..requestPayloadSize = request.contentLength
..httpResponseCode = response.statusCode;
} finally {
await metric.stop();
}
return response;
}
}

When clicking our URL, we see some insights data:

Network Dashboard

Conclusion:

This article would serve as an Exploratory article for Firebase Performance Monitoring in Flutter and its working using Flutter.

I hope this blog will provide you with sufficient information in Trying up Firebase Performance Monitoring in Flutter in your flutter projects. We will describe how to use firebase performance monitoring and setup in our project, and you will use it in your flutter application for performance monitoring, So please try it!!!

❤ ❤ Thanks for reading this article ❤❤


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

Clap 👏 If this article helps you.


From Our Parent Company Aeologic

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

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

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

FlutterDevs team of Flutter developers to build high-quality and functionally-rich apps. Hire a 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 FacebookGitHubTwitter, 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.


Stripe Payment In Flutter

0

Today we use mobile devices, not only for sending messages or receiving calls but also for ordering products or services and paying for them. Paying with a smartphone is easier than ever. Whether you want to build a booking, purchase products, use alternative currencies, manage expenditures, earn rewards, events, or even an e-commerce app to process transactions you will need a payment gateway.

In this article, we will explore a Stripe payment gateway integration with a flutter app. We will show a small demo program to integrate into your flutter app.

Table of Content :

Stripe Payment — Introduction

Generate API Key

Features

Implementation — Setup Configuration

Code Implement

Conclusion



Strip Payment :

Stripe is a payment gateway used to make payments on the web. Stripe has heaps of valuable highlights, for example, repeating installments, escrow records, and ongoing charge card number approval utilizing Luhn’s algorithm. With the presentation of SCA rules in the UK, Stripe additionally gives SCA agreeable APIs and Payment Intents, so it makes your work exceptionally straightforward. Stripe Collect chargeable tokens from clients’ Card Input and Apple and Google pay.

How to Generate API Key :

  1. Sign in to your Dashboard with suitable credentials.
  2. Select the mode (Test or Live) for which you need to create the API key
  3. Explore to Dashboard →API Keys → Generate Key to create a key for the chose mode.

Note: You need to produce separate API Keys for the test and live modes. No cash is deducted from your record in test mode.

Flutter Stripe Payment Features :

  • canMakeNativePayPayments
  • deviceSupportsNativePay
  • potentiallyAvailableNativePayNetworks
  • completeNativePayRequest
  • cancelNativePayRequest

Implementation :

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies:

stripe_payment: ^latest version

Step 2: Import

import 'package:stripe_payment/stripe_payment.dart';

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

Step 4: Minimum Version Requirement

Change in your android/app/buld.gradle file.

minSdkVersion 19
compileSdkVersion 28

Step 5: Enable MultiDex

Enable MultiDex in the app/build. Gradle file.

android {
    compileSdkVersion 28

.....
    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.flutterstripepaymentdemo"
        minSdkVersion 19
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        multiDexEnabled true

   }
}

Add multidex dependencies

dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'com.android.support:multidex:1.0.3'

}

Step 6:Enable AndriodX

Add this to your gradle. properties file:

org.gradle.jvmargs=-Xmx1536M
android.enableR8=true
android.useAndroidX=true
android.enableJetifier=true

How to implement code in dart file:

You need to implement it in your code respectively:

Setup Options

We will be to login/sign up for an account in Stripe and change to Test mode. We will be furnished with a secret key and a publishable key. Our Flutter application is connected with the stripe account utilizing the publishable key, and the merchant Id gave by Stripe.

For this, we need to add the stripe_payment package to our project. Adhere to the directions on the installation page of the project.

Presently, we should set up the association in the initState() strategy for your widget or before starting the checkout process.

@override
initState() {
super.initState();
StripePayment.setOptions(
StripeOptions(
publishableKey:"YOUR_PUBLISHABLE_KEY"
merchantId: "YOUR_MERCHANT_ID"
androidPayMode: 'test'
));
}

The above code connects the application with your Stripe account, and therefore, all payments made by this app will be received in your account, which you can keep track of in the Stripe dashboard.

Create Source -:

  • createSourceWithParams.
  • Make a Stripe account and project.
  • Recover a publishable key from the Stripe dashboard and use them in the flutter application to incorporate the flutter application with the Stripe installment gateway.
RaisedButton(
child: Text("Create Source"),
onPressed: () {
StripePayment.createSourceWithParams(SourceParams(
type: 'ideal',
amount: 2102,
currency: 'eur',
returnURL: 'example://stripe-redirect',
)).then((source) {
_scaffoldKey.currentState.showSnackBar(SnackBar(content: Text('Received ${source.sourceId}')));
setState(() {
_source = source;
});
}).catchError(setError);
},
),

When you press the RaisedButton, then navigate to the stripe test payment page in your browser for payment authorization, and they will show your Payment Source object as well.

CreateToken With Card Form -:

In this method, you will be save your card details for your payments.

RaisedButton(
child: Text("Create Token with Card Form"),
onPressed: () {
StripePayment.paymentRequestWithCardForm(CardFormPaymentRequest()).then((paymentMethod) {
_scaffoldKey.currentState.showSnackBar(SnackBar(content: Text('Received ${paymentMethod.id}')));
setState(() {
_paymentMethod = paymentMethod;
});
}).catchError(setError);
},
),

when you press the Raised Button, then show a card pop up to save your card details. When you save your card, you then received your payment id and showed your current payment method.

CreateToken With Card -:

We will make a test card for demo purpose

final CreditCard testCard = CreditCard(
number: '4111111111111111',
expMonth: 08,
expYear: 22,
);

when you press Raised Button, then they will show a test card detail with the card Id, country code, and received token id.

RaisedButton(
child: Text("Create Token with Card"),
onPressed: () {
StripePayment.createTokenWithCard(
testCard,
).then((token) {
_scaffoldKey.currentState.showSnackBar(SnackBar(content: Text('Received ${token.tokenId}')));
setState(() {
_paymentToken = token;
});
}).catchError(setError);
},
),

Confirm payment Intent -:

In this payment, you will add your secret key from stripe account.

RaisedButton(
child: Text("Confirm Payment Intent"),
onPressed: _paymentMethod == null || _currentSecret == null
? null
: () {
StripePayment.confirmPaymentIntent(
PaymentIntent(
clientSecret: _currentSecret,
paymentMethodId: _paymentMethod.id,
),
).then((paymentIntent) {
_scaffoldKey.currentState
.showSnackBar(SnackBar(content: Text('Received ${paymentIntent.paymentIntentId}')));
setState(() {
_paymentIntent = paymentIntent;
});
}).catchError(setError);
},
),

Native Payment -:

Add merchant id for native payments, and this is for Andriod pay and Apple pay both.

RaisedButton(
child: Text("Native payment"),
onPressed: () {
if (Platform.isIOS) {
_controller.jumpTo(450);
}
StripePayment.paymentRequestWithNativePay(
androidPayOptions: AndroidPayPaymentRequest(
totalPrice: "2.40",
currencyCode: "EUR",
),
applePayOptions: ApplePayPaymentOptions(
countryCode: 'DE',
currencyCode: 'EUR',
items: [
ApplePayItem(
label: 'Test',
amount: '27',
)
],
),
).then((token) {
setState(() {
_scaffoldKey.currentState.showSnackBar(SnackBar(content: Text('Received ${token.tokenId}')));
_paymentToken = token;
});
}).catchError(setError);
},
),

Code File :

https://gist.github.com/ShaiqAhmedkhan/6f43e03c0d4301ed68e9916f0cfb7251#file-payment-dart

Conclusion:

This article would serve as an Exploratory article for Stripe Payment in Flutter and its working using Flutter.

I hope this blog will provide you with sufficient information in Trying up Stripe Payment in Flutter in your flutter projects. This is a demo example that will integrate Stripe payment in a flutter. We will describe all basic points, and you will use in your flutter application for payment purpose, So please try it.

❤ ❤ Thanks for reading this article ❤❤


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

Clap 👏 If this article helps you.

find the source code of the Flutter Stripe Payment Demo:

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


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 a 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 FacebookGitHubTwitter, 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.


Explore Perspective in Flutter

0

In this article, We will Explore Perspective in Flutter. We will build a demo that shows how to use a flutter Transform widget and Matrix4 to give a 3D perspective transformation. This widget permits you to do staggering things in your Flutter applications. One of the most exceptional widgets in the Flutter stock is the Transform widget.

It widgets license us to from a general perspective change what widgets resemble and continue, allowing us to make new, complicated kinds of developments. A 4D lattice controls the real change characterized by the Matrix4 class. While Flutter gives basic ways to deal with do changes, for instance, translation, scaling, and revolution, we can use Matrix4 to make a lot of progressively great things, for example, 3D viewpoint change.

Matrix4

In actuality, a matrix4 is a matrix with four rows and four columns. We have to utilize a matrix4 to change an article in 3 measurements, so here the measurement is what we’re being used to L, B, and H.

Matrix4.identity()

This development of the matrix is called an identity matrix. The ideal approach to think about an identity matrix is this is what could be compared to the number ‘1’ in the matrix form. It leaves things unmoved when used to transform.

Transform:

A widget that applies a transformation before painting its child.

  • transform: Matrix to transform.
  • Alignment: Alignment of the inception.
  • Child: Widget on which Transformation happens.

Transform Matrix:

Transform takes a 3D transformation matrix, which is a Matrix4.

  • Create the matrix:

Begin with an identity matrix and apply transformations to it.

Matrix4.identity()

Basically, everything except the least incredible cell phones incorporates incredibly quick GPUs, which are upgraded for 3D designs. That implies that rendering 3D designs is extremely quick. Therefore, nearly all that you see on your phone is being rendered in 3D, even the 2D stuff.

Setting the transformation matrix lets us control what is being seen (in 3D even!). Normal transformations incorporate interpret, turn, scale, and point of view. To make this matrix, we start with an identity matrix and afterward apply transformations to it. Transformations are not commutative, so we need to apply them organized appropriately. The last total matrix will be sent to the GPU to change the items being rendered.

  • Perspective:

Perspective of view makes protests that are farther away seem littler. Setting line 3, section 2 of the lattice to 0.001 scales things down dependent on their separation.

Now we know,

setEntry(3, 2, 0.001)

3 means the Row 3, 2 means the Column 2

The number 0.001. It is the point of perspective number. This number must be accomplished by messing about. You will increment and decrement the measure of perspective, something like zooming in and out with a long-range focal point on a camera. The greater this number, the more articulated is the perspective, which makes it appear as though you are nearer to the seen object.

Flutter gives a makePerspectiveMatrix work, yet that technique incorporates contentions for setting the perspective proportion, a field of view, and close and far planes — way more than we need — so we will simply set the necessary component of the matrix directly.

  • Rotations:

Revolution is characterized as an axis, so rotate X it describes turn around the X-axis, which inclines in the Y (up-down) management. In like manner, rotateY inclines in the X (left-right) management (around the Y-axis). That is the reason rotateX is composed of _offset.dy , and rotateY is composed by _offset.dx.

We apply two revolutions dependent on the value of the _offset variable Curiously, the X rotation depends on the Y offset, and the Y rotation depends on the X offset.

..rotateX(_offset.dy)
..rotateY(_offset.dx),

There is additionally a Z-axis, whose origin is at the surface of the screen running perpendicular to the screen through the device and out the back with the goal that the Z value goes positive the further away a thing is from the watcher. Subsequently, the rotate Z strategy rotates in the plane of the showcase.

rotateX and rotateY take in edge as parameters. For our case, we have characterized as offset as :

Offset _offset = Offset(0.2, 0.6);

How to implement code in dart file:

You need to implement it in your code respectively:

https://gist.github.com/ShaiqAhmedkhan/b136a558ffae2d3a4492096ae1185d3f#file-home_page_demo-dart

_offset is introduced to (0.2, 0.6). GestureDetector that recognizes two sorts of gestures. The first one pan gestures, i.e., a finger moving around the screen, and second is double-tap gestures. It includes the measure of pan movement in pixels to _offset. Resets the _offset to (0.2, 0.6) when the user double-taps the presentation. For both of these gestures, setState() plans the display to be redrawn.

Finally, altered, so the offset (in pixels) is scaled by a factor of 0.01 to improve it to use for rotation, which is in radians, where a total revolution is 2π roughly 6.28, so a total turn requires a pan movement of 628 pixels. You can play with the scale factor to make the rotation much touchy to finger movement. Likewise, the boundary rotateY is refuted on the grounds that as the finger moves to one side, the picture rotates counter-clockwise around the Y-axis because it is pointing descending.

You will see a full code on a GitHub, and this is a small demo program that below video shows how to use Flutter’s Transform widget and Matrix4 to provide a 3D perspective.

Conclusion:

This article would serve as an Exploratory article for Perspective in Flutter and its working using Flutter.

I hope this blog will provide you with sufficient information in Trying up Perspective in Flutter in your flutter projects. This is a kind of 3D perspective transformation using Matrix4 and the Transform Widget.

Thanks for reading this article ❤


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

Clap 👏 If this article helps you.

find the source code of the Flutter Perspective3D Demo:

flutter-devs/Flutter_Perspective3D_Demo
This project is a starting point for a Flutter application. A few resources to get you started if this is your first…github.com


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 a 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 FacebookGitHubTwitter, 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.


ShaderMask in Flutter

0

Today’s article mainly focuses on ShaderMask and how to utilize it in a flutter. It is a widget that applies a shader-created spread to its child, in this widget that is valuable for using shader-impacts to a widget. There are vast quantities of the fresh impacts that you can accomplish with shaders.

What is ShaderMask?

  • LinearGradient
  • RadialGradient
  • SweepGradient

Let’s take a look at them one by one and see how we can apply effects to the child.

We presently observe a case of wrapping a widget with ShaderMask and what all properties and strategies are offered by ShaderMask to accomplish the impact we need on its child. We will have a straightforward Container with bounds alongside a picture as it’s child, as underneath:

body: Center(
child: Container(
width: double.infinity,
height: double.infinity,
child: Image.asset("assets/showroom.jpg",fit: BoxFit.cover,),
),

we wrap Container with ShaderMask, we also need to add the required parameter named shaderCallback

body: Center(
child: ShaderMask(
child: Container(
width: double.infinity,
height: double.infinity,
child: Image.asset("assets/showroom.jpg",fit: BoxFit.cover,),
),
),

shaderCallback as the name demonstrates, is the callback that acknowledges bounds for Rect (represents Rectangle) that assists with making the shader for the given bounds, i.e., the way toward recognizing the region where to begin shading.

LinearGradient:

This accepts begin and end as two optional bounds followed by color that accepts a list of colors that will be applied to the child. Note that, begin and end accepts only Alignment objects, so we need to pass regular alignments that indicates how the effect will be aligned, as below:

shaderCallback: (bounds) {
return LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Colors.black,
Colors.red
]
)

Here, the callback execution isn’t finished at this point, implies, we have dipped the brush in color and are prepared to paint the wall, at the same time, we haven’t got a thumbs up, to begin with, the task. The last piece of this implementation is another strategy named createShaders() that acknowledges the bounds on which the colors are to be applied. We should decide:

shaderCallback: (bounds) {
return LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Colors.black,
Colors.red
]
).createShader(bounds);

In ShaderMask to begin applying or fill the colors on the child in the given bounds. Presently, in the event that we run this, we’ll see:

Here, we just applied a linear gradient on a picture and ShaderMask traversed those colors over the Container . However, this isn’t sufficient for us to utilize ShaderMask. We likewise need to apply a few impacts on the picture to make it increasingly improved, so we will utilize blendmode property.

shaderCallback: (bounds){
return LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Colors.black,Colors.red]
).createShader(bounds);
},
blendMode: BlendMode.color,
BlendMode.color

BlendMode:

BlendMode impacts take a shot at the idea of source and destination . All types of blend mode effects are applied dependent on these two terms. You can find out about these terms in detail here, and there is some blend mode.

  • BlendMode.color: This property mode basically paints the picture with the given colors.
  • BlendMode.colorBurn: This property paints the picture with rearranging impacts dependent on the color gave.
  • BlendMode.colorDodge: This property paints the picture with shine dependent on the color gave.
  • BlendMode.darken: This property paints the picture with dark dependent on the color gave.
  • BlendMode.clear: This property removes the picture or text and shows a blank screen.

RadialGradient:

This shows the gradient/color impacts in concentric circles. Alongside different modes, we can change the presence of the picture as we need. We should see a couple of examples:

body: Center(
child: ShaderMask(
shaderCallback: (bounds){
return RadialGradient(
colors: [Colors.blue,Colors.red,Colors.orange]
).createShader(bounds);
},
blendMode: BlendMode.colorBurn,
child: Container(
width: double.infinity,
height: double.infinity,
child: Image.asset("assets/showroom.jpg",fit: BoxFit.cover,),
),
),
),
RadialGradient with color burn blend
return RadialGradient(
colors: [Colors.blue,Colors.red,Colors.orange]
).createShader(bounds);
},
blendMode: BlendMode.softLight,
RadialGradient with a soft light blend

SweepGradient:

This shows the gradient/color impacts in a circular segment. With regards to bend, we consider angles, isn’t that so? Correspondingly, this gradient gives properties, for example, startAngle and endAngle to change appearance as required. Obviously, the distinction blend modes can be utilized to improve the impact. Below is to see a few examples:

body: Center(
child: ShaderMask(
shaderCallback: (bounds){
return SweepGradient(
startAngle: 0.1,
endAngle: 1.0,
colors: [Colors.indigo,Colors.blue,Colors.red,Colors.orange]
).createShader(bounds);
},
blendMode: BlendMode.hardLight,
child: Container(
width: double.infinity,
height: double.infinity,
child: Image.asset("assets/showroom.jpg",fit: BoxFit.cover,),
),
),
),
SweepGradient with a hard light blend
return SweepGradient(
startAngle: 0.1,
endAngle: 1.0,
colors: [Colors.indigo,Colors.blue,Colors.red,Colors.orange]
).createShader(bounds);
},
blendMode: BlendMode.darken,
SweepGradient with a darken blend

I utilized just the basic essential properties for the demo. I’d recommend you evaluate all properties to see how they help to upgrade and change the presence of the picture.

Take a moment to take note of the effect blend mode values show up of the picture. You may look at the impact by evacuating the blend mode property to see the picture being painted and afterward returning the mixing again to see the distinction or effect.


Conclusion:

This article would serve as an Exploratory article for ShaderMask and its working using Flutter. We perceived how ShaderMask widgets could be useful to apply shading impacts and change the presence of their child. Rather than image , we can utilize different widgets as well, for example, a Text . There are different properties that Gradient the class gives explicit to LinearRadial and Sweep types we saw above, for example, tileMode , focal , radius , center , stops , etc.

I hope this blog has provided you with valuable information about what is all about ShaderMask, and that you will give it ShaderMask — a Try. Begin using your apps.

Thanks for reading this article ❤


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

Clap 👏 If this article helps you.

find the source code of the Flutter ShaderMask Demo:

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


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 a 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 FacebookGitHubTwitter, 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.


Automation Flutter with GitHub Actions & Firebase App Distribution

0

In this article, we will talk about GitHub Actions, Firebase App Distribution, and Flutter. This article will reveal to you a perfect technique to oversee, sending another grouping of your Flutter application to your customer with GitHub Actions and Firebase App Distribution.

Flutter :

Flutter is Google’s UI toolkit for building beautiful, natively compiled applications for mobileweb, and desktop from a single codebase. Please visit flutter.dev for more info about it.

  • To begin with, you’ll need fundamental information on Flutter, Git, and GitHub. If you are new to flutter you can get started by reading the official documentation on flutter.dev

Flutter — Beautiful native apps in record time
Flutter is Google’s UI toolkit for crafting beautiful, natively compiled applications for mobile, web, and desktop from…flutter.dev

Firebase App Distribution :

Firebase App Distribution makes it easy to distribute pre-release apps to testers so that you can get feedback from the early users quickly. It can also be combined with Crashlytics, which will give you reports about any crash that occurs on the tester’s device.

It likewise permits you to share your new application release with groups of testers as fast as sending an email! Not any more trusting those days for it will be approved on the Google Play Store. The reasons we use Firebase App Distribution are because it’s allowed to utilize, simple to set up, a “set and forget” process, and, above all, simple for your customer to utilize. As we probably are aware, customers frequently have next to no or no technical background, and you would prefer not to send them apk files manually.

We should utilize Firebase App Distribution in a current task:

  • Assemble an apk from your Flutter project by running flutter build apk in the command line.
  • Open your Firebase console and explore to App Distribution and then next Get started and then next Testers and Groups.
  • We should include a gathering called “testers,” and include your email as a tester to the gathering.
  • Presently switch back to the “Releases” tab and upload your application.
  • Include the gathering “testers” as testers and adhere to the guidelines.
  • The last step is to browse your email and adhere to the guidelines.

Presently you have an approach to send your apk to a gathering of analyzers; however, it should be done manually, and we are software engineers, so we should computerize it!

GitHub Actions :

Github Actions assist you with mechanizing your software development workflows in a similar spot you store code and team up on pull requests and issues. You can compose singular tasks, called actions, and join them to make a custom workflow. It contains most highlights than other CI/CDs like Travis or CircleCI have. The speed of Github Actions is acceptable, and its pricing is better than that of Travis.

It is a CI/CD automation tool built into your GitHub workflow. It permits you, for instance, to send automated messages to new givers in your repo, or test your application before releasing it to creation. It’s free for public repositories, and some free computing minutes per month are included for private repositories. See GitHub Pricing additional details.

We make an action that attempts to build your application on each commit or pull request. We make another branch “dev,” and each time we push from “dev” to “master,” GitHub builds your application and tells you on the off chance that it comes up short. The catch here is that we have some secret files that we would prefer not to transfer to GitHub. These files are listed in the .gitignore file. So first, we have to scramble the secret files and, at exactly that point, transfer them to GitHub and give GitHub the keys to unscramble them. Let’s proceed to the workflow.

Workflow File :

The main thing you need to do is make a .yml file, which is an arrangement record that Github Action can comprehend.

You should store work process records in the .github/workflows /directory in your repository. You can name the file anything you desire for this instructional name. ci.yml.

.github/workflows/ci.yml

#on

Github Actions will execute the workflow following the events under the key. In this example, we need to run it just when we push to master branch, yet you can include any of your favored branches.

https://gist.github.com/ShaiqAhmedkhan/3c7f657bd7fce873e3dd14ec0311f429#file-github_action_1-yml

#job

A workflow run is comprised of at least one job. For our example, we need just one job.

#runs-on

The sort of virtual host machine to run the activity on. For our case, we need ubuntu-latest.

Each ubuntu host machine contains different installed software. You can check a list of supported software, tools, and packages in each virtual environment here.

https://gist.github.com/ShaiqAhmedkhan/14df9be696c249d3fc1c3dadeeb648b0#file-github_action_2-yml

  • Set up the Flutter environment for Github Actions.

https://gist.github.com/ShaiqAhmedkhan/899e2076d29366c35490403aa9bc2dd5#file-github_action_3-yml

  • Write the command to get the Flutter dependencies.
- run: flutter pub get
  • Check for any format issues in the code.
- run: flutter format --set-exit-if-changed .
  • Analyze the Dart code for errors.
- run: flutter analyze .
  • Run widget tests for our project.
- run: flutter test
  • Build an APK.
- run: flutter build apk
  • Add the following to the main.yml file:

https://gist.github.com/ShaiqAhmedkhan/96b30c462914b167912974eb7158b0f3#file-main-yml

Presently what’s left is to push to GitHub and check if the activity passes. It may take some time for the move to run. You can see the progress by going to the GitHub “Activities” tab.

Firebase App Distribution with GitHub Actions :

Now we have all the components working and tested. The last step is to combine them. We expand the current GitHub Action so that, on a pull request to the “master” branch, it transfers the new version of the application to Firebase App Distribution.https://tenor.com/embed/12458983

To begin with, we have to give GitHub Actions authentication data and authorizations to your Firebase account.

  • Make a Firebase token by runningfirebase login:ci in the command line.
  • Open GitHub and go to the repository.
  • Explore to Settings, open the Secrets, and then Add Secret.
  • Enter “FIREBASE_TOKEN” as the name, and the token made in sync One as the value.
  • Go to the settings in your firebase console and copy the App ID.
  • Add it as a secret to GitHub with “FIREBASE_ANDROID_APPID” as the name, and the ID as the value.

All that’s left is to update the GitHub Action. You can do this in the “dev” branch and then push your changes to GitHub.

- name: Firebase App Distribution
uses: wzieba/Firebase-Distribution-Github-Action@v1.2.1
with:
appId: ${{secrets.FIREBASE_APP_ID}}
token: ${{secrets.FIREBASE_TOKEN}}
groups: testers
file: app/build/outputs/apk/release/app-release-unsigned.apk

Make a pull request from “dev” to “master,” and you can see the state of the action in the pull request. After it completes, you ought to get an email from Firebase with the new version of the application. Since you realize it works, add the client’s email to the testers group in Firebase App Distribution, so they get an email whenever the activity runs.

Conclusion:

This article would serve as an Exploratory article for Automation Flutter with GitHub Actions & Firebase App Distribution and its working using Flutter.

I hope this blog has provided you with valuable information about what is all about Automation Flutter with GitHub Actions & Firebase App Distribution, and that you will give it Automation Flutter with GitHub Actions & Firebase App Distribution — a Try. Begin using your apps.

Thanks for reading this article ❤

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

Clap 👏 If this article helps you.


From Our Parent Company Aeologic

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

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

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

FlutterDevs team of Flutter developers to build high-quality and functionally-rich apps. Hire a 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 FacebookGitHubTwitter, 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.


Panorama in Flutter

0

In this post, we will talk about the Panorama in Flutter. Flutter is an important topic for mobile UI structures. Hence, I chose to utilize a package for this 360 wide picture viewing experience in the dart for a flutter. In this article, I’ll attempt to clarify how I accomplished this.

360 panorama scene is another procedure that arises recently. It is an exceptional kind of picture and gets all the points of view 360 degrees around the photographic artist from left to right and completely.

Things being what they are, as a Flutter developer, how would we show a 360 panorama picture in a Flutter application? Your first idea is doubtlessly using thePhotoView. Regardless, PhotoView just shows 360 scene displays as a plain picture that doesn’t totally show how remarkable 360 scenes can be.

Panorama Uses:

The panorama let you catch your general surroundings in a unique manner.

  • It is a wide shot. It works by panning the device over a scene. The Camera application at that point lines together with a few pictures to build a wide-ranging picture.
  • The photograph circle mode resembles a wraparound panorama, covering left, right, up, down, and all around. The conclusive outcome is an interactive picture that you can pan and tilt to see everything around you.

How to Install Flutter :

Installing Flutter SDK into your device is easily done through with the help of going through the official flutter doc and following the steps provided for your respective windows, Linux, macOS at flutter.dev.https://www.youtube.com/embed/fq4N0hgOWzU?feature=oembed

Create a new flutter app

1. Firstly, Create a new project and then clear all the code in the main.dart file. Type below command in your terminal:-

flutter create yourProjectName

Implementation:

Step 1: Add the dependencies

Add dependencies to pubspec.yaml file.

dependencies:

panorama: ^latest version
image_picker: ^latets version

We’ll additionally need to add a panoramic picture to our advantages organizer and register this within pubspec.yaml:

flutter:
uses-material-design: true
assets:
- assets/

Save this inside of aassets/brown_wood.jpg, and we’ll then be able to use this with the Image.asset widget.

Step 2: Import

import 'package:panorama/panorama.dart';
import 'package:image_picker/image_picker.dart';

Step 3Run flutter packages get in the root directory of your app.

How to implement code in dart file:

You need to implement it in your code respectively:

import 'dart:io';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:panorama/panorama.dart';
import 'package:image_picker/image_picker.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Panorama Demo',
theme: ThemeData.dark(),
home: MyHomePage(title: 'Panorama Demo'),
);
}
}

class MyHomePage extends StatefulWidget {
MyHomePage({Key key, this.title}) : super(key: key);

final String title;

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

class _MyHomePageState extends State<MyHomePage> {
File _imageFile;

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(widget.title),
),
body: Panorama(
zoom: 1,
animSpeed: 1.0,
child: _imageFile != null ? Image.file(_imageFile) : Image.asset('assets/brown_wood.jpg'),
),
floatingActionButton: FloatingActionButton(
mini: true,
onPressed: () async {
_imageFile = await ImagePicker.pickImage(source: ImageSource.gallery);
setState(() {});
},
child: Icon(Icons.panorama),
),
);
}
}

With no further arrangement, we should now have the option to see our panoramic picture within the device. We’re prepared to pan around and see the picture, as observed below:

We will add a floating action button to pick an image from your gallery using ImagePickerPlugin, and you will see a full code on a GitHub, and this is a small demo example to integrate with Panorama, and this below video shows how Panorama will work, and the 360-degree image will show.

Conclusion:

This article would serve as an Exploratory article for Panorama and its working using Flutter.

I hope this blog will provide you with sufficient information in Trying up Panorama in your flutter projects. We’re additionally ready to configure the manner in which our Panoramic picture is connected with utilizing an assortment of choices, for example, setting the animSpeedlatitudelongitude ,zoomsensitivity, And much more!.

Thanks for reading this article ❤


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

Clap 👏 If this article helps you.

find the source code of the Flutter Panorama Demo:

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


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 a 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 FacebookGitHubTwitter, 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.