Google search engine
Home Blog Page 60

Version Management In Flutter

0

Flutter is a portable UI toolkit. In other words, it’s a comprehensive app Software Development toolkit (SDK) that comes complete with widgets and tools. Flutter is a free and open-source tool to develop mobile, desktop, web applications. Flutter is a cross-platform development tool. This means that with the same code, we can create both ios and android apps. This is the best way to save time and resources in our entire process. In this, hot reload is gaining traction among mobile developers. Allows us to quickly see the changes implemented in the code with hot reload.

Flutter Management Version allows different types of flutter versions to be available on a project basis. This means that we can define specific types of flutter versions for different types of projects, it allows us to release multiple channels, cache it locally, so switch versions. then we don’t have to wait for setup.

In this article, we will learn about Version Management In Flutter. In this, we will see how to set up work Version Management in a flutter. so let’s get started. so let’s get started.


Table Of Contents :

FLutter Version Management (FVM)

FVM Install

Install SDK Version

Set Up IDE

Conclusion


Flutter Version Management (FVM):

When we work on our flutter project, we need to release the updated flutter and the app, verify it, and switch different types of SDK to test it, which takes us time for development. To avoid this, we use Flutter Version Management, which provides us with different types of Flutter versions for our machines. So that each time Flutter can test the app against the updated Flutter release without waiting for installation and will be able to switch to the Flutter version accordingly.

FVM Install:

First of all, we need to make sure that flutter is already installed and whether the flutter is the stable channel. if not then Type the below code in your command line.

// set flutter to stable channel
flutter channel stable// check flutter channel
flutter channel// output
Flutter channels:
master
dev
beta
* stable
  • After this, we have to determine whether our flutter is already installed or not, if not then first we will install FVM.
$ pub global activate fvm
  • We will now see that some warnings are given at the end of the installation process, so we need to add the fvm path to the shell configuration file (.bashrc, bash_profile, etc.) before taking the next step
export PATH=”$PATH:`pwd`/flutter/bin”$ fvm install
export PATH=”$PATH:`pwd`/bin/cache/dart-sdk/bin”
export PATH=”$PATH:`pwd`/.pub-cache/bin”

SDK Version lnstall:

DVM allows us to install multiple types of flutter release or channels To install the channel use stable and to install the release version of flutter we will use v2.0.5 or 1.17.0-dev.3.1 and as soon as we run — skip-setup after that it will skip the setup

$ fvm install stable or fvm install 2.0.5

Project Config SDK Version:

After that, we will see that Whether the project is configured to use a specific version or not, if not, we will install it on the appropriate version without arguments.

$ fvm install

Flutter Installed Versions List:

Now by typing in the following command we can list the installed version on our machine by using the below command FVM will store the SDK version.

$ fvm list

Upgrade SDK Version:

Using upgrade SDK version command when we need to upgrade our current SDK version so you have to call command of your flutter SDK as in normal flutter installation.

$ fvm flutter upgrade

Set Up IDE:

Now we will see how to configure IDE, below we have shown how to configure in the android studio and vs code let’s see it now.

=> Android Studio:

In Your root project directory copy the absolute following symbolic link.

Example: /absolute/path-to-your-project/.fvm/flutter_sdk

After that we will open Languages ​​and Frameworks in the menu of Android Studio -> Now search for flutter or flutter and change the path to flutter SDK. and implement the change. Now you can run it with selected versions of flutter and debug it. If you want to see the new setting made then we can use Android Studio will restart again.

=> VS Code:

Now we will configure VS Code here we will see how to complete the VS Code process.

  • We can see all the installed versions by FVM in the code by providing the path to the flutter SDK version directory.
  • After that press, Cmd + then go to Settings.json and paste the below path.
"dart.flutterSdkPaths": ["$YOUR_PATH/fvm/versions",],
  • To get the above path we will execute the fvm list command.
// copy this path
Versions path: $YOUR_PATH/fvm/versions

After that type cmd + shift + p to use the sdk and type change sdk now and now you can choose your preferred version.

Conclusion:

In this article, I have explained Version Management in a flutter, which you can modify and experiment with according to your own, this little introduction was from the Version Management In Flutter.

I hope this blog will provide you with sufficient information on Trying up the Version Management In Flutter. We showed you the Explore Version Management In Flutter and worked on it in your flutter applications, 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 Facebook, GitHub, Twitter, and LinkedIn for any flutter-related queries.

Automatic Generate JSON Serializable In Flutter

0

Flutter is a portable UI toolkit. In other words, it’s a comprehensive app Software Development toolkit (SDK) that comes complete with widgets and tools. Flutter is a free and open-source tool to develop mobile, desktop, web applications. Flutter is a cross-platform development tool. This means that with the same code, we can create both ios and android apps. This is the best way to save time and resources in our entire process.

In this article, we will explore the Automatic Generate JSON Serializable In Flutter using josn_serializable_package and json_annotation, and see how to use it to parse our model into Json and generate our own code by serializing it. so let’s get started.


Table Of Contents :

Generate JSON Serializable

Implementation

Code Implementation

Code File

Conclusion


JSON Serializable:

The JSON (JavaScript Object Notation) is a kind of data format that encodes an object into a string. This kind of data can be easily translated between server and browser, and server to server. Serialization is a process that converts an object into the same string. For this, we use a json_serialization package however it can generate a model class for you as per the annotations provided with the help of the json_annotation library.

Implementation :

Whenever we have to create models and factories. Because models don’t always change so you don’t need to change models all the time. So to use JSON we have to add some of the following packages which are explained below.

  • json_serializable: This is provided to a Dart build system. It generates code when it finds annotated members in a class defined with json_annotation.
  • json_annotation: It defines the annotation used by Json_serializable to create JSON serialization, deserialization type of code.
  • build_runner: We use the build_runner package to generate files using dart code.

Let us now see how we add all these packages to our pubspec.

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies:

dependencies:
flutter:
sdk: flutter
# The following adds the Cupertino Icons font to your application.
# Use with the CupertinoIcons class for iOS style icons.
cupertino_icons: ^0.1.2
json_annotation: ^4.0.1dev_dependencies:
flutter_test:
sdk: flutter

build_runner: ^2.0.5
json_serializable: ^4.1.3

Step 2: Importing

import 'package:json_annotation/json_annotation.dart';
import 'package:build_runner/build_runner.dart';
import 'package:json_serializable/json_serializable.dart';

Step 3: Enable AndriodX

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:

First, we will create a model class of ours which we named user. dart.

Now we will see how manual serialization is done natively supported by Dart with the dart: convert library. User dart file is ready then we will have a list of data JSON objects inside it each object will have a user name, last name, and its address which we have defined in the variable of string type as you will see in the data class we have two We need to create functions called fromJson and toJson which, respectively, translate a JSON to our user.

import 'package:json_annotation/json_annotation.dart';
part 'user.g.dart';

@JsonSerializable()
class User {
String name, lastName, add;
bool subscription;

User({this.name,this.lastName,this.add,this.subscription,});

factory User.fromJson(Map<String,dynamic> data) => _$UserFromJson(data);

Map<String,dynamic> toJson() => _$UserToJson(this);

}

Now, this _$UserFromJson(json) will be generated by json_serializer when we run the build _runner command. From which we will get the user.g.dart file.

To run the build_runner command, we will open a terminal in our Android Studio and type the following line.

flutter pub run build_runner build

When we run the command in build runner, some line will appear and after some time it is generated successfully.

INFO] Generating build script...
[INFO] Generating build script completed, took 301ms[INFO] Initializing inputs
[INFO] Reading cached asset graph...[INFO] Reading cached asset graph completed, took 305ms[INFO] Checking for updates since last build...[INFO] Checking for updates since last build completed, took 1.5s[INFO] Running build...[INFO] Running build completed, took 4.7s[INFO] Caching finalized
dependency graph...[INFO] Caching finalized dependency graph completed, took 44ms[INFO] Succeeded after 4.8s with 0 outputs (1 actions)

