stack_wallet/lib/widgets/background.dart

89 lines
2.2 KiB
Dart
Raw Normal View History

2023-05-26 21:21:16 +00:00
/*
* This file is part of Stack Wallet.
*
* Copyright (c) 2023 Cypher Stack
* All Rights Reserved.
* The code is distributed under GPLv3 license, see LICENSE file for details.
* Generated by Cypher Stack on 2023-05-26
*
*/
import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/svg.dart';
import '../themes/stack_colors.dart';
import '../themes/theme_providers.dart';
import 'conditional_parent.dart';
class Background extends ConsumerWidget {
const Background({
2024-05-27 23:56:22 +00:00
super.key,
required this.child,
2024-05-27 23:56:22 +00:00
});
final Widget child;
@override
Widget build(BuildContext context, WidgetRef ref) {
Color? color;
2023-01-24 18:17:36 +00:00
bool shouldPad = false;
switch (Theme.of(context).extension<StackColors>()!.themeId) {
case "ocean_breeze":
2023-01-24 18:17:36 +00:00
shouldPad = true;
color = null;
break;
case "fruit_sorbet":
color = null;
break;
2023-03-17 18:56:40 +00:00
default:
color = Theme.of(context).extension<StackColors>()!.background;
break;
}
final bgAsset = ref.watch(
themeProvider.select(
(value) => value.assets.background,
),
);
return Container(
decoration: BoxDecoration(
color: color,
gradient:
Theme.of(context).extension<StackColors>()!.gradientBackground,
),
child: ConditionalParent(
condition: bgAsset != null,
builder: (child) => Stack(
children: [
Positioned.fill(
child: Padding(
2023-01-24 18:17:36 +00:00
padding: shouldPad
? EdgeInsets.only(
top: MediaQuery.of(context).size.height * (1 / 8),
bottom: MediaQuery.of(context).size.height * (1 / 12),
)
: const EdgeInsets.all(0),
child: SvgPicture.file(
File(
bgAsset!,
),
fit: BoxFit.fill,
),
),
),
Positioned.fill(
child: child,
),
],
),
child: child,
),
);
}
}