【问题标题】:How to remove splash in a material PageView component?如何去除材质 PageView 组件中的飞溅?
【发布时间】:2018-11-07 14:48:55
【问题描述】:

如何去除material PageView component 中的飞溅? 我尝试将 ThemeData 的 accentColorsplashColor 设置为 Colors.transparent,但这会导致整个应用出现透明的黑色飞溅。

我试图创建一个类似于solutionNoSplashContainer,但飞溅仍然留在孩子体内。

import 'package:flutter/material.dart';

class NoSplashContainer extends StatelessWidget {
  final Widget child;
  NoSplashContainer(this.child) : assert(child != null);
  @override
  Widget build(BuildContext context) {
    return (new Container(
        child: new Theme(
            data: Theme
                .of(context)
                .copyWith(splashFactory: const NoSplashFactory()),
            child: child)));
  }
}

class NoSplashFactory extends InteractiveInkFeatureFactory {
  const NoSplashFactory();

  @override
  InteractiveInkFeature create({
    @required MaterialInkController controller,
    @required RenderBox referenceBox,
    @required Offset position,
    @required Color color,
    bool containedInkWell: false,
    RectCallback rectCallback,
    BorderRadius borderRadius,
    double radius,
    VoidCallback onRemoved,
  }) {
    return new NoSplash(
      controller: controller,
      referenceBox: referenceBox,
    );
  }
}

class NoSplash extends InteractiveInkFeature {
  NoSplash({
    @required MaterialInkController controller,
    @required RenderBox referenceBox,
  })  : assert(controller != null),
        assert(referenceBox != null),
        super(
          controller: controller,
          referenceBox: referenceBox,
        );

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

我像这样使用NoSplashContainer..

new NoSplashContainer(new PageView(
   children: ...,
)));

但在PageView 中仍然存在飞溅。

【问题讨论】:

  • 你能发一些代码,什么样的飞溅?
  • @Tree 我已经更新了我的问题。

标签: flutter


【解决方案1】:

有一个名为ThemeWidget 会将主题应用于后代小部件。因此,您可以使用Theme 自定义应用程序的任何部分,而无需修改整个应用程序的主题。像这样的:

new Theme(
      data: Theme.of(context).copyWith(
        splashColor: Colors.transparent
      ), 
      child:....
    );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-04
    • 1970-01-01
    • 2021-04-21
    • 2017-05-15
    • 2022-08-13
    • 1970-01-01
    • 2021-01-02
    • 2021-02-12
    相关资源
    最近更新 更多