Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flutter 如何消除材质页面视图组件中的飞溅?_Flutter - Fatal编程技术网

Flutter 如何消除材质页面视图组件中的飞溅?

Flutter 如何消除材质页面视图组件中的飞溅?,flutter,Flutter,一个人如何在一个房间里清除飞溅物? 我曾尝试将主题数据的accentColor和splashColor设置为Colors.transparent,但这会导致整个应用程序呈现透明的黑色飞溅 我曾尝试创建一个类似于此的NoSplashContainer,但飞溅仍然存在于孩子们体内 import 'package:flutter/material.dart'; class NoSplashContainer extends StatelessWidget { final Widget child

一个人如何在一个房间里清除飞溅物? 我曾尝试将主题数据的
accentColor
splashColor
设置为
Colors.transparent
,但这会导致整个应用程序呈现透明的黑色飞溅

我曾尝试创建一个类似于此的
NoSplashContainer
,但飞溅仍然存在于孩子们体内

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

中仍然存在飞溅,有一个名为
的小部件
将主题应用于子部件。因此,您可以使用
Theme
自定义应用程序的任何部分,而无需修改整个应用程序的主题。大概是这样的:

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

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