lib/ui/aliplayer_center_display_widget.dart (58 lines of code) (raw):
// Copyright © 2025 Alibaba Cloud. All rights reserved.
//
// Author: keria
// Date: 2025/2/14
// Brief: 自定义居中展示控件
import 'package:flutter/material.dart';
/// 自定义居中展示控件
class AliPlayerCenterDisplayWidget extends StatefulWidget {
/// 内容组件
final Widget contentWidget;
const AliPlayerCenterDisplayWidget({
super.key,
required this.contentWidget,
});
@override
State<AliPlayerCenterDisplayWidget> createState() =>
_AliPlayerCenterDisplayWidgetState();
}
class _AliPlayerCenterDisplayWidgetState
extends State<AliPlayerCenterDisplayWidget> {
@override
Widget build(BuildContext context) {
return AnimatedOpacity(
opacity: 1.0,
duration: const Duration(milliseconds: 300),
child: Center(
child: IntrinsicWidth(
child: IntrinsicHeight(
child: Container(
alignment: Alignment.center,
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.3),
borderRadius: BorderRadius.circular(16),
boxShadow: [
BoxShadow(
color: Colors.white.withOpacity(0.2),
blurRadius: 8,
offset: const Offset(0, 4),
),
],
),
child: Padding(
padding: const EdgeInsets.all(8),
child: widget.contentWidget, // 动态传入的内容
),
),
),
),
),
);
}
/// 状态更新回调
/// 当 Widget 的状态被更新时,该方法被调用。
///
/// Called when the state of the widget is updated.
@override
void didUpdateWidget(covariant AliPlayerCenterDisplayWidget oldWidget) {
super.didUpdateWidget(oldWidget);
if (oldWidget.contentWidget != widget.contentWidget) {
setState(() {});
}
}
}
/// 定义中心显示控件的内容类型
enum ContentViewType {
none, // 不显示
brightness, // 显示亮度滑块
volume, // 显示音量滑块
speed, // 显示倍速
}