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我已经更新了我的问题。