After the build_runner process is finished we add a new file named user.g.dart below a user file that contains our serialization code. As we make a new model, then we flow through this process.

// GENERATED CODE - DO NOT MODIFY BY HAND

part of 'user.dart';

// **************************************************************************
// JsonSerializableGenerator
// **************************************************************************

User _$UserFromJson(Map<String, dynamic> json) {
return User(
name: json['name'] as String,
lastName: json['lastName'] as String,
add: json['add'] as String,
subscription: json['subscription'] as bool,
);
}

Map<String, dynamic> _$UserToJson(User instance) => <String, dynamic>{
'name': instance.name,
'lastName': instance.lastName,
'add': instance.add,
'subscription': instance.subscription,
};

After this, we have created a class in which we have shown a list item for which we have defined a future builder list view builder inside which we have defined the item of our user list in the text widget.

FutureBuilder<List<User>>(
future: getData(),
builder: (context, data) {
if (data.connectionState != ConnectionState.waiting &&
data.hasData) {
var userList = data.data;
return ListView.builder(
itemCount: userList.length,
itemBuilder: (context, index) {
var userData = userList[index];
return Container(
height: 100,
margin: EdgeInsets.only(top: 30, left: 20, right: 20),
decoration: BoxDecoration(
color: Colors.grey.shade200,
borderRadius: BorderRadius.all(Radius.circular(10)),
),
padding: EdgeInsets.all(15),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text(
'First Name: ' + userData.name,
style: TextStyle(
fontWeight: FontWeight.w600,),
),
],
),
);
});
} else {
return Center(
child: CircularProgressIndicator(),
);
}
})

When we run the application, we ought to get the screen’s output like the underneath screen capture.

Code File :

import 'dart:convert';

import 'package:flutter/material.dart';
import 'package:flutter_json_serilization_exm/main.dart';
import 'package:flutter_json_serilization_exm/model/user.dart';

class JsonSerilization extends StatefulWidget {
@override
_JsonSerilizationState createState() => _JsonSerilizationState();
}

class _JsonSerilizationState extends State<JsonSerilization> {
Future<List<User>> getData() async {
return await Future.delayed(Duration(seconds: 2), () {
List<dynamic> data = jsonDecode(JSON);
List<User> users = data.map((data) => User.fromJson(data)).toList();
return users;
});
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text("Json Serialization Demo"),
),
body: Container(
child: FutureBuilder<List<User>>(
future: getData(),
builder: (context, data) {
if (data.connectionState != ConnectionState.waiting &&
data.hasData) {
var userList = data.data;
return ListView.builder(
itemCount: userList.length,
itemBuilder: (context, index) {
var userData = userList[index];
return Container(
height: 100,
margin: EdgeInsets.only(top: 30, left: 20, right: 20),
decoration: BoxDecoration(
color: Colors.grey.shade200,
borderRadius: BorderRadius.all(Radius.circular(10)),
),
padding: EdgeInsets.all(15),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: [
Text(
'First Name: ' + userData.name,
style: TextStyle(
fontWeight: FontWeight.w600, fontSize: 15),
),
Text(
'Last Name: ' + userData.lastName,
style: TextStyle(
fontWeight: FontWeight.w600, fontSize: 15),
),
Text(
'Add: ' + userData.add,
style: TextStyle(
fontWeight: FontWeight.w600, fontSize: 15),
),
],
),
);
});
} else {
return Center(
child: CircularProgressIndicator(),
);
}
}),
),
);
}
}

Conclusion :

In this article, I have explained Automatic Generate JSON Serializable In Flutter, which you can modify and experiment with according to your own, this little introduction was from the Automatic Generate JSON Serializable In Flutter demo from our side.

I hope this blog will provide you with sufficient information in Trying up the Automatic Generate JSON Serializable In Flutter in your flutter project. We showed you what the Automatic Generate JSON Serializable In Flutter is and work on it in your flutter applications, 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 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.

Exploring Flutter Navigator 2.0: VRouter

0

Flutter has made it quite easy to develop complex UIs for developers. 
Flutter is a very performant app development framework that is written in Dart. It interacts efficiently and very easily on a native device. It is supported by Google.
Flutter automated testing empowers you to meet high responsiveness in your application as it helps in discovering bugs and various issues in your application. Flutter is a tool for developing mobile, desktop, web applications with code & is a free and open-source tool.

Hello friends In this blog, we will learn about Exploring Flutter Navigator 2.0: VRouter?. In this, we will see how to use Flutter Navigator 2.0: VRouter. so let’s get started.

vrouter | Flutter Package
A Flutter package that makes navigation and routing easy. Learn more at vrouter.dev Here are a few things that this…pub.dev


Table Of Contents :

Exploring Flutter Navigator

Implementation

Code Implementation

Conclusion


Exploring Flutter Navigator:

We use the router to handle the routing of any page, as its name suggests, by using the router package, we can manage the routing of our page, for this, we just need to create different routes for our page. For this, we have to define the route parameter.

Implementation:

Let us now see how we add all these packages to our pubspec.

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies :dependencies:
vrouter: ^1.1.0

Step 1: Install :

You can install packages from the command line:

flutter pub get

Step 2: Importing :

import 'package:vrouter/vrouter.dart';

Step 3: Enable AndriodX :

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

Code Implementation:

You need to implement it in your code respectively:

First of all, to handle the routing of any screen, we will use the VRouter widget as I have initialized this package in the implementation, in we will use the routes parameter to create our different routes and define it as below I have defined through a code reference for understanding.

VRouter(
initialUrl: '/homeItem',
routes: [
VWidget(
path: '/homeItem',
widget: HomeItemScreen(homeItemScreen: homeItem),
stackedRoutes: [
VWidget(
path: r':title',
widget: Builder(
builder: (context) => DetailsScreen(
homeItem: homeItem.firstWhere(
(homeItem) =>
homeItem.title ==
context.vRouter.pathParameters['title'],
),
),
),
),
],
),

VRouteRedirector(path: r':_(.+)', redirectTo: '/books'),
],
),

Now we will create an item list whose item class will be defined in the widget of the VRouter widget.

Before creating the list of items we will create a model class as I have referenced in the code below.

class HomeItem {
final String img;
final String title;
final String price;

HomeItem(this.img, this.title, this.price);
}

After this, we have taken the listview widget in which we have shown the image, title, and price of the item and on click of its item, a list detail screen will open.

ListView(
children: [
for (var homeItem in homeItemScreen)
GestureDetector(
onTap: () {
context.vRouter.push('${homeItem.title}');
},
child: Container(
margin: EdgeInsets.only(left: 15, right: 15, top: 20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(10)),
),
height: 85,
child: Row(
children: [
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(10)),
child: Image.asset(
homeItem.img,
fit: BoxFit.cover,
height: 85,
width: 100,
),
),
SizedBox(
width: 15,
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(homeItem.title,
style: TextStyle(
fontFamily: 'Poppins Regular',
fontWeight: FontWeight.w700,
fontSize: 13)),
SizedBox(
height: 2,
),
Text(homeItem.price,
style: TextStyle(
fontSize: 12, fontFamily: 'Poppins Medium')),
],
),
],
),
),
),
],
),

Now our item list is ready and visible and when we click on it, it goes to the next page whose detail class we have defined in our detail screen in builder inside stackedRoutes in the router so that the routing of our page handles.

Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(10)),
child: Image.asset(
homeItem.img,
height: 200,
fit: BoxFit.cover,
width: 1000,
),
),
SizedBox(
height: 20,
),
Text(homeItem.title, style: Theme.of(context).textTheme.headline6),
SizedBox(
height: 10,
),
Text(homeItem.price, style: Theme.of(context).textTheme.subtitle1),
],
),

