我正在对 Listview
应用
stretch效果,我使用
androidOverscrollIndicator
ScrollBehavior(
androidOverscrollIndicator: AndroidOverscrollIndicator.stretch
),
我工作完美,但我在
androidOverscrollIndicator
看到警告
'androidOverscrollIndicator' 已弃用,不应使用。使用 ThemeData.useMaterial3 或覆盖 ScrollBehavior.buildOverscrollIndicator。此功能已被弃用 v2.13.0-0.0.pre 之后..(文档)尝试替换使用 已弃用的成员及其替代者。
我该如何解决这个问题?
这是我的代码:
ScrollConfiguration(
behavior: const ScrollBehavior(
androidOverscrollIndicator: AndroidOverscrollIndicator.stretch
),
child: GlowingOverscrollIndicator(
axisDirection: AxisDirection.down,
color: Colors.white,
child: ListView(
physics: const ClampingScrollPhysics(),
children: [
//some widget
],
),
),
),
我想你是从这里看的
child: StretchingOverscrollIndicator(
axisDirection: AxisDirection.down,
child: ListView.builder(
itemCount: 12,
itemBuilder: (context, index) {
return ListTile(
title: Text("item $index"),
);
},
),
),
对于未来的读者:最简单的解决方案是使用 Material3
MaterialApp(
home: HomePage(),
theme: ThemeData(
useMaterial3: true,
),
),
这是默认行为。
我们仍然可以修改
MaterialScrollBehavior
来全局更改过度滚动指示器,但我们需要直接修改类。如果你看到类定义,有一个名为 buildOverscrollIndicator
的方法。然后我们可以使用首选指标来 override
此方法,在我的例子中为 StretchingOverscrollIndicator
。但其实这取决于你,你甚至可以做if条件,检查平台什么的。
这是片段。
class StretchScrollBehavior extends MaterialScrollBehavior {
// needed so the object can be instantiated as a const
const StretchScrollBehavior();
@override
Widget buildOverscrollIndicator(
BuildContext context,
Widget child,
ScrollableDetails details,
) {
// choose and build the overscroll indicator
return StretchingOverscrollIndicator(
axisDirection: details.direction,
child: child,
);
}
}
然后我们就可以在
ScrollConfiguration
中使用它了。
ScrollConfiguration(
behavior: const StretchScrollBehavior(),
child: child,
);