Files
pilipala/lib/pages/video/detail/widgets/app_bar.dart
2024-03-24 16:53:20 +08:00

70 lines
2.1 KiB
Dart

import 'package:flutter/material.dart';
import 'package:pilipala/plugin/pl_player/index.dart';
class ScrollAppBar extends StatelessWidget {
final double scrollVal;
final Function callback;
final PlayerStatus playerStatus;
const ScrollAppBar(
this.scrollVal,
this.callback,
this.playerStatus,
Key? key,
) : super(key: key);
@override
Widget build(BuildContext context) {
final double statusBarHeight = MediaQuery.of(context).padding.top;
final videoHeight = MediaQuery.sizeOf(context).width * 9 / 16;
double scrollDistance = scrollVal;
if (scrollVal > videoHeight - kToolbarHeight) {
scrollDistance = videoHeight - kToolbarHeight;
}
return Positioned(
top: -videoHeight + scrollDistance + kToolbarHeight + 0.5,
left: 0,
right: 0,
child: Opacity(
opacity: scrollDistance / (videoHeight - kToolbarHeight),
child: Container(
height: statusBarHeight + kToolbarHeight,
color: Theme.of(context).colorScheme.background,
padding: EdgeInsets.only(top: statusBarHeight),
child: AppBar(
primary: false,
elevation: 0,
scrolledUnderElevation: 0,
centerTitle: true,
title: TextButton(
onPressed: () => callback(),
child: Row(
mainAxisSize: MainAxisSize.min,
children: [
const Icon(Icons.play_arrow_rounded),
Text(
playerStatus == PlayerStatus.paused
? '继续播放'
: playerStatus == PlayerStatus.completed
? '重新播放'
: '播放中',
)
],
),
),
// actions: [
// IconButton(
// onPressed: () {},
// icon: const Icon(
// Icons.share,
// size: 20,
// )),
// const SizedBox(width: 12)
// ],
),
),
),
);
}
}