“androidOverscrollIndicator”已弃用,不应使用

问题描述 投票:0回答:3

我正在对 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
          ],
         ),
       ),
    ),

flutter flutter-layout android-scrollview
3个回答
2
投票

我想你是从这里看的

child: StretchingOverscrollIndicator(
  axisDirection: AxisDirection.down,
  child: ListView.builder(
    itemCount: 12,
    itemBuilder: (context, index) {
      return ListTile(
        title: Text("item $index"),
      );
    },
  ),
),

1
投票

对于未来的读者:最简单的解决方案是使用 Material3

      MaterialApp(
        home: HomePage(),
        theme: ThemeData(
          useMaterial3: true,
        ),
      ),

这是默认行为。


0
投票

我们仍然可以修改

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,
);
© www.soinside.com 2019 - 2024. All rights reserved.