plans filters ready

This commit is contained in:
Username1548
2024-12-16 20:31:23 +07:00
parent 067b10ed7f
commit 27241aebac
45 changed files with 1806 additions and 657 deletions

View File

@@ -14,7 +14,7 @@ class AboutDietCubit extends Cubit<AboutDietState> {
try {
final diet = await dietsRepository.getDiet(id);
if (index != null) {
dietsRepository.emitCommentsStateToFeed(DietCommentsState(index: index, totalComments: diet.totalComments));
dietsRepository.emitCommentsStateToFeed(CommentsState(index: index, totalComments: diet.totalComments));
}
emit(AboutDietState.loaded(diet));
} catch (e) {
@@ -42,7 +42,7 @@ class AboutDietCubit extends Cubit<AboutDietState> {
totalLikes: currentDiet.totalLikes - 1,
wasLikedByMe: false,
);
dietsRepository.emitLikesStateToFeed(DietLikesState(wasLikedByMe: updatedDiet.wasLikedByMe, totalLikes: updatedDiet.totalLikes, index: dietIndexInFeed));
dietsRepository.emitLikesStateToFeed(LikesState(wasLikedByMe: updatedDiet.wasLikedByMe, totalLikes: updatedDiet.totalLikes, index: dietIndexInFeed));
emit(AboutDietState.loaded(updatedDiet));
} else {
final updatedDiet = currentDiet.copyWith(
@@ -50,7 +50,7 @@ class AboutDietCubit extends Cubit<AboutDietState> {
wasLikedByMe: true,
);
dietsRepository.emitLikesStateToFeed(DietLikesState(wasLikedByMe: updatedDiet.wasLikedByMe, totalLikes: updatedDiet.totalLikes, index: dietIndexInFeed));
dietsRepository.emitLikesStateToFeed(LikesState(wasLikedByMe: updatedDiet.wasLikedByMe, totalLikes: updatedDiet.totalLikes, index: dietIndexInFeed));
emit(AboutDietState.loaded(updatedDiet));
}
@@ -62,15 +62,14 @@ class AboutDietCubit extends Cubit<AboutDietState> {
await dietsRepository.likeDiet(id);
} catch (e) {
log(e.toString());
dietsRepository
.emitLikesStateToFeed(DietLikesState(wasLikedByMe: currentDiet.wasLikedByMe, totalLikes: currentDiet.totalLikes, index: dietIndexInFeed));
dietsRepository.emitLikesStateToFeed(LikesState(wasLikedByMe: currentDiet.wasLikedByMe, totalLikes: currentDiet.totalLikes, index: dietIndexInFeed));
emit(AboutDietState.loaded(currentDiet));
}
},
);
}
Future<void> addToFavorite(int id, int dietIndexInFeed) async {
Future<void> addToFavorite(int id, int dietIndex) async {
if (state is! DietStateLoaded) return;
final currentDiet = (state as DietStateLoaded).diet;
@@ -78,11 +77,11 @@ class AboutDietCubit extends Cubit<AboutDietState> {
final updatedDiet = currentDiet.copyWith(
isFavorite: true,
);
dietsRepository.emitFavoriteStateToFeed(DietFavoriteState(isFavorite: updatedDiet.isFavorite, index: dietIndexInFeed));
dietsRepository.emitFavoriteStateToFeed(FavoriteState(isFavorite: updatedDiet.isFavorite, index: dietIndex));
emit(AboutDietState.loaded(updatedDiet));
EasyDebounce.debounce(
'add_diet_to_favorites',
'add_or_remove_diet_to_favorites',
Duration(seconds: 1),
() async {
try {
@@ -90,14 +89,14 @@ class AboutDietCubit extends Cubit<AboutDietState> {
} catch (e) {
log(e.toString());
showErrorToast('Произошла ошибка. Попробуйте ещё раз через некоторое время');
dietsRepository.emitFavoriteStateToFeed(DietFavoriteState(isFavorite: currentDiet.isFavorite, index: dietIndexInFeed));
dietsRepository.emitFavoriteStateToFeed(FavoriteState(isFavorite: currentDiet.isFavorite, index: dietIndex));
emit(AboutDietState.loaded(currentDiet));
}
},
);
}
Future<void> removeFromFavorite(int id, int dietIndexInFeed) async {
Future<void> removeFromFavorite(int id, int dietIndex) async {
if (state is! DietStateLoaded) return;
final currentDiet = (state as DietStateLoaded).diet;
@@ -105,11 +104,11 @@ class AboutDietCubit extends Cubit<AboutDietState> {
final updatedDiet = currentDiet.copyWith(
isFavorite: false,
);
dietsRepository.emitFavoriteStateToFeed(DietFavoriteState(isFavorite: updatedDiet.isFavorite, index: dietIndexInFeed));
dietsRepository.emitFavoriteStateToFeed(FavoriteState(isFavorite: updatedDiet.isFavorite, index: dietIndex));
emit(AboutDietState.loaded(updatedDiet));
EasyDebounce.debounce(
'remove_diet_from_favorites',
'add_or_remove_diet_to_favorites',
Duration(seconds: 1),
() async {
try {
@@ -117,7 +116,7 @@ class AboutDietCubit extends Cubit<AboutDietState> {
} catch (e) {
log(e.toString());
showErrorToast('Произошла ошибка. Попробуйте ещё раз через некоторое время');
dietsRepository.emitFavoriteStateToFeed(DietFavoriteState(isFavorite: currentDiet.isFavorite, index: dietIndexInFeed));
dietsRepository.emitFavoriteStateToFeed(FavoriteState(isFavorite: currentDiet.isFavorite, index: dietIndex));
emit(AboutDietState.loaded(currentDiet));
}
},

View File

@@ -128,7 +128,7 @@ class _AboutDietScreenState extends State<AboutDietScreen> {
elevation: 0,
focusElevation: 0,
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(16),
borderRadius: BorderRadius.circular(20),
),
backgroundColor: appTheme.greenA700,
onPressed: () {
@@ -159,7 +159,8 @@ class _AboutDietScreenState extends State<AboutDietScreen> {
width: 52,
height: 52,
size: 24,
shape: BoxShape.circle,
shape: BoxShape.rectangle,
borderRadius: BorderRadius.circular(20),
color: appTheme.gray50,
),
],

View File

@@ -11,8 +11,7 @@ class AuthorCard extends StatelessWidget {
final Author author;
final String title;
@override
Widget build(BuildContext context) {
// final s = S.of(context);
Widget build(BuildContext context) {
return Container(
width: MediaQuery.sizeOf(context).width,
decoration: BoxDecoration(borderRadius: BorderRadius.circular(12), color: appTheme.cardBackground),

View File

@@ -32,39 +32,42 @@ class _ExpandableTextState extends State<ExpandableText> {
return Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Stack(
children: [
Html(
data: widget.text,
style: {
"*": Style(
color: Colors.black87,
maxLines: isExpanded ? null : widget.maxLines,
textOverflow: TextOverflow.clip,
),
},
),
if (!isExpanded)
Positioned.fill(
child: Align(
alignment: Alignment.bottomCenter,
child: Container(
height: 35,
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Colors.white.withOpacity(0.0),
Colors.white.withOpacity(0.6),
Colors.white,
],
Padding(
padding: const EdgeInsets.symmetric(horizontal: 16),
child: Stack(
children: [
Html(
data: widget.text,
style: {
"*": Style(
color: Colors.black87,
maxLines: isExpanded ? null : widget.maxLines,
textOverflow: TextOverflow.clip,
),
},
),
if (!isExpanded)
Positioned.fill(
child: Align(
alignment: Alignment.bottomCenter,
child: Container(
height: 35,
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Colors.white.withOpacity(0.0),
Colors.white.withOpacity(0.6),
Colors.white,
],
),
),
),
),
),
),
],
],
),
),
Align(
alignment: Alignment.bottomCenter,

View File

@@ -9,9 +9,9 @@ class DietRepository {
DietRepository({required this.dietsService});
final DietService dietsService;
final _dietLikeStateStreamController = StreamController<DietLikesState>.broadcast();
final _dietFavoriteStateStreamController = StreamController<DietFavoriteState>.broadcast();
final _dietCommentsStateStreamController = StreamController<DietCommentsState>.broadcast();
final _dietLikeStateStreamController = StreamController<LikesState>.broadcast();
final _dietFavoriteStateStreamController = StreamController<FavoriteState>.broadcast();
final _dietCommentsStateStreamController = StreamController<CommentsState>.broadcast();
Stream get dietLikeState => _dietLikeStateStreamController.stream;
Stream get dietFavoriteState => _dietFavoriteStateStreamController.stream;
Stream get dietCommentsState => _dietCommentsStateStreamController.stream;
@@ -49,17 +49,17 @@ class DietRepository {
}
}
void emitLikesStateToFeed(DietLikesState state) => _dietLikeStateStreamController.add(state);
void emitFavoriteStateToFeed(DietFavoriteState state) => _dietFavoriteStateStreamController.add(state);
void emitCommentsStateToFeed(DietCommentsState state) => _dietCommentsStateStreamController.add(state);
void emitLikesStateToFeed(LikesState state) => _dietLikeStateStreamController.add(state);
void emitFavoriteStateToFeed(FavoriteState state) => _dietFavoriteStateStreamController.add(state);
void emitCommentsStateToFeed(CommentsState state) => _dietCommentsStateStreamController.add(state);
}
class DietLikesState extends Equatable {
class LikesState extends Equatable {
final bool wasLikedByMe;
final int totalLikes;
final int index;
DietLikesState({
LikesState({
required this.wasLikedByMe,
required this.totalLikes,
required this.index,
@@ -73,11 +73,11 @@ class DietLikesState extends Equatable {
];
}
class DietFavoriteState extends Equatable {
class FavoriteState extends Equatable {
final bool isFavorite;
final int index;
DietFavoriteState({
FavoriteState({
required this.isFavorite,
required this.index,
});
@@ -89,11 +89,11 @@ class DietFavoriteState extends Equatable {
];
}
class DietCommentsState extends Equatable {
class CommentsState extends Equatable {
final int index;
final int totalComments;
DietCommentsState({
CommentsState({
required this.index,
required this.totalComments,
});
@@ -103,4 +103,4 @@ class DietCommentsState extends Equatable {
index,
totalComments,
];
}
}