Google search engine
Home Blog Page 67

Feature Discovery In Flutter

Hello friends, I will talk about my new blog on Feature Discovery In Flutter. we will explore the Feature Discovery In flutter using the feature_discovery_package. With the help of the package, we can easily achieve the flutter feature discovery. So let’s get started.

feature_discovery | Flutter Package
This Flutter package implements Feature Discovery following the Material Design guidelines. With Feature Discovery, you…pub.dev


Table of Contents :

Flutter

Feature Discovery

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”

Feature Discovery :

The Feature Discovery Package animated implements feature discovery following custom design guidelines, in this, we can use any widget within feature discovery, we use it to introduce the user to a feature about which they wouldn’t you know.

Demo Module :

Implementation :

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies :

dependencies:   
feature_discovery: ^0.13.0+2

Step 2: Importing

import 'package:feature_discovery/feature_discovery.dart';

Step 3: Run flutter package get

Code Implementation :

Create a new dart file called flutter__zoom_drawer_demo.dart inside the libfolder.

First of all, we have to wrap our widget tree in the feature discovery widget and inside it, we will add any class or material to the child widget.

FeatureDiscovery(
recordStepsInSharedPreferences: false,
child: FeatureDiscoveryDemoApp(),
),

Now we will implement FeatureDiscovery.discoverFeature inside the initState() method in which we will give the feature’s id so that the user taps the first feature then it will be sent to the next feature.

@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
FeatureDiscovery.discoverFeatures(context,
<String>[
'feature1',
'feature2',
'feature3',
'feature4',
]
);
});
super.initState();
}

Now we will discuss DescribedFeatureOverlay () widget. This widget takes all the parameters for an overlay displayed during feature search that will display the overlay as its child. This will pass a feature ID inside it which is of string type using the ID. So that we can know which feature is shown on this screen, we have defined feature1, first of all, we will see this feature.

DescribedFeatureOverlay(
featureId: 'feature1',
targetColor: Colors.white,
textColor: Colors.black,
backgroundColor: Colors.red.shade100,
contentLocation: ContentLocation.trivial,
title: Text(
'This is Button',
style: TextStyle(fontSize: 20.0),
),
pulseDuration: Duration(seconds: 1),
enablePulsingAnimation: true,
overflowMode: OverflowMode.extendBackground,
openDuration: Duration(seconds: 1),
description: Text('This is Button you can\n add more details heres'),
tapTarget: Icon(Icons.navigation),
child: BottomNavigationBar(items: [
BottomNavigationBarItem(title: Text('Home'), icon: Icon(Icons.home)),
BottomNavigationBarItem(
title: Text('Notification'),
icon: Icon(Icons.notifications_active)),
]),
),

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

In this screen, we have defined the featureId2 inside the DescribedFeatureOverlay() widget, in which it defines its title background color and description etc.

DescribedFeatureOverlay(
featureId: 'feature2',
targetColor: Colors.white,
textColor: Colors.white,
backgroundColor: Colors.blue,
contentLocation: ContentLocation.below,
title: Text(
'Menu Icon',
style: TextStyle(fontSize: 20.0),
),
pulseDuration: Duration(seconds: 1),
enablePulsingAnimation: true,
overflowMode: OverflowMode.clipContent,
openDuration: Duration(seconds: 1),
description: Text(
'This is Button you can add more details heres\n New Info here add more!'),
tapTarget: Icon(Icons.menu),

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

In this screen, we have defined the featureId3 inside the DescribedFeatureOverlay() widget, in which it defines its title background color and description etc.

DescribedFeatureOverlay(
featureId: 'feature3',
targetColor: Colors.white,
textColor: Colors.black,
backgroundColor: Colors.amber,
contentLocation: ContentLocation.trivial,
title: Text(
'More Icon',
style: TextStyle(fontSize: 20.0),
),
pulseDuration: Duration(seconds: 1),
enablePulsingAnimation: true,
barrierDismissible: false,
overflowMode: OverflowMode.wrapBackground,
openDuration: Duration(seconds: 1),
description: Text('This is Button you can add more details heres'),
tapTarget: Icon(Icons.search),
child: IconButton(icon: Icon(Icons.search), onPressed: () {}),
onOpen: () async {
return true;
},
),

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:feature_discovery/feature_discovery.dart';

class FeatureDiscoveryDemo extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false,
home: FeatureDiscovery(
recordStepsInSharedPreferences: false,
child: FeatureDiscoveryDemoApp(),
),
);
}
}

class FeatureDiscoveryDemoApp extends StatefulWidget {
@override
_FeatureDiscoveryDemoAppState createState() =>
_FeatureDiscoveryDemoAppState();
}

class _FeatureDiscoveryDemoAppState extends State<FeatureDiscoveryDemoApp> {
@override
void initState() {
WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
FeatureDiscovery.discoverFeatures(context, <String>[
'feature1',
'feature2',
'feature3',
'feature4',
]);
});
super.initState();
}

@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
leading: DescribedFeatureOverlay(
featureId: 'feature2',
targetColor: Colors.white,
textColor: Colors.white,
backgroundColor: Colors.blue,
contentLocation: ContentLocation.below,
title: Text(
'Menu Icon',
style: TextStyle(fontSize: 20.0),
),
pulseDuration: Duration(seconds: 1),
enablePulsingAnimation: true,
overflowMode: OverflowMode.clipContent,
openDuration: Duration(seconds: 1),
description: Text(
'This is Button you can add more details heres\n New Info here add more!'),
tapTarget: Icon(Icons.menu),
child: IconButton(icon: Icon(Icons.menu), onPressed: () {})),
title: Text('Feature Discovery Demo'),
centerTitle: true,
actions: [
DescribedFeatureOverlay(
featureId: 'feature3',
targetColor: Colors.white,
textColor: Colors.black,
backgroundColor: Colors.amber,
contentLocation: ContentLocation.trivial,
title: Text(
'More Icon',
style: TextStyle(fontSize: 20.0),
),
pulseDuration: Duration(seconds: 1),
enablePulsingAnimation: true,
barrierDismissible: false,
overflowMode: OverflowMode.wrapBackground,
openDuration: Duration(seconds: 1),
description: Text('This is Button you can add more details heres'),
tapTarget: Icon(Icons.search),
child: IconButton(icon: Icon(Icons.search), onPressed: () {}),
onOpen: () async {
return true;
},
),
],
),
bottomNavigationBar: DescribedFeatureOverlay(
featureId: 'feature1',
targetColor: Colors.white,
textColor: Colors.black,
backgroundColor: Colors.red.shade100,
contentLocation: ContentLocation.trivial,
title: Text(
'This is Button',
style: TextStyle(fontSize: 20.0),
),
pulseDuration: Duration(seconds: 1),
enablePulsingAnimation: true,
overflowMode: OverflowMode.extendBackground,
openDuration: Duration(seconds: 1),
description: Text('This is Button you can\n add more details heres'),
tapTarget: Icon(Icons.navigation),
child: BottomNavigationBar(items: [
BottomNavigationBarItem(title: Text('Home'), icon: Icon(Icons.home)),
BottomNavigationBarItem(
title: Text('Notification'),
icon: Icon(Icons.notifications_active)),
]),
),
);
}
}

