blob: 561d1f0d3d2afe2544f8a51322558f437da147cd [file] [log] [blame]
// 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) {
}
}