added feedback

This commit is contained in:
amirrezaghabeli
2025-08-18 15:33:50 +03:30
parent d9d5502e79
commit 3dca9fd383
8 changed files with 231 additions and 229 deletions
@@ -1,7 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/data/services/model/tender_data/tender_data.dart';
import 'package:tm_app/view_models/tenders_view_model.dart';
import '../../../core/constants/assets.dart';
import '../../../core/utils/size_config.dart';
@@ -26,29 +28,45 @@ class _MainTendersSliderState extends State<MainTendersSlider> {
int currentPage = 1;
void _goToPreviousPage() {
if (currentPage == 1) {
return;
}
pageController.previousPage(
duration: Duration(milliseconds: 300),
curve: Curves.easeInOutCubic,
);
setState(() {
if (currentPage == 1) {
return;
}
currentPage = currentPage - 1;
});
// Fetch feedback for the previous tender if not already loaded
final viewModel = context.read<TendersViewModel>();
final previousTenderId = widget.tenders[currentPage - 2].id!;
if (!viewModel.hasFeedbackForTender(previousTenderId)) {
viewModel.getTenderFeedback(previousTenderId);
}
}
void _goToNextPage() {
if (currentPage == widget.tenders.length) {
return;
}
pageController.nextPage(
duration: Duration(milliseconds: 300),
curve: Curves.easeInOutCubic,
);
setState(() {
if (currentPage == widget.tenders.length) {
return;
}
currentPage = currentPage + 1;
});
// Fetch feedback for the next tender if not already loaded
final viewModel = context.read<TendersViewModel>();
final nextTenderId = widget.tenders[currentPage].id!;
if (!viewModel.hasFeedbackForTender(nextTenderId)) {
viewModel.getTenderFeedback(nextTenderId);
}
}
@override
@@ -76,6 +94,11 @@ class _MainTendersSliderState extends State<MainTendersSlider> {
setState(() {
currentPage = index + 1;
});
// Fetch feedback for the new tender if not already loaded
final viewModel = context.read<TendersViewModel>();
if (!viewModel.hasFeedbackForTender(widget.tenders[index].id!)) {
viewModel.getTenderFeedback(widget.tenders[index].id!);
}
},
itemBuilder: (context, index) {
final tender = widget.tenders[index];