Conclusion:

In this flutter article, I have explained a Feature Discovery in a flutter, which you can modify and experiment with according to your own, this little introduction was from the Feature Discovery demo from our side.

I hope this blog will provide you with sufficient information in Trying up the Feature Discovery in your flutter project. We will show you the Feature Discovery 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.

Related: SMS Using Twilio In Flutter

Related: Using SharedPreferences in Flutter

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

Integrate Google Sheet to Flutter App

0

Google Sheet is a web-based spreadsheet application created by Google. Google Sheet allows collaborative editing in real-time. All users can see all the changes made by other users. Slidebar chat feature that allows a collaborative discussion. Google Sheets also support offline editing. It also supports multiple file formats and file types eg. .xlsx, .xls, .xlt, etc. Google Sheets can also be integrated with other Google products.

In this blog, we shall discuss how to integrate Google Sheets with the Flutter applications. Google Sheets provides us Script Editor to create an API. We can further use it to get the data from the Google Sheet to the Flutter app.

Work Flow of the module:

  • We will first make the doGet script in the google script editor.
  • We will add some data in the google sheets as a demo.
  • Then we will deploy the google script to get the API link.
  • We will then create a model class in our flutter project
  • Define its properties and the fromMap method to Map the JSON data with the model object.
  • Next, we will make the functions to decode the JSON data and fetch or map the JSON data with the List of model objects.
  • We will create a list of widgets that uses the model objects data.
  • To display the list of widgets we will need the Future Builder whose future will be the fetch data method that we have created in the 6 th step and its builder will return the list of widgets that we have created in the previous step.
***Demo***

Follow the following steps to open the Script Editor:

  • >Open Google Sheet
  • >Create a new sheet
  • >Click on the Tool button
  • >Select Script Editor

Now we have to write a doGet function to fetch the data from the Google sheets:

***Script***

To get the data we have to open the spreadsheet. To open it script editor provides three methods to open it using id, URL, open. We will use openById. We can get the id of the spreadsheet from the link https://docs.google.com/spreadsheets/d/id/edit#gid=0 . Now we will get all the values of the spreadSheet. Use for loop to iterate all the values and push them in a data list. Then using ContentService we can create the output in JSON format as shown above.

Deploy it as a web-app:

For deployment crate on the deploy button and click on New Deployment . Select the Web App from the Select Type. Select Anyone in Who can access and provide the Google account access.

After successfully deploying it we will get the URL.

Click on New Deployment

Choose Web App as Select Type

Provide access to AnyOne

Copy the URL to use it to get the data in JSON format

Package Used:

http | Dart Package
A composable, Future-based library for making HTTP requests. This package contains a set of high-level functions and…pub.dev

pubspec.yaml:

dependencies:
flutter:
sdk: flutter
cupertino_icons: ^1.0.2
http: ^0.12.2

Make a Model class to get the JSON data:

class MonumentModel {
String imageUrl;
String name;
String about;

MonumentModel({
this.about,
this.name,
this.imageUrl,
});

factory MonumentModel.fromMap(Map<String, dynamic> json) {
return MonumentModel(
about: json['about'],
name: json['name'],
imageUrl: json['imageUrl'],
);
}
}

fromMap method is used to Map the list of JSON items with the MonumentModel and return list. and fromJson is used to return the MonumentModel object with the JSON data.

Decoding Data:

This method takes

a responseBody. It returns a list of MonumentModel. All the data items in the JSON format are decoded and then the parsed data is then mapped with the MonumentModel using fromMap method and a list of MonumentModel is returned.

List<MonumentModel> decodeMonument(String responseBody) {
final parsed = json.decode(responseBody).cast<Map<String, dynamic>>();
return parsed
.map<MonumentModel>((json) => MonumentModel.fromMap(json))
.toList();
}

Fetching JSON Data:

HTTP package provides us get method to fetch the JSON data. We will store the data in the response and the pass its body in the decode method to decode it.

Future<List<MonumentModel>> fetchMonument() async {
final response = await http.get(
'https://script.google.com/macros/s/AKfycbx9kO8lRb2UTMesbih4M4-EwlFxW7Zt58IMmHtFNGrG6bMF-eLlUCwvHuo9GdaAhPy-/exec');
if (response.statusCode == 200) {
return decodeMonument(response.body);
} else {
throw Exception('Unable to fetch data from the REST API');
}

Displaying the Data:

MyHomePage is a widget that takes a Future<List<MonumentModel>> . FutureBuilder is used as the data we got from the API is of Future type. Its Builder takes returns a CircularProgressIndicator if it does not has data else it returns a monumentList . monumentList is a list of all the monuments that we have got. It takes the data of the snapshot.

class MyHomePage extends StatelessWidget {
final Future<List<MonumentModel>> monuments;

MyHomePage({Key key, this.monuments}) : super(key: key);

@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: FutureBuilder<List<MonumentModel>>(
future: monuments,
builder: (context, snapshot) {
if (snapshot.hasError) print(snapshot.error);
return snapshot.hasData
? monumentList(snapshot.data)
: Center(child: CircularProgressIndicator());
},
),
));
}
}

Now we will define monumentList Widget:

This is the actual UI that we see on our app. It has a simple Card with elevation 5 and a container with a Column. It has a name as a title, image, and description.

Widget monumentList( List<MonumentModel> monumentList) {
return ListView.builder(
itemCount: monumentList.length,
itemBuilder: (context, index) {
return Card(
elevation: 5,
child: Container(
padding: EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
"|| " + monumentList[index].name,
style: TextStyle(
fontWeight: FontWeight.bold, fontSize: 25),
),
Container(
child: Image.network(monumentList[index].imageUrl),
),
Container(
child: Text(
'\n' + monumentList[index].about,
style: TextStyle(
color: Colors.grey,
),
),
),
],
),
));
});
}

Conclusion:

In the article, I have explained how you can integrate google sheet with your flutter app. You can modify the script and code according to your requirement. This was a small introduction on how you create an API using google script and use that API to get the data stored in the sheets and use it in our app. You can also use some different approaches to display the data, please give it a try using initState method without using the FutureBuilder. You can get the data in a new list from the fetch function and directly use the ListView.builder and use the list data items to display the data. So please give it a try.