When we run the application, we ought to get the screen’s output like the underneath screen capture.

Code File:

import 'package:flutter/material.dart';
import 'package:vrouter/vrouter.dart';

void main() {
List<HomeItem> homeItem = [
HomeItem('assets/images/hanging-lamp.png', 'Hamnger Lamp', '\$56.00'),
HomeItem('assets/images/furniture.png', 'Decor Furniture', '\$70.00'),
HomeItem('assets/images/home-decor.png', 'Decoration Item', '\$34.00'),
HomeItem('assets/images/marble-table.png', 'Marble Table', '\$48.00'),
HomeItem('assets/images/portable-speaker.png', 'Portable Speaker', '\$68.00'),
HomeItem('assets/images/hanging-lamp.png', 'Hamnger Lamp', '\$56.00'),
HomeItem('assets/images/furniture.png', 'Decor Furniture', '\$70.00'),
];

runApp(
VRouter(
initialUrl: '/homeItem',
routes: [
VWidget(
path: '/homeItem',
widget: HomeItemScreen(homeItemScreen: homeItem),
stackedRoutes: [
VWidget(
path: r':title',
widget: Builder(
builder: (context) => DetailsScreen(
homeItem: homeItem.firstWhere(
(homeItem) =>
homeItem.title ==
context.vRouter.pathParameters['title'],
),
),
),
),
],
),

VRouteRedirector(path: r':_(.+)', redirectTo: '/homeItem'),
],
),
);
}

class HomeItem {
final String img;
final String title;
final String price;

HomeItem(this.img, this.title, this.price);
}

class HomeItemScreen extends StatelessWidget {
final List<HomeItem> homeItemScreen;

HomeItemScreen({required this.homeItemScreen});

@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.grey.shade100,
appBar: AppBar(
title: Text('VRouter Demo'),
),
body: ListView(
children: [
for (var homeItem in homeItemScreen)
GestureDetector(
onTap: () {
context.vRouter.push('${homeItem.title}');
},
child: Container(
margin: EdgeInsets.only(left: 15, right: 15, top: 20),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.all(Radius.circular(10)),
),
height: 85,
child: Row(
children: [
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(10)),
child: Image.asset(
homeItem.img,
fit: BoxFit.cover,
height: 85,
width: 100,
),
),
SizedBox(
width: 15,
),
Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(homeItem.title,
style: TextStyle(
fontFamily: 'Poppins Regular',
fontWeight: FontWeight.w700,
fontSize: 13)),
SizedBox(
height: 2,
),
Text(homeItem.price,
style: TextStyle(
fontSize: 12, fontFamily: 'Poppins Medium')),
],
),
],
),
),
),
],
),
);
}
}

class DetailsScreen extends StatelessWidget {
final HomeItem homeItem;

DetailsScreen({
required this.homeItem,
});

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title:Text('Detail Screen'),
),
body: Padding(
padding: const EdgeInsets.all(20.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(10)),
child: Image.asset(
homeItem.img,
height: 200,
fit: BoxFit.cover,
width: 1000,
),
),
SizedBox(
height: 20,
),
Text(homeItem.title, style: Theme.of(context).textTheme.headline6),
SizedBox(
height: 10,
),
Text(homeItem.price, style: Theme.of(context).textTheme.subtitle1),
],
),
),
);
}
}

Conclusion:

In this article, I have explained Exploring Flutter Navigator 2.0: VRouter, which you can modify and experiment with according to your own, this little introduction was from the Exploring Flutter Navigator 2.0: VRouter demo from our side.

I hope this blog will provide you with sufficient information in Trying up the Exploring Flutter Navigator 2.0: VRouter In Flutter in your flutter project. We showed you what the Exploring Flutter Navigator 2.0: VRouter is and work on it in your flutter applications, 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 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.

Explore Ripple Into Page In Flutter

0

Flutter makes beautiful animations very simple and attractive likewise the truth is that we developers are afraid to push ourselves to the next level by including all those little animations that make our app stand out rather than beautiful. When we tune a component in a material design, it becomes very easy to be buddy with the ripples animation.

In this blog, we will explore Explore Ripple Into Page In Flutter. We will also implement a demo of the Explore Ripple Into Page In Flutter and how to use them in your flutter applications. So let’s get started.


Table of Contents :

Flutter

Explore Ripple Into Page In Flutter

Implementation

Code Implementation

Code File

Conclusion


Flutter :

“ Flutter is Google’s UI toolkit that helps you build beautiful and natively combined applications for mobile, web, and desktop in a single codebase in record time, Flutter offers great developer tools, with amazing hot reload”.

Ripple Into Page :

Flutter makes beautiful animations easy. That’s the fact. We as developers are also scared to push our apps to the next level by adding those minor animations that make the app beautiful instead of just pretty. Let’s change it together! In this post, I’d like to show you how we can add a ripple effect that may make your client say “I like that!”.

Implementation :

Let us now see how we add all these packages to our pubspec.

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies :dependencies:
ripple_navigation: ^1.0.5

Step 1: Install :

You can install packages from the command line:

flutter pub get

Step 2: Importing :

import 'package:ripple_navigation/ripple_navigation.dart';

Step 3: Enable AndriodX :

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

Code Implementation :

You need to implement it in your code respectively:

Before exploring the ripple page, we will create a controller inside the Globalkey, which we will define inside an animateRipple() method, whose controller type we can change according to us, as an example, the code is referenced below.

GlobalKey<RippleLocationState> rippleController = GlobalKey();

void animateRipple(){
rippleController.currentState!.forwardRipple();
}

Now to navigate to the next page with wave transition we have created an onPressed() method in which we use the pushRippleTransitionPage() method from the controller() inside which we have defined the second page which will send us from the first page to the second page.

For Example:

void onPressed() {
rippleController.currentState!.pushRippleTransitionPage(
context,
SecondScreen(),
);
}

After this we will define the center property inside a stateful widget, inside it, we will define the RippleLocation widget in which we will create a button, inside its onPressed() method, we will call the onPressedButton() method which will send us to the next page and we will in the RippleLocation() We also defined its property rippleController so that our ripple animate will display.

RippleLocation(
rippleController: rippleController,
child: RaisedButton(
padding: const EdgeInsets.all(12),
textColor: Colors.white,
color: Colors.green,
onPressed: () {
onPressedButton();
},
child: Text('Click Button'),
),
),

As we move from the first screen to the second screen we see ripple animation is displayed on the screen and send to the second screen on the second screen I have displayed an image and as soon as we click on the arrow of appBar then it sends us back to the first screen as I have given below code reference.

Center(
child: Padding(
padding: EdgeInsets.all(15),
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(10)),
child: Image.asset(
'assets/images/furniture.png',
height: 200,
fit: BoxFit.cover,
width: 1000,
),
),
),
),

Code File :

import 'package:flutter/material.dart';
import 'package:ripple_navigation/ripple_navigation.dart';

void main() {
runApp(MyApp());
}

class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
theme: ThemeData(
primarySwatch: Colors.blue,
visualDensity: VisualDensity.adaptivePlatformDensity,
),
home: RippleFirstScreen(),
);
}
}

class RippleFirstScreen extends StatefulWidget {
@override
_RippleFirstScreenState createState() => _RippleFirstScreenState();
}

