Создание коллекций

This commit is contained in:
2025-03-25 20:53:53 +03:00
parent cb6ce05059
commit e6517402d3
375 changed files with 1775 additions and 1519 deletions

View File

@@ -1,3 +1,4 @@
import 'dart:convert';
import 'dart:math';
import 'package:auto_route/auto_route.dart';
@@ -6,15 +7,19 @@ import 'package:flutter_slidable/flutter_slidable.dart';
import 'package:remever/common/functions.dart';
import 'package:remever/common/resources.dart';
import 'package:remever/common/widgets/typography.dart';
import 'package:remever/common/widgets/w_if.dart';
import 'package:remever/common/widgets/wspace.dart';
import 'package:remever/components/extensions/context.dart';
import 'package:remever/database/database.dart';
import 'package:remever/gen/assets.gen.dart';
import 'package:remever/router.gr.dart';
import 'package:remever/screens/collections/widgets/collection_progress_bar.dart';
import 'package:remever/screens/dialogs/action_dialog.dart';
class CollectionCard extends StatelessWidget {
const CollectionCard({super.key});
const CollectionCard({super.key, required this.collection});
final Collection collection;
@override
Widget build(BuildContext context) {
@@ -36,7 +41,10 @@ class CollectionCard extends StatelessWidget {
context: context,
backgroundColor: const Color(0xFFFFE4E6),
foregroundColor: const Color(0xFFFF5C69),
icon: Icons.favorite_border,
icon:
collection.isLiked
? Icons.favorite_outlined
: Icons.favorite_border,
onPressed: () {},
),
const WSpace(8),
@@ -113,13 +121,16 @@ class CollectionCard extends StatelessWidget {
_buildIconWithText(
icon: Assets.icons.typeCards,
color: AppColors.disabled,
text: Random().nextInt(654).toString(),
text: collection.likesCount.toString(),
),
const WSpace(8),
_buildIconWithText(
icon: Assets.icons.typeLike1818,
icon:
collection.isLiked
? Assets.icons.typeLike1818
: Assets.icons.typeLike,
color: AppColors.danger,
text: Random().nextInt(7689).toString(),
text: collection.likesCount.toString(),
),
],
);
@@ -130,7 +141,7 @@ class CollectionCard extends StatelessWidget {
///
Widget _buildTitle() {
return AppTypography(
'Астрономия',
collection.title,
type: Medium16px(),
maxLines: 2,
softWrap: true,
@@ -141,6 +152,31 @@ class CollectionCard extends StatelessWidget {
/// Обложка коллекции
///
Widget _buildAvatar() {
return SizedBox.square(
dimension: 50.r,
child: DecoratedBox(
decoration: BoxDecoration(shape: BoxShape.circle, color: AppColors.bg),
child: Wif(
condition: collection.image != null,
builder:
(context) => ClipOval(
child: Image.memory(
base64Decode(collection.image!),
fit: BoxFit.cover,
),
),
fallback:
(context) => Center(
child: AppTypography(
collection.title.substring(0, 1),
type: Bold34px(),
),
),
),
),
);
return SizedBox.square(
dimension: 50.r,
child: DecoratedBox(

View File

@@ -4,7 +4,6 @@ import 'package:remever/common/resources.dart';
import 'package:remever/common/widgets/typography.dart';
import 'package:remever/components/extensions/context.dart';
import 'package:remever/components/extensions/state.dart';
import 'package:remever/screens/collections/cubit/collection_cubit.dart';
class CollectionsFilters extends StatefulWidget {
const CollectionsFilters({super.key});
@@ -21,36 +20,15 @@ class _CollectionsFiltersState extends State<CollectionsFilters> {
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: <Widget>[
_buildFilterButton(
context.read<CollectionCubit>().collectionFiltersIndex == 0
? AppColors.white
: AppColors.gray_bg,
'Все',
() {
context.read<CollectionCubit>().collectionFiltersIndex = 0;
safeSetState(() {});
},
),
_buildFilterButton(
context.read<CollectionCubit>().collectionFiltersIndex == 1
? AppColors.white
: AppColors.gray_bg,
'Публичные',
() {
context.read<CollectionCubit>().collectionFiltersIndex = 1;
safeSetState(() {});
},
),
_buildFilterButton(
context.read<CollectionCubit>().collectionFiltersIndex == 2
? AppColors.white
: AppColors.gray_bg,
'Подписки',
() {
context.read<CollectionCubit>().collectionFiltersIndex = 2;
safeSetState(() {});
},
),
_buildFilterButton(AppColors.white, 'Все', () {
safeSetState(() {});
}),
_buildFilterButton(AppColors.gray_bg, 'Публичные', () {
safeSetState(() {});
}),
_buildFilterButton(AppColors.gray_bg, 'Подписки', () {
safeSetState(() {});
}),
],
),
);