GitHub Link:

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


🌸🌼🌸 Thank you for reading. 🌸🌼🌸


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 987tr project on an hourly or full-time basis as per your requirement! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter-related queries.

We welcome feedback and hope that you share what you’re working on using #FlutterDevs. We truly enjoy seeing how you use Flutter to build beautiful, interactive web experiences!.

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

What’s New In Flutter 2 !

0

Our next generation of Flutter, built for web, mobile, and desktop

You must’ve heard Flutter has released its second update last week on March 3, 2021. As the Google itself claims that this version is fully dedicated to developer’s experience that is why the new version has developers oriented functionalities.

Flutter 2.0 is packed with new capabilities and improved experiences with brand new and the existing features.


What’s New in Flutter 2 ?

There are many new and exciting features in the new release, let’s look at them one by one.

Web Support of Flutter

In the earlier version of Flutter, the foundation of the web was document centric. But, the web platform is already evolved by using a very dynamic richer platforms and APIs. Keeping that in mind Flutter new release build on these innovations which offers and app-centric framework.

By adding the Canvas Kit powered rendering engine built with Web Assembly and Flutter Plasma, a demo built by community member Felix Blaschke, Flutter 2.0 made a lot of progress on performance optimization which ultimately showcase the ease of building sophisticated web graphics experiences with Dart and Flutter that can also run natively on desktop or on mobile devices.

Platform Adaptive Applications

By now as we all know that the Flutter 2.0 supports three stages of production applications — Android, iOS and the Web and the three more in beta — Windows, macOS and Linux. Hence, we may wonder,

How we would compose an application that adapts well with numerous divers’ factors — Little, medium and large screens. Distinctive info mode — Keyboard, touch and mouse?

To address these, Flutter has introduce “Flutter Folio Scrapbooking Application”.

What is Flutter Folio?

Flutter Folio is a scrapbooking app that is designed to showcase Flutter’s capabilities to create apps that feel at home on every platform and device: iOS, Android, Mac, Linux, Windows, and the Web.

Flutter Folio

Google Mobile Ads: Beta

Another beta release that will make digital marketers excited! Google Mobile Ads SDK for Flutter is a new plugin dedicated to overlay, banner, and native ads for mobile devices. Its unified support of Ad Manager and Ad mob makes it versatile for advertisers, regardless of a publisher.

iOS Features

The most important and awaited feature is that after numerous requests, Flutter has finally added a possibility to build IPA directly from the command line without having to rely on Xcode. Furthermore, the Cupertino design language implementation has been updated with some fresh UI (e.g. iOS search console).

New Widgets: Autocomplete & ScaffoldMessenger

Flutter 2.0 new release brings on board with two new widgets :

Autocomplete Core : The Autocomplete does exactly what we do expect, and simplifies the coding process with a long-requested auto-complete function.

ScaffoldMessenger : The ScaffoldMessenger is dedicated to SnackBar-related issues.

Dart: The Heart

Along with Flutter 2, Google has released Dart 2.12, a new version of the language that is used to create Flutter apps. At the language level, Dart 2.12’s most relevant feature is null safety, which can be enabled to make all variable declarations to be non-nullable by default unless they add a ? Suffix to the type:

var i = 42; // non-nullable int

int? n = null; // nullable int

if (n == null) {

return 0;

}

if (n > 0) { // here n has been promoted to a non-null int

}

Another important feature in Dart 2.12 is Dart FFI, which makes it possible to call into C libraries from Dart code. While Dart FFI is considered stable and ready for production use, there are a number of fine-grained features that are still in the workings, including support for ABI-specific data types like int, long, size_t; inline arrays in structs; packed structs, and so on.

Conclusion

Lastly, I would say that the world is evolving and they are moving more towards the technology. In coming future we will come across with new and innovative business ideas and for most of the business idea there will be one application which satisfies the need. Considering that fact, I believe Flutter has a great future. They are continuously evolving and the developers are taking notice of that, and they’re adopting Flutter more and more.


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.

Related: SMS Using Twilio In Flutter

Related: Using SharedPreferences in Flutter

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

Number Picker In Flutter

In this article, we will explore the Number Picker in flutter using the number_picker_package. With the help of the package, we can easily achieve a flutter number picker. So let’s get started.

numberpicker | Flutter Package
NumberPicker is a custom widget designed for choosing an integer or decimal number by scrolling spinners.pub.dev


Table Of Contents :

Flutter

Number Picker

Implementation

Code Implement

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”

Number Picker :

The Numberpicker is a kind of package that allows us to select any number of numbers, using this package allows us to easily select both integer and decimal numbers.

Types of NumberPicker :

There are two types of dialog in the number picker package:

  1. Integer NumberPicker Dialog — The Integer NumberPicker Dialog is used by the user for any integer number.
  2. Decimal NumberPicker Dialog — The decimal number picker dialog is used by the user to take any floating point, double or decimal number.

Demo Module :

Implementation :

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies :

dependencies:   
numberpicker: ^2.0.1

Step 2: Importing

import 'package:numberpicker/numberpicker.dart';

Step 3: Run flutter package get

Code Implementation :

Create a new dart file called number_picker_demo.dart inside the libfolder.

In this screen, we have defined the Integer Number Picker and Decimal Number Peak inside the Column Widget, in which the selected number of each is also shown below the Number Picker Widget, there is a button that opens a dialog by clicking on it. We can select the number value. Let’s look at it briefly.

In this reference, the NumberPicker.integer type is defined with minValue 0 and maxValue 100.

integerNumberPicker = new NumberPicker.integer(
initialValue: _currentIntValue,
minValue: 0,
maxValue: 100,
step: 10,
onChanged: _handleValueChanged,
);

Now we have created a button to show the value of the Integer type, inside which the NumberPickerDialog.integer dialog is defined. As we press the button a dialog of an integer value will open in which the user can select any number.

Future _showIntegerDialog() async {
await showDialog<int>(
context: context,
builder: (BuildContext context) {
return new NumberPickerDialog.integer(
minValue: 0,
maxValue: 100,
step: 10,
initialIntegerValue: _currentIntValue,
title: new Text("Pick a int value"),
);
},
).then(_handleValueChangedExternally);
}

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

In this reference, the NumberPicker.decimal type is defined with minValue 0 and maxValue 50.

decimalNumberPicker = new NumberPicker.decimal(
initialValue: _currentDoubleValue,
minValue: 1,
maxValue: 50,
decimalPlaces: 2,
onChanged: _handleValueChanged);

Now we have created a button to show the value of the decimal type, inside which the NumberPickerDialog.decimal dialog is defined. As we press the button a dialog of a decimal value will open in which the user can select any number.

Future _showDoubleDialog() async {
await showDialog<double>(
context: context,
builder: (BuildContext context) {
return new NumberPickerDialog.decimal(
minValue: 1,
maxValue: 5,
decimalPlaces: 2,
initialDoubleValue: _currentDoubleValue,
title: new Text("Pick a decimal value"),
);
},
).then(_handleValueChangedExternally);
}

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

Code File :

import 'dart:async';
import 'package:flutter/material.dart';
import 'package:numberpicker/numberpicker.dart';
class NumberPickerDemo extends StatefulWidget {
@override
_NumberPickerDemoState createState() => _NumberPickerDemoState();
}

class _NumberPickerDemoState extends State<NumberPickerDemo> {
int _currentIntValue = 10;
double _currentDoubleValue = 3.0;
NumberPicker integerNumberPicker;
NumberPicker decimalNumberPicker;

_handleValueChanged(num value) {
if (value != null) {
if (value is int) {
setState(() => _currentIntValue = value);
} else {
setState(() => _currentDoubleValue = value);
}
}
}

_handleValueChangedExternally(num value) {
if (value != null) {
if (value is int) {
setState(() => _currentIntValue = value);
integerNumberPicker.animateInt(value);
} else {
setState(() => _currentDoubleValue = value);
decimalNumberPicker.animateDecimalAndInteger(value);
}
}
}

@override
Widget build(BuildContext context) {
integerNumberPicker = new NumberPicker.integer(
initialValue: _currentIntValue,
minValue: 0,
maxValue: 100,
step: 10,
onChanged: _handleValueChanged,
);
//build number picker for decimal values
decimalNumberPicker = new NumberPicker.decimal(
initialValue: _currentDoubleValue,
minValue: 1,
maxValue: 5,
decimalPlaces: 2,
onChanged: _handleValueChanged);
//scaffold the full homepage
return new Scaffold(
appBar: new AppBar(
title: new Text('Number Picker Demo'),
centerTitle:true,
),
body: new Center(
child: new Column(
mainAxisAlignment: MainAxisAlignment.spaceAround,
children: <Widget>[
integerNumberPicker,
RaisedButton(
onPressed: () => _showIntegerDialog(),
child: new Text("Int Value: $_currentIntValue"),
color: Colors.grey[300],
),
decimalNumberPicker,
RaisedButton(
onPressed: () => _showDoubleDialog(),
child: new Text("Decimal Value: $_currentDoubleValue"),
color: Colors.pink[100],

),
],
),
));
}
Future _showIntegerDialog() async {
await showDialog<int>(
context: context,
builder: (BuildContext context) {
return new NumberPickerDialog.integer(
minValue: 0,
maxValue: 100,
step: 10,
initialIntegerValue: _currentIntValue,
title: new Text("Pick a int value"),
);
},
).then(_handleValueChangedExternally);
}
Future _showDoubleDialog() async {
await showDialog<double>(
context: context,
builder: (BuildContext context) {
return new NumberPickerDialog.decimal(
minValue: 1,
maxValue: 5,
decimalPlaces: 2,
initialDoubleValue: _currentDoubleValue,
title: new Text("Pick a decimal value"),
);
},
).then(_handleValueChangedExternally);
}
}

Conclusion :

In this article, I have explained a Number Picker in a flutter, which you can modify and experiment with according to your own, this little introduction was from the Number Picker from our side.

I hope this blog will provide you with sufficient information in Trying up the Number Picker in your flutter project. We will show you the Number Picker 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.

Related: Cupertino Timer Picker In Flutter

Related: Date and Time Picker In Flutter

Related: Emoji Picker In Flutter

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

VxSwiper In Flutter

VelocityX is really a great UI tool. It provides us hundreds of new cool features that we can use in our development. VelocityX makes our UI 40% faster in a much easier manner. It has some great widgets, we call them SuperVx with many properties. VxSwiper, VxAnimator, VxPlatform, VxToast, VxStepper, VxRating are SuperVx that helps us to do certain things faster and easier manner. In this blog, we shall discuss about VxSwiper and learn how to implement it.


Table of content :

Install package

VxSwipper

VxSwiper.builder

Using extension method .swiper()

Properties of Swiper

Conclusion


Install package:

velocity_x | Flutter Package
VelocityX is a 100% free Flutter open-source minimalist UI Framework built with Flutter SDK to make Flutter development…pub.dev

dependencies:
velocity_x: ^2.6.0

VxSwipper:

We can directly use VxSwiper to implement it, it has several properties and takes a list of items i.e. list of widgets. We have used map method. A list of String is given and then its data is mapped with text.

You can notice that I have written text in a different manner. VelocityX provides this method to pass text as a child or widget. We can directly write the text string and then make it as text. Using VleocityX we can easily pass color, fontSize, fontWeight, padding, and many more properties very easily.

List<String> list = ["A", "B", "C", "D", "E"];
VxSwiper(
height: 200,
scrollDirection: Axis.horizontal,
scrollPhysics: BouncingScrollPhysics(),
autoPlay: true,
reverse: false,
pauseAutoPlayOnTouch: Duration(seconds: 3),
initialPage: 0,
isFastScrollingEnabled: true,
enlargeCenterPage: true,
onPageChanged: (value) {
print(value);
},
autoPlayCurve: Curves.elasticOut,
items: list
.map((e) => e.text
.makeCentered()
.box
.withRounded(value: 5)
.coolGray600
.make()
.p12())
.toList()),

VxSwiper.builder:

This widget is used when the length of. It also has similar properties. builder returns a widget for each iteration.

VxSwiper.builder(
enableInfiniteScroll: true,
reverse: false,
height: 400,
viewportFraction: 0.8,
initialPage: 0,
autoPlay: true,
autoPlayInterval: Duration(seconds: 1),
autoPlayAnimationDuration: Duration(milliseconds: 500),
autoPlayCurve: Curves.easeIn,
enlargeCenterPage: true,
onPageChanged: (value) {},
scrollDirection: Axis.vertical,
itemCount: list.length,
itemBuilder: (context, index) {
return list[index]
.text
.white
.make()
.box
.rounded
.alignCenter
.color(Vx.blueGray700)
.make()
.p4();
},
)

Using extension method .swiper():