class _RippleFirstScreenState extends State<RippleFirstScreen> {
GlobalKey<RippleLocationState> rippleController = GlobalKey();

void animateRipple() {
rippleController.currentState!.forwardRipple();
}

void onPressed() {
rippleController.currentState!.pushRippleTransitionPage(
context,
SecondScreen(),
);
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Flutter Ripple Demo'),
),
body: Center(
child: RippleLocation(
rippleController: rippleController,
child: RaisedButton(
// disabledColor: Colors.red,
// disabledTextColor: Colors.black,
padding: const EdgeInsets.all(12),
textColor: Colors.white,
color: Colors.green,
onPressed: () {
onPressed();
},
child: Text('Click Button'),
),
),
),
/*floatingActionButton: RippleLocation(
rippleController: rippleController,
child: FloatingActionButton(
onPressed: onPressed,
tooltip: 'Increment',
child: Icon(Icons.add),
),
),*/
);
}
}

class SecondScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Second Screen'),
backgroundColor: Colors.lightBlue,
),
body: Center(
child: Padding(
padding: EdgeInsets.all(15),
child: ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(10)),
child: Image.asset(
'assets/images/furniture.png',
height: 200,
fit: BoxFit.cover,
width: 1000,
),
),
),
),
);
}
}

Conclusion :

In this article, I have explained Explore Ripple Into Page In Flutter, which you can modify and experiment with according to your own, this little introduction was from the Explore Ripple Into Page In Flutter demo from our side.

I hope this blog will provide you with sufficient information in Trying up the Explore Ripple Into Page In Flutter in your flutter project. We showed you what the Explore Ripple Into Page In Flutter is and work on it in your flutter applications, 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 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.

Flutter integration tests on Firebase Test Lab

0

Flutter is an open-source User Interface SDK that is Software Development Kit. Flutter is an open-source project, and it is maintained by Google. Currently, in March 2021. Google has been released another new version of flutter that is Flutter 2. Flutter as a software development kit is great, but while building a big application, there will be some problems or bugs in the code that has to be debugged. Flutter provides multiple debugging tools such as timeline inspector, memory and performance inspector, and else. These tools ease up the debugging process for a developer, below are listed different tools for debugging flutter apps.

By the way, Flutter has the ability to easily test any application. The ability is that they work the way we want them on a target platform. Dart testing works well for unit and non-UI testing; It runs on the development machine and does not depend on the GUI of the Flutter application

Hello friends, I will talk about my new blog on Flutter integration tests on Firebase Test Lab. We will also implement Flutter integration tests on the Firebase Test Lab demo, and use them in your flutter applications. So let’s get started.


Table Of Contents :

Flutter

Integration Tests

Firebase Test Lab

Implementation

Conclusion


Flutter:

“ Flutter is Google’s UI toolkit that helps you build beautiful and natively combined applications for mobile, web, and desktop in a single codebase in record time, Flutter offers great developer tools, with amazing hot reload”.

What is Integration Test:

We use integration testing to learn how different parts work together. Unlike unit tests, it is intended to be run on devices (physical or virtual) and is used for end-to-end testing in addition to testing individual components. Due to this, these tests are much slower than unit tests, but they are a great way to test whether our app works correctly in real-life scenarios. It is called a test because we use the flutter_driver package and the flutter drive command line to run its GUI.

What is Firebase Test Lab:

Running integration tests is a great way to test our apps, but the equipment we have is limited. Either physical devices can be emulators or simulators, but most of them we need to set up to run tests on our machines. Will have to do This can be problematic if testing has to be done separately on multiple devices. For this we can connect with Firebase Test Lab in this we have access to thousands of devices hosted by Google with different device configurations. All these devices are stored in the cloud, so we can access them remotely. We just need to upload the APK of our app for testing and Firebase will run it.

Implementation:

You need to implement it in your code respectively :

Step 1: Add dependencies.

Add dependencies to pubspec — yaml file.

First, we will add flutter_localization and intl library to pubspec. yaml.

  dependencies:integration_test: ^1.0.2+3

Step 2: import the package :

import 'package:integration_test/integration_test.dart';

Step 3: Enable AndriodX

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

Started with integrations tests:

First we need to add IntegrationTestWidgetsFlutterBinding.ensureInitialized() to the method, to add support for integration testing. Because we need this method to initialize the flutter test environment.

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';

import 'package:flutter_integration_test_lab/main.dart';
import 'package:integration_test/integration_test.dart';

void main() {
IntegrationTestWidgetsFlutterBinding.ensureInitialized();

testWidgets('Counter increments smoke test', (WidgetTester tester) async {
// Build our app and trigger a frame.
await tester.pumpWidget(MyApp());

// Verify that our counter starts at 0.
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);

// Tap the '+' icon and trigger a frame.
await tester.tap(find.byIcon(Icons.add));
await tester.pump();

// Verify that our counter has incremented.
expect(find.text('0'), findsNothing);
expect(find.text('1'), findsOneWidget);
});
}

Test Running on your machine:

Now for us to run the test on our machine, first we need to create an entry point for the test driver script. To create this we have first created a package named test_driver, inside it, we will create a new file named integration_test.dart and paste it. Which is given in the below code reference.

import 'package:integration_test/integration_test_driver.dart';

Future<void> main() => integrationDriver();

This calldriver for text integration is a feature wrapper around the integrationdriver plugin that enables it to run new tests with the flutter drive command.

$ flutter drive \
--driver=test_driver/integration_test.dart \
--target=test/widget_integration_test.dart

Running Test on Firebase test lab:

Now we will first create a project in the Firebase console for the firebase test lab we don’t need to set up android and ios apps.

Now you can go and set up either Android, iOS, or both apps and prepare them to upload to Firebase Test Lab.

Android Setup:

Now we will set up Android, to set up this we will create a new file android/app/src/androidTest/java/your/package/yourapp/MainActivityTest.java.

package com.pszklarska.flutter_integration_test;

import androidx.test.rule.ActivityTestRule;
import dev.flutter.plugins.integration_test.FlutterTestRunner;
import org.junit.Rule;
import org.junit.runner.RunWith;

@RunWith(FlutterTestRunner.class)
public class MainActivityTest {
@Rule
public ActivityTestRule<MainActivity> rule = new ActivityTestRule<>(MainActivity.class, true, false);
}

