aves/lib/widgets/common/fx/blurred.dart
2021-07-15 14:29:42 +09:00

77 lines
1.5 KiB
Dart

import 'dart:ui';
import 'package:flutter/material.dart';
final _filter = ImageFilter.blur(sigmaX: 4, sigmaY: 4);
class BlurredRect extends StatelessWidget {
final bool enabled;
final Widget child;
const BlurredRect({
Key? key,
this.enabled = true,
required this.child,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return enabled
? ClipRect(
child: BackdropFilter(
filter: _filter,
child: child,
),
)
: child;
}
}
class BlurredRRect extends StatelessWidget {
final bool enabled;
final double borderRadius;
final Widget child;
const BlurredRRect({
Key? key,
this.enabled = true,
required this.borderRadius,
required this.child,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return enabled
? ClipRRect(
borderRadius: BorderRadius.all(Radius.circular(borderRadius)),
child: BackdropFilter(
filter: _filter,
child: child,
),
)
: child;
}
}
class BlurredOval extends StatelessWidget {
final bool enabled;
final Widget child;
const BlurredOval({
Key? key,
this.enabled = true,
required this.child,
}) : super(key: key);
@override
Widget build(BuildContext context) {
return enabled
? ClipOval(
child: BackdropFilter(
filter: _filter,
child: child,
),
)
: child;
}
}