jld3103
1 year ago
9 changed files with 114 additions and 6 deletions
@ -0,0 +1,56 @@ |
|||||||
|
import 'package:flutter/material.dart'; |
||||||
|
import 'package:meta/meta.dart'; |
||||||
|
import 'package:neon/src/utils/hex_color.dart'; |
||||||
|
import 'package:neon/src/widgets/image.dart'; |
||||||
|
import 'package:nextcloud/core.dart' as core; |
||||||
|
|
||||||
|
@internal |
||||||
|
class NeonCustomBackground extends StatelessWidget { |
||||||
|
const NeonCustomBackground({ |
||||||
|
required this.theme, |
||||||
|
required this.child, |
||||||
|
super.key, |
||||||
|
}); |
||||||
|
|
||||||
|
final core.ThemingPublicCapabilities_Theming? theme; |
||||||
|
final Widget? child; |
||||||
|
|
||||||
|
double _opacity(final BuildContext context) => Theme.of(context).brightness == Brightness.light ? 0.2 : 0.1; |
||||||
|
|
||||||
|
@override |
||||||
|
Widget build(final BuildContext context) { |
||||||
|
if (theme == null) { |
||||||
|
return ColoredBox( |
||||||
|
color: Theme.of(context).colorScheme.background, |
||||||
|
child: child, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
if (theme?.backgroundPlain ?? true) { |
||||||
|
return ColoredBox( |
||||||
|
color: |
||||||
|
Color.lerp(HexColor(theme!.background), Theme.of(context).colorScheme.background, 1 - _opacity(context))!, |
||||||
|
child: child, |
||||||
|
); |
||||||
|
} |
||||||
|
|
||||||
|
final image = NeonUrlImage( |
||||||
|
url: theme!.background, |
||||||
|
fit: BoxFit.fill, |
||||||
|
); |
||||||
|
return ColoredBox( |
||||||
|
color: Theme.of(context).colorScheme.background, |
||||||
|
child: Stack( |
||||||
|
children: [ |
||||||
|
Positioned.fill( |
||||||
|
child: Opacity( |
||||||
|
opacity: _opacity(context), |
||||||
|
child: image, |
||||||
|
), |
||||||
|
), |
||||||
|
if (child != null) child!, |
||||||
|
], |
||||||
|
), |
||||||
|
); |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue