backdrop filter grouping
This commit is contained in:
parent
ae9e2977b4
commit
98537339bd
4 changed files with 37 additions and 34 deletions
|
@ -180,10 +180,11 @@ class _AvesAppState extends State<AvesApp> with WidgetsBindingObserver {
|
|||
final EventChannel _errorChannel = const OptionalEventChannel('deckers.thibault/aves/error');
|
||||
|
||||
// Flutter has various page transition implementations for Android:
|
||||
// - `FadeUpwardsPageTransitionsBuilder` on Oreo / API 27 and below
|
||||
// - `OpenUpwardsPageTransitionsBuilder` on Pie / API 28
|
||||
// - `ZoomPageTransitionsBuilder` on Android 10 / API 29 and above (default in Flutter v3.22.0)
|
||||
// - `PredictiveBackPageTransitionsBuilder` for Android 15 / API 35 intra-app predictive back
|
||||
// - `FadeUpwardsPageTransitionsBuilder` on Oreo / Android 8 / API 27 and below
|
||||
// - `OpenUpwardsPageTransitionsBuilder` on Pie / Android 9 / API 28
|
||||
// - `ZoomPageTransitionsBuilder` on Q / Android 10 / API 29 (default in Flutter v3.22.0)
|
||||
// - `FadeForwardsPageTransitionsBuilder` on U / Android 14 / API 34
|
||||
// - `PredictiveBackPageTransitionsBuilder` for Android 15 / API 35 intra-app predictive back (default to `ZoomPageTransitionsBuilder`)
|
||||
static const _defaultPageTransitionsBuilder = FadeUpwardsPageTransitionsBuilder();
|
||||
static final GlobalKey<NavigatorState> _navigatorKey = GlobalKey(debugLabel: 'app-navigator');
|
||||
static ScreenBrightness? _screenBrightness;
|
||||
|
|
|
@ -7,8 +7,6 @@ final _filter = ImageFilter.blur(sigmaX: 4, sigmaY: 4);
|
|||
// as it yields performance issues when there are other layers on top
|
||||
final _identity = ImageFilter.matrix(Matrix4.identity().storage);
|
||||
|
||||
// TODO TLAD [impeller] use `BackdropKey`
|
||||
|
||||
class BlurredRect extends StatelessWidget {
|
||||
final bool enabled;
|
||||
final Widget child;
|
||||
|
@ -22,7 +20,7 @@ class BlurredRect extends StatelessWidget {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ClipRect(
|
||||
child: BackdropFilter(
|
||||
child: BackdropFilter.grouped(
|
||||
// do not modify tree when disabling filter
|
||||
filter: enabled ? _filter : _identity,
|
||||
child: child,
|
||||
|
@ -61,7 +59,7 @@ class BlurredRRect extends StatelessWidget {
|
|||
Widget build(BuildContext context) {
|
||||
return ClipRRect(
|
||||
borderRadius: borderRadius ?? BorderRadius.zero,
|
||||
child: BackdropFilter(
|
||||
child: BackdropFilter.grouped(
|
||||
// do not modify tree when disabling filter
|
||||
filter: enabled ? _filter : _identity,
|
||||
child: child,
|
||||
|
@ -83,7 +81,7 @@ class BlurredOval extends StatelessWidget {
|
|||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return ClipOval(
|
||||
child: BackdropFilter(
|
||||
child: BackdropFilter.grouped(
|
||||
// do not modify tree when disabling filter
|
||||
filter: enabled ? _filter : _identity,
|
||||
child: child,
|
||||
|
|
|
@ -249,12 +249,14 @@ class _GeoMapState extends State<GeoMap> {
|
|||
child = Column(
|
||||
crossAxisAlignment: CrossAxisAlignment.start,
|
||||
children: [
|
||||
mapHeight != null
|
||||
BackdropGroup(
|
||||
child: mapHeight != null
|
||||
? SizedBox(
|
||||
height: mapHeight,
|
||||
child: child,
|
||||
)
|
||||
: Expanded(child: child),
|
||||
),
|
||||
SafeArea(
|
||||
top: false,
|
||||
bottom: false,
|
||||
|
|
|
@ -261,7 +261,8 @@ class _EntryViewerStackState extends State<EntryViewerStack> with EntryViewContr
|
|||
return ValueListenableBuilder<bool>(
|
||||
valueListenable: _viewLocked,
|
||||
builder: (context, locked, child) {
|
||||
return Stack(
|
||||
return BackdropGroup(
|
||||
child: Stack(
|
||||
children: [
|
||||
child!,
|
||||
if (!pipEnabled) ...[
|
||||
|
@ -282,6 +283,7 @@ class _EntryViewerStackState extends State<EntryViewerStack> with EntryViewContr
|
|||
const BottomGestureAreaProtector(),
|
||||
],
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
child: viewer,
|
||||
|
|
Loading…
Reference in a new issue