You can either use `IgnorePointer` or `AbsorbPointer`.
* **`IgnorePointer`**
```dart
IgnorePointer(
child: ElevatedButton(
onPressed: () {},
child: Text('Not clickable Button'),
),
);
```
* **`AbsorbPointer`**
```dart
AbsorbPointer(
child: ElevatedButton(
onPressed: () {},
child: Text('Not clickable Button'),
),
);
```
----------
**What's the difference?**
If there is a widget beneath your main widget which is also capable of receiving click events, and you use `IgnorePointer` on the parent widget, the child widget would still receive the click events.
But using `AbsorbPointer` on main widget won't allow the other widget (beneath main widget) to receive their click events.
Example showing the difference.
@override
Widget build(BuildContext context) {
return SizedBox(
width: double.infinity,
child: Stack(
children: <Widget>[
Positioned(
left: 0,
width: 250,
child: ElevatedButton(
color: Colors.red,
onPressed: () => print("Button 1"),
child: Text("Button 1"),
),
),
Positioned(
right: 0,
width: 250,
child: IgnorePointer( // replace this with AbsorbPointer and button 1 won't receive click
child: ElevatedButton(
onPressed: () => print("Button 2"),
child: Text("Button 2"),
),
),
),
],
),
);
}