Alex Vincent's Blog

Alex's Blog
Where he writes his thoughts and experiences.
  1. 首页
  2. 默认分类
  3. 正文

Flutter 全局禁用水波纹

6月 4, 2019 8570点热度 24人点赞 0条评论

去除 Ink 系列水波纹

1. 定义 NoSplashFactory

NoSplashFactory
import 'package:flutter/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,
      onRemoved: onRemoved,
    );
  }
}

/// 不显示水波纹效果
class NoSplash extends InteractiveInkFeature {
  NoSplash({
    required MaterialInkController controller,
    required RenderBox referenceBox,
    required Color color,
    VoidCallback? onRemoved,
  }) : super(
          controller: controller,
          referenceBox: referenceBox,
          color: color,
          onRemoved: onRemoved,
        ) {
    controller.addInkFeature(this);
  }

  @override
  void paintFeature(Canvas canvas, Matrix4 transform) {}
}

2. 在构建 ThemeData 时使用

ThemeData
class MyApp extends State<MyAppState> {
  return MaterialApp(
    theme: Theme.of(context).copyWith(
      highlightColor: Colors.transparent,
      splashFactory: const NoSplashFactory(),
    ),
    ///..........///
  );
}

如果需要局部启用,可以应用InkSplash.splashFactory到splashFactory上。

去除滚动水波纹

1. 定义 NoGlowScrollBehavior

NoGlowScrollBehavior
class NoGlowScrollBehavior extends ScrollBehavior {
  const NoGlowScrollBehavior();

  @override
  Widget buildViewportChrome(
    BuildContext context,
    Widget child,
    AxisDirection axisDirection,
  ) =>
      child;
}

2. 在全局套用 ScrollConfiguration

ScrollConfiguration
MaterialApp(
  builder: (_, Widget? w) => ScrollConfiguration(
    behavior: const NoGlowScrollBehavior(),
    child: w!,
  ),
);
标签: 暂无
最后更新:10月 20, 2021

Alex Li

He's less to speak.

点赞
< 上一篇
下一篇 >

COPYRIGHT © 2023 Alex Li. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

桂ICP备16008143号-1