forked from firka/student-legacy
145 lines
5.6 KiB
Dart
145 lines
5.6 KiB
Dart
import 'package:refilc/icons/filc_icons.dart';
|
|
import 'package:refilc/models/supporter.dart';
|
|
import 'package:refilc/theme/colors/colors.dart';
|
|
import 'package:refilc_mobile_ui/plus/components/supporter_group_card.dart';
|
|
import 'package:refilc_mobile_ui/plus/styles/gradients.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
class SupportersScreen extends StatelessWidget {
|
|
const SupportersScreen({super.key, required this.supporters});
|
|
|
|
final Future<Supporters?> supporters;
|
|
|
|
@override
|
|
Widget build(BuildContext context) {
|
|
return FutureBuilder<Supporters?>(
|
|
future: supporters,
|
|
builder: (context, snapshot) {
|
|
final highlightedSupporters = snapshot.data?.github
|
|
.where((e) =>
|
|
e.type == DonationType.monthly &&
|
|
e.price >= 5 &&
|
|
e.comment != "")
|
|
.toList() ??
|
|
[];
|
|
final tintaSupporters = snapshot.data?.github
|
|
.where((e) =>
|
|
e.type == DonationType.monthly &&
|
|
e.price >= 5 &&
|
|
e.comment == "")
|
|
.toList() ??
|
|
[];
|
|
final kupakSupporters = snapshot.data?.github
|
|
.where((e) => e.type == DonationType.monthly && e.price == 2)
|
|
.toList() ??
|
|
[];
|
|
final onetimeSupporters = snapshot.data?.github
|
|
.where((e) => e.type == DonationType.once && e.price >= 5)
|
|
.toList() ??
|
|
[];
|
|
final patreonSupporters = snapshot.data?.patreon ?? [];
|
|
|
|
return Scaffold(
|
|
body: CustomScrollView(
|
|
slivers: [
|
|
SliverAppBar.large(
|
|
surfaceTintColor: Theme.of(context).scaffoldBackgroundColor,
|
|
title: const Text(
|
|
"Támogatók",
|
|
style: TextStyle(fontWeight: FontWeight.w700),
|
|
),
|
|
),
|
|
if (snapshot.hasData)
|
|
SliverPadding(
|
|
padding: const EdgeInsets.symmetric(horizontal: 16.0)
|
|
.add(const EdgeInsets.only(bottom: 24.0)),
|
|
sliver: SliverToBoxAdapter(
|
|
child: Text(
|
|
snapshot.data!.description,
|
|
style: TextStyle(
|
|
fontWeight: FontWeight.w500,
|
|
fontSize: 20.0,
|
|
color: AppColors.of(context)
|
|
.text
|
|
.withValues(alpha: .7)),
|
|
),
|
|
),
|
|
),
|
|
if (!snapshot.hasData)
|
|
const SliverPadding(
|
|
padding: EdgeInsets.all(12.0),
|
|
sliver: SliverToBoxAdapter(
|
|
child: Center(child: CircularProgressIndicator()),
|
|
),
|
|
),
|
|
if (highlightedSupporters.isNotEmpty)
|
|
SliverPadding(
|
|
padding: const EdgeInsets.all(12.0),
|
|
sliver: SliverToBoxAdapter(
|
|
child: SupporterGroupCard(
|
|
title: const Text("Kiemelt támogatók"),
|
|
expanded: true,
|
|
supporters: highlightedSupporters,
|
|
),
|
|
),
|
|
),
|
|
if (tintaSupporters.isNotEmpty)
|
|
SliverPadding(
|
|
padding: const EdgeInsets.all(12.0),
|
|
sliver: SliverToBoxAdapter(
|
|
child: SupporterGroupCard(
|
|
icon: const Icon(FilcIcons.tinta),
|
|
title: Text(
|
|
"Tinta",
|
|
style: TextStyle(
|
|
foreground: GradientStyles.tintaPaint,
|
|
),
|
|
),
|
|
glow: Colors.purple,
|
|
supporters: tintaSupporters,
|
|
),
|
|
),
|
|
),
|
|
if (kupakSupporters.isNotEmpty)
|
|
SliverPadding(
|
|
padding: const EdgeInsets.all(12.0),
|
|
sliver: SliverToBoxAdapter(
|
|
child: SupporterGroupCard(
|
|
icon: const Icon(FilcIcons.kupak),
|
|
title: Text(
|
|
"Kupak",
|
|
style:
|
|
TextStyle(foreground: GradientStyles.kupakPaint),
|
|
),
|
|
glow: Colors.lightGreen,
|
|
supporters: kupakSupporters,
|
|
),
|
|
),
|
|
),
|
|
if (onetimeSupporters.isNotEmpty)
|
|
SliverPadding(
|
|
padding: const EdgeInsets.all(12.0),
|
|
sliver: SliverToBoxAdapter(
|
|
child: SupporterGroupCard(
|
|
title: const Text("Egyszeri támogatók"),
|
|
supporters: onetimeSupporters,
|
|
),
|
|
),
|
|
),
|
|
if (patreonSupporters.isNotEmpty)
|
|
SliverPadding(
|
|
padding: const EdgeInsets.all(12.0),
|
|
sliver: SliverToBoxAdapter(
|
|
child: SupporterGroupCard(
|
|
title: const Text("Régebbi támogatóink"),
|
|
supporters: patreonSupporters,
|
|
),
|
|
),
|
|
),
|
|
],
|
|
),
|
|
);
|
|
});
|
|
}
|
|
}
|