【问题标题】:How can I make widgets inside a gridview change size while scrolling?滚动时如何使gridview中的小部件改变大小?
【发布时间】:2021-11-12 03:51:15
【问题描述】:

我有一个gridview(特别是StaggeredGridView),我想让子小部件在滚动时改变大小以获得屏幕中间的小部件最大的效果,并且随着用户滚动并且小部件退出它缩小的屏幕。

有没有办法实现它或者这样的布局已经存在?

【问题讨论】:

  • 取决于用户体验的复杂性,是的,您可以通过检查网格上的可见小部件来做到这一点。

标签: flutter gridview flutter-layout staggered-gridview


【解决方案1】:

您需要使用 ScrollController。 在下面的代码中,ScrollPoint 的值会随着您滚动而改变。您可以使用它的值来更改大小。

class HomeScreen extends StatefulWidget {
  HomeScreen({Key? key}) : super(key: key);

  @override
  State<HomeScreen> createState() => _HomeScreenState();
}

class _HomeScreenState extends State<HomeScreen> {
  final scrollController = ScrollController();
  final dataKey = GlobalKey();

  @override
  void initState() {
    scrollController.addListener(onScroll);
    super.initState();
  }

  onScroll() {
    setState(() {
      scrollPoint = scrollController.offset;
    });
    print(scrollPoint);
  }

  @override
  dispose() {
    scrollController.removeListener(onScroll);
    super.dispose();
  }

  double scrollPoint = 0.0;

  @override
  Widget build(BuildContext context) {
    print(scrollPoint);

    return Scaffold() }}

【讨论】:

  • 这是我最初想到的想法,但对我来说似乎太复杂了,我想看看是否有更简单的方法来做到这一点。我想我毕竟会使用这种方式。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-11-04
  • 2013-07-28
  • 1970-01-01
  • 2020-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
相关资源
最近更新 更多