List.generate(
list.length,
(index) => list[index]
.text
.white
.make()
.box
.rounded
.alignCenter
.color(Vx.coolGray500)
.make()
.p4()).swiper(
height: context.isMobile ? 200 : 400,
enlargeCenterPage: true,
autoPlay: true,
autoPlayCurve: Curves.easeIn,
onPageChanged: (index) {
print(index);
},
isFastScrollingEnabled: true,
scrollDirection: Axis.horizontal)

Properties of Swiper:

  1. height: Its default value is 0
  2. aspectRatio : Its default value is 16/9
  3. viewportFraction : 0.8 is the default value and it is the fraction of the viewport that each page should occupy.
  4. initialPage: It takes the index of the initial page. Its default value is 0.
  5. realPage: It is the actual index of the PageView .
  6. enableInfiniteScroll: It is the bool value that determines whether the swiper should loop infinitely or not.
  7. reverse: It reverses the order of items.
  8. autoPlay: It slides the page one by one.
  9. autoPlayInterval: It is the frequency of slides.
  10. autoPlayAnimationDuration: It is animation duration between two transitioning pages while they are in auto playback.
  11. autoPlayCurve: It is the animation curve.
  12. pauseAutoPlayOnTouch: It pauses the autoplay on touch.
  13. enlargeCenterPage: it enlarges the current page.
  14. onPageChanged: It is called when the page viewport changes.
  15. scrollPhysics: It is the physics of scrolling.
  16. isFastScrollingEnabled: It scrolls faster.
  17. scrollDirection: It is the direction of scrolling of pages.

Conclusion :

In the article, I have explained the basic type widget of a VelocityX Swiper. you can modify this code according to your choice. This was a small introduction to VelocityX SwiperX On User Interaction from my side, and it’s working using Flutter.

I hope this blog will provide you with sufficient information in Trying up VelocityX VxSwiper in your flutter projects. This demo program uses velocity_x packages in a flutter and shows how a swiper will work in your flutter applications. So please try it.

🌸🌼🌸 Thank you for reading. 🌸🌼🌸🌼


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 987tr project on an hourly or full-time basis as per your requirement! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter-related queries.

We welcome feedback and hope that you share what you’re working on using #FlutterDevs. We truly enjoy seeing how you use Flutter to build beautiful, interactive web experiences!.

Related: SMS Using Twilio In Flutter

Related: Using SharedPreferences in Flutter

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

Snapping Sheet In Flutter

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 Snapping Sheet In Flutter. we will explore the Snapping Sheet In flutter using the snapping_sheet_package. With the help of the package, we can easily achieve the flutter snapping sheet. So let’s get started.


Table of Contents :

Snapping Sheet

Attributes

Implementation

Code Implementation

Code File

Conclusion


Snapping Sheet :

The Snapping Sheet Library provides a highly customizable sheet that goes to different vertical lines, in which we can make the sheet custom and change the size and color of the sheet; inside it, there are two types of the sheet below and sheetAbove widget inside which we can make the item Initializes so that the user can scroll the sheet from the top and bottom.

Attributes:

There are some attributes of the snapping sheet are:

  • > sheetBelow: We use the sheetBelow widget to display any list below, which is the remaining space from the bottom to the bottom of the grabbing widget.
  • > sheetAbove: We use the sheetAbove widget to display any list below, which is the remaining space from the top to the top of the grabbing widget.
  • > grabbing: The grabbing widget is fixed between the sheetBelow and sheetAbove.
  • > grabbingHeight: The grabbing height is used to increase and decrease grabbing height.
  • > snapPositions: The snapPosition are used for different snap position of a sheet.n

Demo Module :


Implementation :

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies :

dependencies:   
snapping_sheet: ^3.0.0+2

Step 2: Importing

import 'package:snapping_sheet/snapping_sheet.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:

Create a new dart file called snapping_sheet_demo.dart inside the lib folder.

First of all, we have created a snap sheet demo screen in which two buttons are created, and clicking on each button will open a new page in which we have used the sheetBelow and sheetAbove widget inside the SnappingSheet. Let us understand this in detail.

CustomButton(
mainButtonText: 'Snapping Sheet Above',
callbackTertiary: () {
Navigator.of(context).pushNamed(RouteName.SnappingSheetAboveScreen);
},
color: Colors.green[200],
),

Now, we will deeply describe sheetBelow widget:

In the sheetBelow, we will add a list view builder, inside it, we will add some items; the list item has shown the image, title, and subtitle of the item. This item will scroll from the bottom to the top of the sheet

sheetBelow: SnappingSheetContent(
child: Container(
color: Colors.white,
child:ListView.builder(
itemCount:snappingBelowSheetModel.length,
scrollDirection:Axis.vertical,
shrinkWrap:true,
//physics:NeverScrollableScrollPhysics(),
itemBuilder:(BuildContext context,int index){
return _buildSnappingBelowSheetModel(snappingBelowSheetModel[index]);
}
),
),
heightBehavior: SnappingSheetHeight.fit()
),

In this SnappingSheet, we have used the sun position, which will take the content item of the sheetBelow to the snap position.

snapPositions: [
SnapPosition(
positionPixel: 25.0,
snappingCurve: Curves.elasticOut,
snappingDuration: Duration(milliseconds: 750)
),
SnapPosition(
positionFactor: 0.5,
snappingCurve: Curves.ease,
snappingDuration: Duration(milliseconds: 500)
),
],

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

Now, we will deeply describe sheetAbove widget:

In sheetAbove, too, we will add a list view builder; inside it we will add some items. The list item shows the image, title, and subtitle of the item.

sheetAbove:SnappingSheetContent(
draggable:true,
child: ListView.builder(
itemCount:snappingBelowSheetModel.length,
scrollDirection:Axis.vertical,
shrinkWrap:true,
//physics:NeverScrollableScrollPhysics(),
itemBuilder:(BuildContext context,int index){
return _buildSnappingBelowSheetModel(snappingBelowSheetModel[index]);
}
),
heightBehavior: SnappingSheetHeight.fit()
),

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:snapping_sheet/snapping_sheet.dart';
import 'package:snnaping_sheet_demo/Constants/Constants.dart';
import 'package:snnaping_sheet_demo/model/snaping_below_sheet_model.dart';
import 'package:snnaping_sheet_demo/shared/default_grabbing.dart';
import 'package:snnaping_sheet_demo/themes/appthemes.dart';
import 'package:snnaping_sheet_demo/themes/device_size.dart';
import 'dart:math';
class SnappingSheetBelow extends StatefulWidget {
@override
_SnappingSheetBelowState createState() => _SnappingSheetBelowState();
}