After That, we will run the build. Gradle file for the test of android. Android will add a dependency for testing which will help us to test.android {

defaultConfig {
...
applicationId "com.example.flutter_integration_test_lab"
minSdkVersion 16
targetSdkVersion 28
versionCode flutterVersionCode.toInteger()
versionName flutterVersionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
}

dependencies {
...
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}

After all, this is set up you can generate the test build with some of the following instrumentation commands given below.

pushd android
flutter build apk
./gradlew app:assembleAndroidTest
./gradlew app:assembleDebug -Ptarget=test/widget_test.dart
popd

Now you will see that as soon as we click on Test Lab a screen opens and in this we click on Browse APK and go to /build/app/outputs/apk/debug/app-debug.apk in our project and Clicking on it then generates this file.

It automatically starts Robo testing as soon as our project is uploaded.

Now we will click on run test in test lab screen in which a pop will open then we will click on instrumentation as we click on it then the instrumentation test screen opens in which you have to upload two already generated apk.

  1. The App apk located in/build/app/outputs/apk/debug/app-debug.apk.

2. The Test app is located in /build/app/outputs/apk/androidTest/app-debug-androidTest.apk.

After that, we will select our devices and after continuing with this our test will start running. After some time its result will be visible.

Conclusion:

In this article, I have explained Flutter integration tests on Firebase Test Lab, which you can modify and experiment with according to your own, this little introduction was from the Flutter integration tests on Firebase Test Lab.

I hope this blog will provide you with sufficient information on Trying up the Flutter integration tests on Firebase Test Lab. How to integrate flutter to the existing android app? is and work on it in your flutter applications, 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 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.

Flutter V.I.P.E.R Pattern Architecture

0

Architecture is basically defining the flow of code into layers…

The VIPER architectural pattern is an option in contrast to MVC or MVVM. And keeping in mind that the SwiftUI and Combine systems make an incredible blend that takes care of building complex UIs and moving information around an application, they likewise accompany their own difficulties and conclusions about architecture.

Let’s dig into VIPER Pattern



VIPER: View, Interactor, Presenter, Entity, and Router Model

VIPER is an architectural pattern like MVC or MVVM, yet it isolates the code further by single duty. Apple-style MVC persuades developers to place all rationale into a UIViewController subclass. VIPER, as MVVM before it, tries to fix this issue.

VIPER architecture has 5 parts “View “, “ Interactor “, “Presenter”, “ Entity”, and “Router Modeland” it’s based on the Single Responsibility Principle which provides it with smooth and clean functionality. VIPER offers an approach to building apps with a clean architecture that effectively separates the different functions and responsibilities required, such as the user interface, business logic, data storage, and networking. These are then easier to test, maintain and expand.

VIPER offers a good layer of abstraction resulting in a more scalable and testable code.

  • It simplifies complex projects hence making it an ideal choice for large teams.
  • It makes the process scalable and enables developers to work simultaneously on a project.

VIPER is an acronym for View-Interactor-Presenter-Entity-Router. Each functionality or module must be defined by these five components.

The integral parts of a VIPER architecture are mentioned below:

> View:

The View is the user interface. It’s responsible for displaying things as directed by the presenter and sends the actions taken by the user to the presenter

> Interactor:

The Interactor is responsible for interacting between the presenter(business logic layer) and the data(domain layer).

> Presenter:

This is our Business logic layer. Directing data between UI layer and Interactor Layer and taking user actions and calling to the router to move the user between views.

> Entity:

It’s the information and data used on the functionality. In our case, it will be CoreData since our information will be stored there.

> Router :

It stores the navigation logic used for describing which screens need to be displayed.

In VIPER Only the presenter talks to the view, and only the interactor talks to the model (entity). The presenter and interactor coordinate with each other. The presenter is concerned with display and user action, and the interactor is concerned with manipulating the data.

Comparison with MVVM:

A design pattern that offers a similar level of abstraction is MVVM (Model-View-ViewModel). Between both patterns, we can identify the similarities, for example:

  • The View on MVVM is the View on VIPER;
  • The Model on MVVM is the Entity on VIPER;

When to use VIPER Pattern?:

  • When you want to keep all the modules isolated.
  • When we want a good testing environment
  • Should be used only when the developers completely understand the project.

VIPER also has some disadvantages too:

  • Generates a lot of boilerplate code, making the initial development phase slower.
  • When the application requirements are well-formed.
  • Should be used only when the developers completely understand the project

Link for Repository :

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

❤ ❤ Thanks for reading this article ❤❤

If you find anything that could be improved please let me know, 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 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!


Image Parallax Scrolling Effect In Flutter

0

The flutter widget is built using a modern framework. It is like a reaction. In this, we start with the widget to create any application. Each component in the screen is a widget. The widget describes what his outlook should be given his present configuration and condition. Widget shows were similar to its idea and current setup and state. Flutter is a free and open-source tool to develop mobile, desktop, web applications with a single code base.

Hello friends, I will talk about my new blog on Image Parallax Scrolling Effect In Flutter. We will also implement an Image Parallax Scrolling Effect Flutter demo, describe his properties, and use them in your flutter applications. So let’s get started.


Table Of Contents :

Image Parallax Scrolling Effect

Code Implement

Code File

Conclusion


Image Parallax Scrolling Effect :

The use of Image Parallax Scrolling when we scroll down the list of any image, then we see that the image also appears scrolling upwards at a very slow speed, as soon as we scroll the image list from the bottom. It then slows down in its position as if the card in the list is in the foreground, an effect known as parallax.

Code Implement :

You need to implement it in your code respectively:

First of all, we have taken a listview builder to show the image parallax scrolling image in the list inside which the image and its title have been defined.

ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: locations.length,
itemBuilder: (BuildContext context, int index) {
return _buildEssentialsBeginnersModel(locations[index], index);
},
),

After this, we have created a model class named ImageList to show the items in the list in which Image and Title are two values.

class ImageList {
const ImageList({
required this.title,
required this.imageUrl,
});

final String title;
final String imageUrl;
}
const imageList = [
ImageList(
title: 'U.S.A',
imageUrl: 'assets/images/boston1.jpg',
),
ImageList(
title: 'Singapore',
imageUrl: 'assets/images/boston2.jpeg',
),
ImageList(
title: 'Peru',
imageUrl: 'assets/images/business.jpeg',
),
];

After creating the model class, we have created a class named ParallaxFlowDelegate to parse the image, which extends from FlowDelegate, inside this class, the scrolling position of the list and the vertical alignment of the list, etc. have been defined, which is the background of the image in the background of the image. the effect will be visible.

Now we will initialize the ParallaxFlowDelegate in the item list of the Image. To show the items of the list, we have created a method in the listview named _buildImageModel inside which we have used the Stack() Widget in which we have defined the ParallaxFlowDelegate in the delegate property of the Flow() Widget which has scrollable. Properties like listItemContext, scrollable, backgroundImageKey have been used which gives a parallax effect to the card inside the image.

Flow(
delegate: ParallaxFlowDelegate(
scrollable: Scrollable.of(context)!,
listItemContext: context,
backgroundImageKey: _backgroundImageKey,
),
children: [
Image.asset(
imageUrl,
key: _backgroundImageKey,
fit: BoxFit.cover,
),
],
)

Code File :

import 'package:flutter/material.dart';
import 'package:flutter_parallax_effect_demo/Data/data.dart';
import 'package:flutter_parallax_effect_demo/main.dart';
import 'package:flutter_parallax_effect_demo/widget.dart';
class ExampleParallax extends StatelessWidget {
const ExampleParallax({
Key? key,
}) : super(key: key);

@override
Widget build(BuildContext context) {
return Container(
child:ListView.builder(
scrollDirection: Axis.vertical,
shrinkWrap: true,
itemCount: locations.length,
itemBuilder: (BuildContext context, int index) {
return _buildEssentialsBeginnersModel(locations[index], index);
},
),
);
}

Widget _buildEssentialsBeginnersModel(Location items, int index) {
return LocationListItem(
imageUrl: items.imageUrl,
name: items.name,
country: items.place,
);
}
}

class LocationListItem extends StatelessWidget {
LocationListItem({
Key? key,
required this.imageUrl,
required this.name,
required this.country,
}) : super(key: key);

final String imageUrl;
final String name;
final String country;
final GlobalKey _backgroundImageKey = GlobalKey();

@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 16),
child: AspectRatio(
aspectRatio: 16 / 9,
child: ClipRRect(
borderRadius: BorderRadius.circular(16),
child: Stack(
children: [
_buildParallaxBackground(context),
_buildGradient(),
_buildTitleAndSubtitle(),
],
),
),
),
);
}

Widget _buildParallaxBackground(BuildContext context) {
return Flow(
delegate: ParallaxFlowDelegate(
scrollable: Scrollable.of(context)!,
listItemContext: context,
backgroundImageKey: _backgroundImageKey,
),
children: [
Image.network(
imageUrl,
key: _backgroundImageKey,
fit: BoxFit.cover,
),
],
);
}

Widget _buildGradient() {
return Positioned.fill(
child: DecoratedBox(
decoration: BoxDecoration(
gradient: LinearGradient(
colors: [Colors.transparent, Colors.black.withOpacity(0.7)],
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
stops: [0.6, 0.95],
),
),
),
);
}

Widget _buildTitleAndSubtitle() {
return Positioned(
left: 20,
bottom: 20,
child: Column(
mainAxisSize: MainAxisSize.min,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
name,
style: const TextStyle(
color: Colors.white,
fontSize: 20,
fontWeight: FontWeight.bold,
),
),
Text(
country,
style: const TextStyle(
color: Colors.white,
fontSize: 14,
),
),
],
),
);
}
}

