Создание коллекций
This commit is contained in:
@@ -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(
|
||||
|
||||
@@ -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(() {});
|
||||
}),
|
||||
],
|
||||
),
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user