class _SnappingSheetBelowState extends State<SnappingSheetBelow> {

List<SnappingBelowSheetModel>snappingBelowSheetModel;

@override
void initState() {
snappingBelowSheetModel=Constants.getTestPanelModel();
super.initState();
}

@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor:Colors.grey.shade50,
appBar:AppBar(
title:Text('Snapping Below Sheet Demo'),
),
body:SnappingSheet(
//lockOverflowDrag: true,
grabbingHeight:50,
grabbing:DefaultGrabbing(),

snapPositions: [
SnapPosition(
positionPixel: 25.0,
snappingCurve: Curves.elasticOut,
snappingDuration: Duration(milliseconds: 750)
),
SnapPosition(
positionFactor: 0.5,
snappingCurve: Curves.ease,
snappingDuration: Duration(milliseconds: 500)
),
],

sheetBelow: SnappingSheetContent(
child: Container(
color: Colors.white,
child:ListView.builder(
itemCount:snappingBelowSheetModel.length,
scrollDirection:Axis.vertical,
shrinkWrap:true,
itemBuilder:(BuildContext context,int index){
return _buildSnappingBelowSheetModel(snappingBelowSheetModel[index]);
}
),
),
heightBehavior: SnappingSheetHeight.fit()
),
),

);
}

Widget _buildSnappingBelowSheetModel(SnappingBelowSheetModel items) {
return Container(
height:DeviceSize.height(context)/10,
child:Card(
child:Padding(
padding:EdgeInsets.all(6),
child:Row(
mainAxisAlignment:MainAxisAlignment.spaceBetween,
children: [
Row(
children: [
Container(
height:60,
width:60,
padding:EdgeInsets.all(5),
decoration:BoxDecoration(
borderRadius:BorderRadius.all
(Radius.circular(4)),
color:AppTheme.color1.withOpacity(0.2),
),
child:Image.asset(items.img),
),

SizedBox(width:10,),

Column(
crossAxisAlignment:CrossAxisAlignment.start,
mainAxisAlignment:MainAxisAlignment.spaceEvenly,
children: [
Text(items.title,style:TextStyle
(fontSize:13,fontWeight:FontWeight.w700,),),
Text(items.subTitle,style:TextStyle
(fontSize:11,fontWeight:FontWeight.w700,
color:AppTheme.color1),),
],
),
],
),

Icon(Icons.arrow_forward_ios,size:15,color:AppTheme.color2.withOpacity(0.8),)
],
),
),
),
);
}
}

Conclusion:

In this article, I have explained a Snapping Sheet in a flutter, which you can modify and experiment with according to your own. This little introduction was from the Snapping Sheet from our side.

I hope this blog will provide you with sufficient information in Trying up the Snapping Sheet in your flutter project. We will show you the Snapping Sheet 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.

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


Hover Effect In Flutter

0

In this article, we will explore the Hover Effect in flutter using the hover_effect_package. With the help of the package, we can easily achieve a flutter hover effect. So let’s get started.

hover_effect | Flutter Package
Hover – Tilt 3D Effect Takes any child widget and enables Hover/Tilt 3D functionality to it import…pub.dev


Table Of Contents :

Flutter

Hover Effect

Implementation

Code Implement

Hover Effect 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”

Hover Effect :

The hover effect library gives a 3d hover effect like any box or container etc. we rotate it around the top, bottom, left, right so it is 3d changes its position in style, in this, we can change its shadow color, depthColor etc.

Demo Module :

Implementation :

You need to implement it in your code respectively :

Step 1: Add dependencies.

Add dependencies to pubspec — yaml file.

dependencies:
hover_effect: ^0.6.0

Step 2: import the package :

import 'package:hover_effect/hover_effect.dart';

Step 3: Run flutter package get

How to implement code in dart file :

Create a new dart file called hover_effect_pager_demo.dart inside the libfolder.

Before creating the hovercard effect, we have taken a container inside which we have implemented the column widget which has a text widget which is the title of the hover effect, then we have taken the container widget in which the hovercard has defined some of its properties, let’s make it a understand in detail by reference.

HoverCard(
builder: (context, hovering) {
return Container(
color: Color(0xFFE9E9E9),
child: Center(
child: FlutterLogo(size: 100),
),
);
},
depth: 10,
depthColor: Colors.grey[500],
shadow: BoxShadow(color: Colors.purple[200], blurRadius: 30, spreadRadius: -20, offset: Offset(0, 40)),
),

Within the HoverCard effect, we have taken a container in which its color and an image is given, the value of the depth attribute of the hovercard is ten, the color of the depth and shadow of the card is also given.

These are snapshots image after running the app.

Code File :

import 'package:flutter/material.dart';
import 'package:flutter_hover_effect_demo/themes/device_size.dart';
import 'package:hover_effect/hover_effect.dart';
class HoverEffectDemo extends StatefulWidget {
@override
_HoverEffectDemoState createState() => _HoverEffectDemoState();
}
class _HoverEffectDemoState extends State<HoverEffectDemo> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar:AppBar(
title:Text('Hover Effect Demo'),
),
body:Container(
height:DeviceSize.height(context),
width:DeviceSize.width(context),
child:Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text(
'Hover Tilt 3D Effect',
style:TextStyle(
fontSize:15,
fontWeight: FontWeight.w700,
color: Colors.black,
letterSpacing: 2
),
),
SizedBox(height: 50),
Container(
width: 150,
height: 300,
child: HoverCard(
builder: (context, hovering) {
return Container(
color: Color(0xFFE9E9E9),
child: Center(
child: FlutterLogo(size: 100),
),
);
},
depth: 10,
depthColor: Colors.grey[500],
shadow: BoxShadow(color: Colors.purple[200], blurRadius: 30, spreadRadius: -20, offset: Offset(0, 40)),
),
),
],
),
),
);
}
}

Conclusion :

In the article, I have explained the basic structure of the Hover Effect in a flutter; you can modify this code according to your choice. This was a small introduction to Hover Effect On User Interaction from my side, and it’s working using Flutter.

I hope this blog will provide you with sufficient information in Trying up the Hover Effect in your flutter project. We will show you the Hover Effect 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.

Related: Frosted Glass Effect In Flutter

Related: Mouse Parallax Effect In Flutter

Related: Explore Shake Effect In Flutter

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

Expansion Panel Widget In Flutter

0

Hello friends, I will talk about my new blog on Expansion Panel Widget In Flutter. We will also implement a demo of the Expansion Panel Widget, and describes its properties, and how to use them in your flutter applications. So let’s get started.


Table Of Contents :

Flutter

Expansion Pannel Widget

Attributes

Code Implement

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”

Expansion Panel Widget :

The Flutter Expansion Panel is a great widget to achieve expansion /collapse functionality. It has an Expansion Panelist and Expansion Panel to create the detail view. The extension panel list shows your children by clicking on the item and animating the extension. In simple words, it means to show the header details of the expansion panel.

