InkWell is the material widget in Flutter. It responds to the touch action as performed by the user. Inkwell will respond when the user clicks the button. There are so many gestures like double-tap, long press, tap down, etc.
Syntax:
InkWell(
onTap: () {
// Your action here
},
child: YourWidget(),
)
Key Features of InkWell
- Adds ripple animation on tap (like native Material Design).
- Responds to gestures: onTap, onDoubleTap, onLongPress, etc.
- Lightweight and easy to use.
- Can be applied to any widget, even custom ones.
Step-by-step implementation
Step 1: Create a new Flutter Application
Create a new Flutter application using the command Prompt. To create a new app, write the following command and run it.
flutter create app_nameTo know more about it refer this article: Creating a Simple Application in Flutter.
Step 2: Start Coding
main.dart
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'InkWell',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
debugShowCheckedModeBanner: false,
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
String inkwell='';
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('InkWell Widget'),
backgroundColor: Colors.green,
actions: <Widget>[
Text(
'GFG',
textScaleFactor: 3,
)
],
),
backgroundColor: Colors.lightBlue[50],
body: Center(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: <Widget>[
InkWell(
onTap: () {
setState(() {
inkwell='Inkwell Tapped';
});
},
onLongPress: () {
setState(() {
inkwell='InkWell Long Pressed';
});
},
child: Container(
color: Colors.green,
width: 120,
height: 70,
child: Center(
child: Text(
'Inkwell',
textScaleFactor: 2,
style: TextStyle(fontWeight: FontWeight.bold),
))),
),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(inkwell,textScaleFactor: 2,),
)
],
),
),
);
}
}
Explanation:
- Create a Container and wrap it with the InkWell widget.
- When InkWell is tapped, it will display "InkWell Tapped" on the screen.
- When InkWell is LongPressed, it will display "InkWell Long Pressed" on the screen.
Output:
Customizing InkWell
You can customize its behavior using these properties:
Property | Description |
|---|---|
onTap | Called when the user taps |
onDoubleTap | Called on double-tap |
onLongPress | Called on long press |
borderRadius | Makes ripple have rounded corners |
splashColor | Changes ripple color |
highlightColor | Color shown when pressed |
Conclusion
The InkWell widget is perfect when you want to give your users visual feedback on touch interactions, especially when building custom buttons, cards, or tappable containers.
It’s a small but powerful widget that makes your app feel more interactive and native.