有没有人遇到过类似于Flutter的Android中的FadingEdgeLength的东西,这样当你向上滚动项目时,项目开始淡出屏幕顶部?
下面是我的界面建立起来的小工具。
如果有帮助的话,我指的是这些属性:
android:fadingEdgeLength=“10dp”
android:requiresFadingEdge=“horizontal”〉
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('CMS Users'),
),
body: ListView.builder(
padding: EdgeInsets.only(top: 20.0, left: 4.0),
itemExtent: 70.0,
itemCount: data == null ? 0 : data.length,
itemBuilder: (BuildContext context, int index) {
return Card(
elevation: 10.0,
child: InkWell(
onTap: () {
Navigator.push(
context,
new MaterialPageRoute(
builder: (BuildContext context) =>
new PeopleDetails("Profile Page", profiles[index]),
));
},
child: ListTile(
leading: CircleAvatar(
child: Text(profiles[index].getInitials()),
backgroundColor: Colors.deepPurple,
radius: 30.0,
),
title: Text(
data[index]["firstname"] + "." + data[index]["lastname"]),
subtitle: Text(
data[index]["email"] + "\n" + data[index]["phonenumber"]),
),
),
);
}),
);
}
}
6条答案
按热度按时间v9tzhpje1#
正如其他人所提到的,你可以把ListView放在ShaderMask下,但是通过一些额外的参数化,你可以得到更好的结果--至少如果你想达到我想要的效果。
也可以为LinearGradient设置[stops]列表:
另外:**有混合模式,其中源的颜色通道被忽略,只有不透明度有影响。**BlendMode.dstOut在下面的例子中也是这样。正如你在截图中看到的,紫色没有具体使用,只用于矢量的分数。
你可以使用不同的[blendMode]设置,其中有很多。
5lhxktic2#
您可以在
ListView
之上应用ShaderMask
,并使用BlendMode
来获得您想要的。2o7dmzc53#
我有类似的要求,所以我为这个任务创建了一个库。你可以在这里找到它:fading_edge_scrollview
要使用它,您需要将
ScrollController
添加到ListView
,然后将此ListView
作为子对象传递给FadingEdgeScrollView.fromScrollView
构造函数w8f9ii694#
使用Stack Package Listview,将Listview添加为第一个子级,第二个是带有LinearGradient的Positioned Container。示例来自我的代码:
堆栈:
覆盖类:
它看起来像这样:
cotxawn75#
试着用
gwo2fgha6#
我把Krisztián Ódor的答案和ChatGPT的一个结果结合起来,得到了一个小部件,当用户滚动内容时,它会淡化一个ListView的内容,当ListView在任何一边时在这一边没有褪色。我这样做是因为在以前的版本中,我的部分内容由于褪色而不可见。该部件适用于两个滚动方向。要获得更多或更少的褪色调整停止在线性梯度。