showRightSettingPanel<T> function

Future<T?> showRightSettingPanel<T>({
  1. required Widget panel,
  2. required BuildContext context,
  3. double width = PlayerStyles.kRightWheelPanelWidth,
  4. Duration duration = const Duration(milliseconds: 250),
})

以“右侧滑入”的方式展示设置面板。

Implementation

Future<T?> showRightSettingPanel<T>({
  required Widget panel,
  required BuildContext context,
  double width = PlayerStyles.kRightWheelPanelWidth,
  Duration duration = const Duration(milliseconds: 250),
}) {
  return showGeneralDialog<T>(
    context: context,
    barrierDismissible: true,
    // 点击遮罩可关闭
    barrierLabel: 'RightSettingPanel',
    barrierColor: PlayerStyles.colorOnPrimary.withOpacity(0.1),
    transitionDuration: duration,
    pageBuilder: (context, animation, secondaryAnimation) {
      // 点击面板内部不关闭,点击外部遮罩由 showGeneralDialog 处理
      return Align(
        alignment: Alignment.centerRight,
        child: Material(
          type: MaterialType.transparency, // 不改变你原本的背景表现
          child: SizedBox(
            width: width,
            height: double.infinity,
            child: panel,
          ),
        ),
      );
    },
    transitionBuilder: (context, animation, secondaryAnimation, child) {
      final offsetTween = Tween<Offset>(
        begin: const Offset(1, 0),
        end: Offset.zero,
      ).chain(CurveTween(curve: Curves.easeOut));

      return SlideTransition(
        position: animation.drive(offsetTween),
        child: child,
      );
    },
  );
}