Conclusion :

In this article, I have explained Image Parallax Scrolling Effect In Flutter, which you can modify and experiment with according to your own, this little introduction was from the Image Parallax Scrolling Effect In Flutter demo from our side.

I hope this blog will provide you with sufficient information in Trying up the Explore Image Parallax Scrolling Effect In Flutter in your flutter project. We showed you the Explore Image Parallax Scrolling Effect In Flutter and work on it in your flutter applications, 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 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.

Glassmorphism Card In Flutter

0

Glassmorphism is a user interface (UI) trend of cards in Flutter and a very important component of website consent and achievement. It is very responsive to changes in UI patterns and styles and various evolving styles. Influenced UI Glassmorphism has overwhelmed the most recent UI patterns. This style has been used in a variety of products such as the Apple Ios 7, Windows Vista, etc. Glassmorphism is a form of transparency.

In this blog, we will explore Glassmorphism Card In Flutter. We will also implement a demo of the Glassmorphism Card In Flutter. How to use them in your flutter applications. So let’s get started.


Table Of Contents :

Glassmorphism Card

Implementation

Code Implement

Code File

Conclusion


Glassmorphism Card :

Using the Glassmorphism card, we blur the background of the UI and at the same time apply it to the virtual glass as it is a multi-layered methodology to make it appear as if the item is skimming through space The fuzzy effect is highlighted with energetic tones. This pattern is quickly gaining prominence as it is an open-source UI development kit from Flutter so we can use it for UI design for different platforms.

Implementation :

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies :

dependencies:
glassmorphism: ^2.0.1

Step 2: Importing

import 'package:glassmorphism/glassmorphism.dart';

Step 3: Enable AndriodX

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

Code Implementation :

You need to implement it in your code respectively:

Before exploring the Glassmorphism card, we have created a dart file, inside the body part of which we have taken a container widget, which we have given a gradient color to its background using the decoration property.

Positioned(
top: constraints.maxHeight * 0.19,
left: constraints.maxWidth * 0.01,
child: Container(
height: constraints.maxHeight * 0.20,
width: constraints.maxWidth * 0.35,
decoration: BoxDecoration(
gradient: RadialGradient(
colors: [
Colors.deepPurpleAccent,
Colors.purple
],
radius: 0.7,
),
shape: BoxShape.circle),
)),

Now we took a Center() widget inside the container which when we use any widget then it will display in the center. Now we will use GlassMorphicContainer inside the center widget which is a kind of plugin, in we have given its height, width and have defined blur, borderRadius size in it, in this, we have given its shape like a credit card and some of it Test defined so that our card looks good.

GlassmorphicContainer(
height: _height * 0.3,
width: _width * 0.9,
borderRadius:15,
blur: 15,
alignment: Alignment.center,
border: 2,
linearGradient: LinearGradient(
colors: [
Colors.white.withOpacity(0.2),
Colors.white38.withOpacity(0.2)
],
begin: Alignment.topLeft,
end: Alignment.bottomRight),
borderGradient: LinearGradient(colors: [
Colors.white24.withOpacity(0.2),
Colors.white70.withOpacity(0.2)
]),
child: Container(
decoration: BoxDecoration(boxShadow: [
BoxShadow(
blurRadius: 16,
spreadRadius: 16,
color: Colors.black.withOpacity(0.1),
)
]),
child: ClipRRect(
borderRadius: BorderRadius.circular(15.0),
child: BackdropFilter(
filter: ImageFilter.blur(
sigmaX: 20.0,
sigmaY: 20.0,
),
child: Container(
height: _height * 0.7,
width: _width * 0.9,
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.2),
borderRadius: BorderRadius.circular(16.0),
border: Border.all(
width: 1.5,
color: Colors.white.withOpacity(0.2),
)),
child: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('ICICI BANK', style: TextStyle(color: Colors.white.withOpacity(0.75))),
Icon(Icons.credit_card_sharp, color: Colors.white.withOpacity(0.75),)
],
),
Spacer(),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('VISA', style: TextStyle(color: Colors.white.withOpacity(0.75))),
Text('09/27', style: TextStyle(color: Colors.white.withOpacity(0.75))),
],
),
SizedBox(height:10,),
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text('3648 3847 9283 1482', style: TextStyle(color: Colors.white.withOpacity(0.75))),
],
)
],
),
)
),
),
),
),
)

Code File :

import 'dart:ui';

import 'package:flutter/material.dart';

import 'package:glassmorphism/glassmorphism.dart';

class GlassMorphismDemo extends StatefulWidget {
@override
_GlassMorphismDemoState createState() => _GlassMorphismDemoState();
}

class _GlassMorphismDemoState extends State<GlassMorphismDemo> {
late double _height;
late double _width;

@override
Widget build(BuildContext context) {
_height = MediaQuery.of(context).size.height;
_width = MediaQuery.of(context).size.width;
return Scaffold(
appBar: AppBar(
elevation: 0.0,
title: Text('Glassmorphic Card Demo'),
),
body: Container(
height: _height,
width: _width,
decoration: BoxDecoration(
gradient: RadialGradient(
colors: [Colors.green, Colors.blue, Colors.orange, Colors.pink],
stops: [0.2, 0.5, 0.7, 1],
center: Alignment(0.1, 0.3),
focal: Alignment(-0.1, 0.6),
focalRadius: 2,
),
),

// building the layout
child: Center(
child: GlassmorphicContainer(
height: _height * 0.3,
width: _width * 0.9,
borderRadius: 15,
blur: 15,
alignment: Alignment.center,
border: 2,
linearGradient: LinearGradient(colors: [
Colors.white.withOpacity(0.2),
Colors.white38.withOpacity(0.2)
], begin: Alignment.topLeft, end: Alignment.bottomRight),
borderGradient: LinearGradient(colors: [
Colors.white24.withOpacity(0.2),
Colors.white70.withOpacity(0.2)
]),
child: Container(
decoration: BoxDecoration(boxShadow: [
BoxShadow(
blurRadius: 16,
spreadRadius: 16,
color: Colors.black.withOpacity(0.1),
)
]),
child: ClipRRect(
borderRadius: BorderRadius.circular(15.0),
child: BackdropFilter(
filter: ImageFilter.blur(
sigmaX: 20.0,
sigmaY: 20.0,
),
child: Container(
height: _height * 0.7,
width: _width * 0.9,
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.2),
borderRadius: BorderRadius.circular(16.0),
border: Border.all(
width: 1.5,
color: Colors.white.withOpacity(0.2),
)),
child: Padding(
padding: EdgeInsets.all(16.0),
child: Column(
children: [
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text('ICICI BANK',
style: TextStyle(
color:
Colors.white.withOpacity(0.75))),
Icon(
Icons.credit_card_sharp,
color: Colors.white.withOpacity(0.75),
)
],
),
Spacer(),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text('VISA',
style: TextStyle(
color:
Colors.white.withOpacity(0.75))),
Text('09/27',
style: TextStyle(
color:
Colors.white.withOpacity(0.75))),
],
),
SizedBox(
height: 10,
),
Row(
mainAxisAlignment:
MainAxisAlignment.spaceBetween,
children: [
Text('3648 3847 9283 1482',
style: TextStyle(
color:
Colors.white.withOpacity(0.75))),
],
)
],
),
)),
),
),
),
),
),
));
}
}

Conclusion:

In this article, I have explained Glassmorphism Card In Flutter, which you can modify and experiment with according to your own, this little introduction was from the Glassmorphism Card In Flutter demo from our side.

I hope this blog will provide you with sufficient information on Trying up the Glassmorphism Card In Flutter in your flutter project. We showed you what the Glassmorphism Card In Flutter is and work on it in your flutter applications, 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 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.

