【发布时间】:2018-11-07 14:48:55
【问题描述】:
如何去除material PageView component 中的飞溅?
我尝试将 ThemeData 的 accentColor 和 splashColor 设置为 Colors.transparent,但这会导致整个应用出现透明的黑色飞溅。
我试图创建一个类似于solution 的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 中仍然存在飞溅。
【问题讨论】:
-
你能发一些代码,什么样的飞溅?
-
@Tree 我已经更新了我的问题。
标签: flutter