flutter - 如何去除材质 PageView 组件中的飞溅?
问题描述
如何消除材料 PageView 组件中的飞溅?我尝试将 ThemeData 的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
.
解决方案
有一个Widget
调用Theme
会将主题应用于后代小部件。因此,您可以使用Theme
自定义应用程序的任何部分,而无需修改整个应用程序的主题。像这样的东西:
new Theme(
data: Theme.of(context).copyWith(
splashColor: Colors.transparent
),
child:....
);
推荐阅读
- database - 循环支付数据库设计
- javascript - html的下载属性不适用于iphone浏览器
- asp.net-web-api - ASP .Net Web API 模型验证
- openssl - 如何在文件解密期间在openssl中解决“十六进制字符串太短,用零字节填充长度”?
- javascript - 为什么我的 React 上下文中的数据在我刷新之前加载不一致?
- docker - Apache2(httpd)反向代理无法与 Docker Compose 上的 SonarQube 服务器一起使用
- javascript - Vue js:按属性对单词进行排序
- swiftui - 用户接受位置提示后 CurrentLocation 为零
- api - 为什么 IBKR API 一直显示 ___ 对象没有属性 ___?
- laravel - 连接到 ssl://mail.mailserver.com:465 超时