返回
沉浸式动画,B站播放器暂停时的header效果实现
见解分享
2024-02-22 05:30:02
前言
在Flutter中,NestedScrollView是一个非常强大的控件,它可以让我们轻松实现复杂的滚动效果。而extended_nested_scroll_view是FlutterCandies全家桶中的一款控件,它对NestedScrollView进行了扩展,使我们能够实现更加丰富的滚动效果。
实现步骤
1. 导入必要的库
首先,我们需要导入必要的库。
import 'package:flutter/material.dart';
import 'package:flutter_candies/flutter_candies.dart';
2. 创建NestedScrollView
接下来,我们需要创建一个NestedScrollView。
NestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[
SliverAppBar(
expandedHeight: 200.0,
floating: false,
pinned: true,
flexibleSpace: FlexibleSpaceBar(
title: Text('B站播放器'),
background: Image.network(
'https://img.zcool.cn/community/01c684594a15330000018c1b091485.jpg',
fit: BoxFit.cover,
),
),
),
];
},
body: ListView.builder(
itemCount: 100,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text('Item $index'),
);
},
),
);
3. 使用extended_nested_scroll_view
为了实现B站播放器暂停时的header效果,我们需要使用extended_nested_scroll_view。
ExtendedNestedScrollView(
headerSliverBuilder: (BuildContext context, bool innerBoxIsScrolled) {
return <Widget>[
SliverAppBar(
expandedHeight: 200.0,
floating: false,
pinned: true,
flexibleSpace: FlexibleSpaceBar(
title: Text('B站播放器'),
background: Image.network(
'https://img.zcool.cn/community/01c684594a15330000018c1b091485.jpg',
fit: BoxFit.cover,
),
),
),
];
},
body: ListView.builder(
itemCount: 100,
itemBuilder: (BuildContext context, int index) {
return ListTile(
title: Text('Item $index'),
);
},
),
);
4. 设置maxHeight和minHei
最后,我们需要设置maxHeight和minHei属性。
maxHeight: 200.0,
minHei: 50.0,
这样,当用户滚动页面时,header就会从200.0像素的高度缩小到50.0像素的高度。
总结
以上就是如何在Flutter中使用NestedScrollView和extended_nested_scroll_view来实现B站播放器暂停时的header效果。希望本文对您有所帮助。