Properties of the Expansion panel and Expansion panel list:

  1. HeaderBuilder: The header builder property is used to design the visible portion of the title of the list.
  2. Body: The body property is used to expand and collapse the item, it can contain any widget.
  3. isExpanded: This isExpand property is very important, it decides whether to extend the item or not, it is a type of bool.
  4. AnimationDuration: The Animation Duration property is used for the time taken to expand. Its default value is 200 milliseconds..
  5. Children Expansion A callback that is triggered upon opening and closing any item inside a list
  6. ExpansionCallback: Expansion callback that is triggered upon opening and closing any item inside a list.

Demo Module :

Code Implementation :

You need to implement it in your code respectively:

Create a new dart file called expansion_pannel_demo.dart inside the libfolder.

As we have shown the Expansion Panel List Widget in this screen, firstly we have created a list with the help of a ListView Builder, inside it the Expansion Panel List widget is initialized and within its Children property, the Expansion Panel is taken Its property is defined inside.

A class is created named Item Model which will hold the data for our item

class ItemModel {
bool expanded;
String headerItem;
String discription;
Color colorsItem;
String img;

ItemModel({this.expanded: false, this.headerItem, this.discription,this.colorsItem,this.img});
}

Let us understand this with the help of a reference.

ExpansionPanelList(
animationDuration: Duration(milliseconds:1000),
dividerColor:Colors.red,
elevation:1,
children: [
ExpansionPanel(
body: Container(
padding: EdgeInsets.all(10),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment:CrossAxisAlignment.start,
children: <Widget>[

ClipOval(
child:CircleAvatar(
child:Image.asset(itemData[index].img,fit:BoxFit.cover,),
),
),

SizedBox(height:30,),


Text(
itemData[index].discription,
style: TextStyle(
color: Colors.grey[700],
fontSize:15,letterSpacing:0.3,height:1.3
),
),

],
),
),
headerBuilder: (BuildContext context, bool isExpanded) {
return Container(
padding: EdgeInsets.all(10),
child: Text(
itemData[index].headerItem,
style: TextStyle(
color:itemData[index].colorsItem,
fontSize: 18,
),
),
);
},
isExpanded: itemData[index].expanded,
)
],
expansionCallback: (int item, bool status) {
setState(() {
itemData[index].expanded =
!itemData[index].expanded;
});
},
);

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:flutter/widgets.dart';
import 'package:flutter_expansion_panel_demo/model/expnasion_panel_model.dart';

class ExpansionPanelDemo extends StatefulWidget {
@override
_ExpansionPanelDemoState createState() => _ExpansionPanelDemoState();
}

class _ExpansionPanelDemoState extends State<ExpansionPanelDemo> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Expansion Panel Demo'),
),
body: Container(
padding: EdgeInsets.all(10),
child: ListView.builder(
itemCount: itemData.length,
itemBuilder: (BuildContext context, int index) {
return ExpansionPanelList(
animationDuration: Duration(milliseconds: 1000),
dividerColor: Colors.red,
elevation: 1,
children: [
ExpansionPanel(
body: Container(
padding: EdgeInsets.all(10),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
crossAxisAlignment: CrossAxisAlignment.start,
children: <Widget>[
ClipOval(
child: CircleAvatar(
child: Image.asset(
itemData[index].img,
fit: BoxFit.cover,
),
),
),
SizedBox(
height: 30,
),
Text(
itemData[index].discription,
style: TextStyle(
color: Colors.grey[700],
fontSize: 15,
letterSpacing: 0.3,
height: 1.3),
),
],
),
),
headerBuilder: (BuildContext context, bool isExpanded) {
return Container(
padding: EdgeInsets.all(10),
child: Text(
itemData[index].headerItem,
style: TextStyle(
color: itemData[index].colorsItem,
fontSize: 18,
),
),
);
},
isExpanded: itemData[index].expanded,
)
],
expansionCallback: (int item, bool status) {
setState(() {
itemData[index].expanded = !itemData[index].expanded;
});
},
);
},
),
),
);
}

List<ItemModel> itemData = <ItemModel>[
ItemModel(
headerItem: 'Android',
discription:
"Android is a mobile operating system based on a modified version of the Linux kernel and other open source software, designed primarily for touchscreen mobile devices such as smartphones and tablets. ... Some well known derivatives include Android TV for televisions and Wear OS for wearables, both developed by Google.",
colorsItem: Colors.green,
img: 'assets/images/android_img.png'
),

];
}

Conclusion:

In this article, I have explained an Expansion Panel Widgetin a flutter, which you can modify and experiment with according to your own, this little introduction was from the Expansion Panel demo from our side.

I hope this blog will provide you with sufficient information in Trying up the Expansion Panel in your flutter project. We showed you what the Expansion Panel 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.

Related: Flow Widget In Flutter

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

Emoji Picker In Flutter

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.

In this article, we will explore the Emoji Picker in flutter using the emoji_picker_package. With the help of the package, we can easily achieve a flutter number picker. So let’s get started.

emoji_picker | Flutter Package
Run this command: With Flutter: $ flutter pub pub add emoji_picker This will add a line like this to your package’s…pub.dev


Table Of Contents :

Emoji Picker

Attributes

Implementation

Code Implement

Code File

Conclusion


Emoji Picker :

The emoji library provides a visual representation of some kind of emotion, object or symbol, in which it provides a variety of icons. Emoji library is used for any modern communication app. Your smartphone’s text messaging or social networking apps like Facebook, Instagram, Twitter etc. have an option of emoji icon.

Some Basic properties.

  • rows — The rows attribute is used to show the number of rows icons in the keyboard.
  • columns — The columns attribute is used to show the number of columns icons in the keyboard.
  • numRecommended — The maximum number of emojis to be recommended.
  • bgColor — Use the bgColor property to change the background color of the keyboard.

Demo Module :

Implementation :

Step 1: Add the dependencies

Add dependencies to pubspec — yaml file.

dependencies :

dependencies:
emoji_picker: ^0.1.0

Step 2: Importing

import 'package:emoji_picker/emoji_picker.dart';

Step 3: Run flutter package get

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

Code Implementation :

You need to implement it in your code respectively:

Create a new dart file called emoji_picker_demo.dart inside the libfolder.

First of all, we will take the stack widget which we have wrapped from the WillPopScope, have taken the column widget inside the stack widget, designed a text field inside it and took some icon and at the click of the icon, the emoji icon will open.

Now we have implemented the isShowSticker inside the initState() method which is false by default.

bool isShowSticker;
@override
void initState() {
super.initState();
isShowSticker = false;
}