Explore Flutter Encrypt & Decrypt PDF Files

Flutter is a portable UI toolkit. In other words, it’s a comprehensive app Software Development toolkit (SDK) that comes complete with widgets and tools. Flutter is a free and open-source tool to develop mobile, desktop, web applications. Flutter is a cross-platform development tool. This means that with the same code, we can create both ios and android apps. This is the best way to save time and resources in our entire process. In this, hot reload is gaining traction among mobile developers. Allows us to quickly see the changes implemented in the code with hot reload.

In this article, we will explore the Explore Flutter Encrypt &Decrypt PDF Files using the Syncfusion_flutter_pdf_file_package. With the help of the package, this user can encrypt and decrypt PDF documents in a flutter. So let’s get started.


Table Of Contents :

Encrypt and Decrypt PDF

Code Implement

Code File

Conclusion


Encrypt and Decrypt PDF :

Encrypt PDF files allows to protect the user from unauthorized access to PDF documents As data theft has become a big problem nowadays, it is necessary to secure the files before sending them to prevent unauthorized access to their data to the recipient. Happens if a PDF document is encrypted then we will decrypt it first to access its data content.

Provides two types of passwords to protect PDF files.

  • Document open password: Document Open Password Encrypts the PDF document with the user password that is required to open the PDF document.
  • Permission Passwords are used to limit access permissions to tasks such as printing, editing, and copying PDF document content

Implementation :

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies :

dependencies:
syncfusion_flutter_pdf: ^19.2.48-beta
open_file: ^3.0.1
path_provider: ^1.6.5

Step 2: Importing

import 'package:syncfusion_flutter_pdf/pdf.dart';
import ‘dart:io’;
import ‘package:open_file/open_file.dart’;
import ‘package:path_provider/path_provider.dart’;

Step 3: Enable AndriodX

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

Code Implement :

Before explaining about encrypt and decrypt the pdf file, we will create a new dart file inside which we will take the column widget and create three different buttons inside it, on the click of each button it will show a different example.

Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
onPressed:securePdf, child: Text('Encrypt PDF'),
),

FlatButton(onPressed: securePdf, child: Text('Encrypt PDF')),
FlatButton(
onPressed: restrictPermissions,
child: Text('Restrict Permissions')),
FlatButton(onPressed: decryptPDF, child: Text('Decrypt PDF')),
]),

After defining the button we will first click on the button Encrypt PDF which onPressed has a defined method named securePDF() which loads the PDF document and opens the file of the PDF document in which it is saved.

Future<void> securePdf() async {
PdfDocument document = PdfDocument(
inputBytes: await _readDocumentData('credit_card_statement.pdf'));
document.security.userPassword = 'password@123';
List<int> bytes = document.save();
document.dispose();
_launchPdf(bytes, 'secured.pdf');
}

It has the _readDocumentData method which is used to read a PDF document of list type from the folder in which it is saved, the reference to the code below is included.

Future<List<int>> _readDocumentData(String name) async {
final ByteData data = await rootBundle.load('assets/$name');
return data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
}

Now we will use the below code reference to get the directory path to launch the PDF document.

Future<void> _launchPdf(List<int> bytes, String fileName) async {
Directory directory = await getExternalStorageDirectory();
String path = directory.path;
File file = File('$path/$fileName');
await file.writeAsBytes(bytes, flush: true);
OpenFile.open('$path/$fileName');
}

Restrict PDF Permissions:

In Restrict PDF Permissions, you can customize the permissions to allow or restrict PDF documents. Like we can copy the content, edit the document, fill in the fields of the form it all lists the permission flags supported by this pdf library.

Include the following code to restrict the PDF document permissions.

PdfDocument document = PdfDocument(
inputBytes: await _readDocumentData('credit_card_statement.pdf'));
PdfSecurity security = document.security;
security.ownerPassword = 'owner@123';
security.permissions.addAll(<PdfPermissionsFlags>[
PdfPermissionsFlags.fullQualityPrint,
PdfPermissionsFlags.print,
PdfPermissionsFlags.fillFields,
PdfPermissionsFlags.copyContent
]);
//Save and dispose the document.
document.dispose();
_launchPdf(bytes, 'permissions.pdf');

Decrypt PDF:

Using flutter pdf library we can remove security from pdf documents password is required to decrypt pdf.

  • User password Removing from a PDF document: To remove open password in this we can do this by using the user password property available in the pdf security class.
PdfDocument document = PdfDocument(
inputBytes: await _readDocumentData('secured.pdf'),
password: 'owner@123');
PdfSecurity security = document.security;
security.userPassword = '';
  • User password Removing from a PDF document: In this, we can extract the password by using PDFSecurity class with the help of ownerPassword property available in it as given in the below code reference.
PdfDocument document = PdfDocument(
inputBytes: await _readDocumentData('secured.pdf'),
password: 'owner@123');
PdfSecurity security = document.security;
security.ownerPassword = '';

Code File :

import 'package:flutter/material.dart';

import 'package:flutter/services.dart';
import 'package:open_file/open_file.dart';
import 'package:path_provider/path_provider.dart';
import 'package:syncfusion_flutter_pdf/pdf.dart';
import 'dart:io';
class EncryptDecryptPdfDemo extends StatefulWidget {

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

class _EncryptDecryptPdfDemoState extends State<EncryptDecryptPdfDemo> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
//title: Text(widget.title),
),
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
RaisedButton(
onPressed:securePdf, child: Text('Encrypt PDF'),
),

// FlatButton(onPressed: securePdf, child: Text('Encrypt PDF')),
FlatButton(
onPressed: restrictPermissions,
child: Text('Restrict Permissions')),
FlatButton(onPressed: decryptPDF, child: Text('Decrypt PDF')),
]),
),
);
}

Future<void> securePdf() async {
//Load the existing PDF document.
PdfDocument document = PdfDocument(
inputBytes: await _readDocumentData('credit_card_statement.pdf'));
//Set the document security.
document.security.userPassword = 'password@123';
//Save and dispose the document.
List<int> bytes = document.save();
document.dispose();
//Open the PDF file.
_launchPdf(bytes, 'secured.pdf');
}

Future<void> _launchPdf(List<int> bytes, String fileName) async {
//Get the external storage directory
Directory directory = await getExternalStorageDirectory();
//Get the directory path
String path = directory.path;
//Create an empty file to write the PDF data
File file = File('$path/$fileName');
//Write the PDF data
await file.writeAsBytes(bytes, flush: true);
//Open the PDF document in mobile
OpenFile.open('$path/$fileName');
}

Future<List<int>> _readDocumentData(String name) async {
final ByteData data = await rootBundle.load('assets/$name');
return data.buffer.asUint8List(data.offsetInBytes, data.lengthInBytes);
}

Future<void> restrictPermissions() async {
//Load the existing PDF document.
PdfDocument document = PdfDocument(
inputBytes: await _readDocumentData('credit_card_statement.pdf'));
//Create document security.
PdfSecurity security = document.security;
//Set the owner password for the document.
security.ownerPassword = 'owner@123';
//Set various permission.
security.permissions.addAll(<PdfPermissionsFlags>[
PdfPermissionsFlags.fullQualityPrint,
PdfPermissionsFlags.print,
PdfPermissionsFlags.fillFields,
PdfPermissionsFlags.copyContent
]);
//Save and dispose the document.
List<int> bytes = document.save();
document.dispose();
//Open the PDF file.
_launchPdf(bytes, 'permissions.pdf');
}

