Flutter SliverAppBar 内容在向下滚动时调整大小

标签 flutter dart

我在 sliver 应用栏及其内容方面遇到了一些问题。当我向下滚动 SliverList 的内容(在下面的代码中)时,我想调整 flexibleSpace 中的图像大小,以适应列表顶部元素的图像。

现在,我有这个(在这里保持拖动位置):click

我想想出类似的东西(并在拖动结束时弹回到初始的 expandedHeight):click

老实说,我对如何使用 sliver app bar 实现这种行为没有任何想法,我们将不胜感激!

这是我的代码

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: CustomScrollView(slivers: [
        SliverAppBar(
          elevation: 0,
          expandedHeight: 360,
          floating: false,
          pinned: false,
          snap: false,
          flexibleSpace: FlexibleSpaceBar(
              centerTitle: false,
              title: Text('Running running'),
              background: Image.asset(
                'assets/images/excercise_3.jpg',
                fit: BoxFit.cover,
              )),
        ),
        SliverList(
            delegate: SliverChildListDelegate([
          _TopInfo(),
          _MainContent(),
        ]))
      ]),
    );
  }

最佳答案

SliverAppBar中启用拉伸(stretch)属性stretch: true,将BouncingScrollPhysics()添加到CustomScrollView,同时添加stretchMode: [StretchMode.zoomBackground]FlexibleSpaceBar 小部件中,如下所示;

  CustomScrollView(
    physics: const BouncingScrollPhysics(),
    slivers: [
      SliverAppBar(
        elevation: 0,
        expandedHeight: 360,
        floating: false,
        pinned: false,
        snap: false,
        stretch: true,
        flexibleSpace: FlexibleSpaceBar(
          centerTitle: false,
          stretchModes: [StretchMode.zoomBackground],
          title: Text('Running running'),
          background: Image.asset(
            'assets/images/excercise_3.jpg',
            fit: BoxFit.cover,
          ),
        ),
      ),
      SliverList(
        delegate: SliverChildListDelegate(
          [
            _TopInfo(),
            _MainContent(),
          ],
        ),
      )
    ],
  ),

Expected Result

关于Flutter SliverAppBar 内容在向下滚动时调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65224657/

相关文章:

firebase - Google 登录后发送消息后屏幕卡住(Flutter Firebase Codelab 友好聊天应用程序)

android - 如何在Flutter中将CircularProgressIndicator放入另一个CircleProgressIndicator中?

arrays - StreamBuilder arrayContains和RangeError(索引):无效值:有效值范围为空:0

android - 运行 "flutter run"时出现 Flutter Stripe 错误

flutter - 如何在Flutter中打开我的应用程序中另一个应用程序的特定页面?

Flutter:从列表中删除元素不会删除循环生成的相应 UI 元素

flutter - 没有合适的 Android AVD 可用

android - 在 flutter 中使用 Dart 从值通知器中删除监听器

Flutter onChanged 和 onSaved 一起用于文本输入

javascript - 我应该在 Dart 映射键中使用 int/enum 或 String 来最大限度地减少内存使用吗?