// Copyright 2014 The Flutter Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'package:flutter/rendering.dart'; import 'package:flutter/widgets.dart'; import 'ink_well.dart'; import 'material.dart'; class _NoSplashFactory extends InteractiveInkFeatureFactory { const _NoSplashFactory(); @override InteractiveInkFeature create({ required MaterialInkController controller, required RenderBox referenceBox, required Offset position, required Color color, required TextDirection textDirection, bool containedInkWell = false, RectCallback? rectCallback, BorderRadius? borderRadius, ShapeBorder? customBorder, double? radius, VoidCallback? onRemoved, }) { return NoSplash( controller: controller, referenceBox: referenceBox, color: color, ); } } /// An [InteractiveInkFeature] that doesn't paint a splash. /// /// Use [NoSplash.splashFactory] to defeat the default ink splash drawn by /// an [InkWell] or [ButtonStyle]. For example, to create an [ElevatedButton] /// that does not draw the default "ripple" ink splash when it's tapped: /// /// ```dart /// ElevatedButton( /// style: ElevatedButton.styleFrom( /// splashFactory: NoSplash.splashFactory, /// ), /// onPressed: () { }, /// child: const Text('No Splash'), /// ) /// ``` class NoSplash extends InteractiveInkFeature { /// Create an [InteractiveInkFeature] that doesn't paint a splash. NoSplash({ required super.controller, required super.referenceBox, required super.color, super.onRemoved, }); /// Used to specify this type of ink splash for an [InkWell], [InkResponse] /// material [Theme], or [ButtonStyle]. static const InteractiveInkFeatureFactory splashFactory = _NoSplashFactory(); @override void paintFeature(Canvas canvas, Matrix4 transform) { } }