Skip to content

Commit

Permalink
Fade status bar blur
Browse files Browse the repository at this point in the history
  • Loading branch information
elliotnash committed Aug 13, 2024
1 parent ad79f1a commit fe3b573
Showing 1 changed file with 25 additions and 8 deletions.
33 changes: 25 additions & 8 deletions lib/page/common/statusbar_blur.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,21 +2,38 @@ import 'dart:ui';

import 'package:flutter/widgets.dart';

const kBlurSteps = 6;
const double kMaxSigma = 4;
const double kOverlap = 4;

/// Blurs the top status bar (used for iOS devices)
class StatusBarBlur extends StatelessWidget {
const StatusBarBlur({super.key});
@override
Widget build(BuildContext context) {
final height = MediaQuery.of(context).viewPadding.top;
final stepHeight = height/kBlurSteps;

return Align(
alignment: Alignment.topCenter,
child: ClipRect(
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: 15, sigmaY: 15),
child: Container(
height: MediaQuery.of(context).viewPadding.top,
),
),
),
child: Stack(
children: [
for (int i = 0; i < kBlurSteps; ++i)
Positioned(
top: i * stepHeight,
left: 0,
right: 0,
child: ClipRect(
child: BackdropFilter(
filter: ImageFilter.blur(sigmaX: (1-(i.toDouble()/kBlurSteps))*kMaxSigma, sigmaY: (1-(i.toDouble()/kBlurSteps))*kMaxSigma),
child: Container(
height: stepHeight + kOverlap,
),
),
),
),
],
)
);
}
}

0 comments on commit fe3b573

Please sign in to comment.