Future<void> decryptPDF() async {
//Load the PDF document with permission password.
PdfDocument document = PdfDocument(
inputBytes: await _readDocumentData('secured.pdf'),
password: 'owner@123');
//Get the document security.
PdfSecurity security = document.security;
//Set owner and user passwords are empty string.
security.userPassword = '';
security.ownerPassword = '';
//Clear the security permissions.
security.permissions.clear();
//Save and dispose the document.
List<int> bytes = document.save();
document.dispose();
//Open the PDF file.
_launchPdf(bytes, 'unsecured.pdf');
}
}

Conclusion :

In this article, I have learned Encrypt and Decrypt PDF documents using the flutter pdf library in a Flutter application, which you can modify and experiment with according to your own, this little introduction was from the Encrypt and Decrypt PDF documents. In the Flutter demo from our side.

I hope this blog will provide you with sufficient information in Trying up the Encrypt and Decrypt PDF documents in a flutter. In Flutter in your flutter project. We showed you what the Encrypt and Decrypt PDF documents In Flutter are? and work on it in your flutter applications, 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 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.

Explore Concentric Transition In Flutter

Flutter widget is built using a modern framework. It is like a react. In this, we start with the widget to create any application. Each component in the screen is a widget. The widget describes what his outlook should be given his present configuration and condition. Widget shows were similar to its idea and current setup and state.

Flutter automated testing empowers you to meet high responsiveness in your application as it helps in discovering bugs and various issues in your application. A Flutter is a tool for developing mobile, desktop, web applications with code & is a free and open-source tool.

In this article, we will explore the Explore Concentric Transition In Flutter using the flutter_concentric_transition_package. With the help of the package, we can easily achieve flutter concentric transition. So let’s get started.


Table Of Contents :

Concentric Transition

Implementation

Code Implement

Code File

Conclusion


Concentric Transition :

Concentric Transitions plugin is a very good plugin in a flutter. Users can use this plugin to create an animation type of onboarding screen and create custom animation screens like concentric page routers, custom clippers, etc. like we use Concentric PageRoute Then provides us animation type of page route which sends us from one screen to another.

Features:

  • Concentric PageView
  • Concentric Clipper
  • Concentric PageRoute

Implementation :

You need to implement it in your code respectively :

Step 1: Add dependencies.

Add dependencies to pubspec — yaml file.

dependencies:
concentric_transition: ^1.0.1+1

Step 2: import the package :

import 'package:concentric_transition/concentric_transition.dart';

Step 3: Run flutter package get

Code Implementation :

You need to implement it in your code respectively:

Before defining ConcentricPageView we will create a class in which we will define its title, image, color, etc as given in the below code reference.

class OnboardingData {
final String? title;
final Image? icon;
final Color bgColor;
final Color textColor;

OnboardingData({
this.title,
this.icon,
this.bgColor = Colors.white,
this.textColor = Colors.black,
});
}

After this, we will define the onboarding class data in a list that will display the data given to us on the screen. let’s understand it with its code reference below.

final List<OnboardingData> onBoardingData = [
OnboardingData(
icon:Image.asset('assets/images/melon.png'),
title: "Fresh Lemon\nfruits",
//textColor: Colors.white,
bgColor: Color(0xffCFFFCE),
),
OnboardingData(
icon:Image.asset('assets/images/orange.png'),
title: "Fresh Papaya\nfruits",
bgColor: Color(0xffFFE0E1),
),
OnboardingData(
icon:Image.asset('assets/images/papaya.png'),
title: "Fresh Papaya\nfruits",
bgColor: Color(0xffFCF1B5),
//textColor: Colors.white,
),
];

We will now use the ConcentricPageView widget inside the body in which color and duration of the animation. Using the column widget, we will show the image inside a box and display its title below the image. let’s understand it with its code reference below.

ConcentricPageView(
colors: colors,
radius: 30,
curve: Curves.ease,
duration: Duration(seconds: 2),
itemBuilder: (index, value) {
OnboardingData page = onBoardingData[index % onBoardingData.length];
return Container(
child: Theme(
data: ThemeData(
textTheme: TextTheme(
headline6: TextStyle(
color: page.textColor,
fontWeight: FontWeight.w600,
fontFamily: 'Helvetica',
letterSpacing: 0.0,
fontSize: 17,
),
subtitle2: TextStyle(
color: page.textColor,
fontWeight: FontWeight.w300,
fontSize: 18,
),
),
),
child: OnBoardingPage(onboardingDataPage: page),
),
);
},
),

When we run the application, we ought to get the screen’s output like the underneath screen capture.

Code File :

import 'dart:ui';
import 'package:concentric_transition/concentric_transition.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/painting.dart';

class ConcentricPageViewDemo extends StatelessWidget {
final List<OnboardingData> onBoardingData = [
OnboardingData(
icon:Image.asset('assets/images/melon.png'),
title: "Fresh Lemon\nfruits",
//textColor: Colors.white,
bgColor: Color(0xffCFFFCE),
),
OnboardingData(

icon:Image.asset('assets/images/orange.png'),
title: "Fresh Papaya\nfruits",
bgColor: Color(0xffFFE0E1),
),
OnboardingData(

icon:Image.asset('assets/images/papaya.png'),
title: "Fresh Papaya\nfruits",
bgColor: Color(0xffFCF1B5),
//textColor: Colors.white,
),
];

List<Color> get colors => onBoardingData.map((p) => p.bgColor).toList();

@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: Scaffold(
body: ConcentricPageView(
colors: colors,
radius: 30,
curve: Curves.ease,
duration: Duration(seconds: 2),
itemBuilder: (index, value) {
OnboardingData page = onBoardingData[index % onBoardingData.length];
return Container(
child: Theme(
data: ThemeData(
textTheme: TextTheme(
headline6: TextStyle(
color: page.textColor,
fontWeight: FontWeight.w600,
fontFamily: 'Helvetica',
letterSpacing: 0.0,
fontSize: 17,
),
subtitle2: TextStyle(
color: page.textColor,
fontWeight: FontWeight.w300,
fontSize: 18,
),
),
),
child: OnBoardingPage(onboardingDataPage: page),
),
);
},
),
),
);
}
}

class OnBoardingPage extends StatelessWidget {
final OnboardingData onboardingDataPage;

const OnBoardingPage({
Key? key,
required this.onboardingDataPage,
}) : super(key: key);

@override
Widget build(BuildContext context) {
return Container(
margin: EdgeInsets.symmetric(
horizontal: 30.0,
),
child: Column(
// mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
_buildPicture(context),
SizedBox(height: 30),
_buildText(context),
],
),
);
}

Widget _buildText(BuildContext context) {
return Text(
onboardingDataPage.title!,
style: Theme.of(context).textTheme.headline6,
textAlign: TextAlign.center,
);
}

Widget _buildPicture(
BuildContext context, {
double size = 190,
double iconSize = 170,
}) {
return Container(
width: size,
height: size,
decoration: BoxDecoration(
borderRadius: BorderRadius.all(Radius.circular(60.0)),
color: onboardingDataPage.bgColor
// .withBlue(page.bgColor.blue - 40)
.withGreen(onboardingDataPage.bgColor.green + 20)
.withRed(onboardingDataPage.bgColor.red - 100)
.withAlpha(90),
),
padding:EdgeInsets.all(15),
margin: EdgeInsets.only(
top: 140,
),
child:onboardingDataPage.icon,
);
}
}

class OnboardingData {
final String? title;
final Image? icon;
final Color bgColor;
final Color textColor;

OnboardingData({
this.title,
this.icon,
this.bgColor = Colors.white,
this.textColor = Colors.black,
});
}

Conclusion:

In this article, I have explained Explore Concentric Transition In Flutter, which you can modify and experiment with according to your own, this little introduction was from the Explore Concentric Transition In Flutter demo from our side.

I hope this blog will provide you with sufficient information on Trying up the Explore Concentric Transition In Flutter in your flutter project. We showed you what the Explore Concentric Transition In Flutter is and work on it in your flutter applications, 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 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.