Now we will implement the emoji picker in which we have given row size three and columns size intake, the icon has reconded value ten and buttonMode type is material.

Widget buildSticker() {
return EmojiPicker(
rows: 3,
columns: 7,
buttonMode: ButtonMode.MATERIAL,
recommendKeywords: ["smile", "fruit"],
numRecommended: 10,
onEmojiSelected: (emoji, category) {
print(emoji);
},
);
}

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:emoji_picker/emoji_picker.dart';
class EmojiPickerDemo extends StatefulWidget {
@override
_EmojiPickerDemoState createState() => _EmojiPickerDemoState();
}

class _EmojiPickerDemoState extends State<EmojiPickerDemo> {
bool isShowSticker;

@override
void initState() {
super.initState();
isShowSticker = false;
}

Future<bool> onBackPress() {
if (isShowSticker) {
setState(() {
isShowSticker = false;
});
} else {
Navigator.pop(context);
}

return Future.value(false);

}
@override
Widget build(BuildContext context) {


return Scaffold(
appBar: AppBar(
title: Text("Emoji Picker Demo"),
),
body:WillPopScope(
child:Stack(
alignment:Alignment.bottomCenter,
children: [
Column(
mainAxisAlignment:MainAxisAlignment.end,
children: <Widget>[

Container(
child: Row(
mainAxisAlignment:MainAxisAlignment.end,
children: <Widget>[
// Button send image
Material(
child: new Container(
margin: new EdgeInsets.symmetric(horizontal: 1.0),
child: new IconButton(
icon: new Icon(Icons.image),
onPressed: () {},
color: Colors.blueGrey,
),
),
color: Colors.white,
),
Material(
child: new Container(
margin: new EdgeInsets.symmetric(horizontal: 1.0),
child: new IconButton(
icon: new Icon(Icons.face),
onPressed: () {
setState(() {
isShowSticker = !isShowSticker;
});
},
color: Colors.blueGrey,
),
),
color: Colors.white,
),

// Edit text
Flexible(
child: Container(
child: TextField(
style: TextStyle(color: Colors.blueGrey, fontSize: 15.0),
decoration: InputDecoration.collapsed(
hintText: 'Type your message...',
hintStyle: TextStyle(color: Colors.blueGrey),
),
),
),
),

// Button send message
Material(
child: new Container(
margin: new EdgeInsets.symmetric(horizontal: 8.0),
child: new IconButton(
icon: new Icon(Icons.send),
onPressed: () {},
color: Colors.blueGrey,
),
),
color: Colors.white,
),
],
),
width: double.infinity,
height: 50.0,
decoration: new BoxDecoration(
border: new Border(
top: new BorderSide(color: Colors.blueGrey, width: 0.5)),
color: Colors.white),
),

// Sticker
(isShowSticker ? buildSticker() : Container()),
],
),
],
),
onWillPop: onBackPress
),

);
}
Widget buildSticker() {
return EmojiPicker(
rows: 3,
columns: 7,
buttonMode: ButtonMode.MATERIAL,
recommendKeywords: ["racing", "horse"],
numRecommended: 10,
onEmojiSelected: (emoji, category) {
print(emoji);
},
);
}
}

Conclusion :

In this article, I have explained an Emoji Picker in a flutter, which you can modify and experiment with according to your own. This little introduction was from the Emoji Picker from our side.

I hope this blog will provide you with sufficient information in Trying up the Emoji Picker in your flutter project. We will show you the Emoji Picker 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.

Related: Cupertino Timer Picker In Flutter

Related: Date and Time Picker In Flutter

Related: Number Picker In Flutter

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


Explore Animation In Flutter

0

Naturally, human brains process visual information faster and more precisely than text-based information and Animation improves visual appearance and experience to the end-users.

In this tutorial, we will learn about pre-built Animations. In flutter, we have an awesome set of libraries that can be used to make complex animations.

animations | Flutter Package
Add this to your package’s pubspec.yaml file: dependencies: animations: ^2.0.0 You can install packages from the…pub.dev


Table of contents

Flutter

Animation

Code Implementation

Conclusion


What is 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.

Animations

Animations improve the visual appearance and experience for your end-users. Animations become useful when you want to display UI changes, transitions, or a specific state of your app. This Animation package contains pre-canned animations for commonly-desired effects. We can customize it according to our requirements.

Material motion is a set of transitions that helps the users and navigate the app as described in the Material Design Guidelines. Right now there are flowing transitions available in this package.

Code Implementation

Add dependency

dependencies:
animations: ^2.0.0
  1. Container transform
  2. Shared axis
  3. Fade through
  4. Fade

Container transform: transitions between UI elements that include a container, creates a visible connection between two distinct UI elements by seamlessly transforming one element into another.

To implement Container transform we can use the OpenConatiner widget provided by the animation packages. OpenContainer allows defining the container when it is closed.

Output :

Shared axis: transitions between UI elements that have a spatial or navigational relationship, uses a shared transformation on the x, y, or z-axis to reinforce the relationship between elements.

To implement Shared Axis transition animation package provides two widgets PageTransitionSwitcher and SharedAxisTransition.

The PageTransitionSwitcher switches transition from an old child to a new child when it changes the child. In this animation, we should always set a new unique key to the child so that Flutter will know that the widget has now a new child.

In the SharedAxisTransition widget, we can set transition type(alog x,y,z axis).

Output :

Fade Through: transitions between UI elements that do not have a strong relationship to each other, use a sequential fade out and fade in, with a scale of the incoming element.

This is the same as SharedAxisTransition. Here we are using FadeThroughTransition.

Output

Fade: The fade pattern is used for UI elements that enter or exit within the bounds of the screen, such as a dialog that fades in the center of the screen.

To implement this we’ve to use FadeScaleTransition and an AnimationController to control the exit and entry of the child. We also use AnimationControllerit to check the child is visible or hide.

Output :

Conclusion

In this article, I have explained the Animations package demo which you can modify and experiment with according to your own. This little introduction was about default animation.

I hope this blog will provide you with sufficient information in trying up to use the Animations in your flutter projects. We will show this demo program for working Animations 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 flutter developer for your cross-platform Flutter mobile app project on an hourly or full-time basis as per your requirement! You can connect with us on Facebook, GitHub, Twitter, and LinkedIn for any flutter-related queries.

We welcome feedback and hope that you share what you’re working on using #FlutterDevs. We truly enjoy seeing how you use Flutter to build beautiful, interactive web experiences.

Related: Explore Hinge Animation In Flutter

Related: Explore Spinning Animation In Flutter

Related: Explore Confetti Animation In Flutter

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