Merge pull request 'changed messages to toast' (#105) from toast_messages into main

Reviewed-on: https://repo.ravanertebat.com/TM/tm_app/pulls/105
This commit is contained in:
a.ghabeli
2025-09-07 10:14:36 +03:30
16 changed files with 75 additions and 131 deletions
+2 -2
View File
@@ -6,7 +6,7 @@ class AppToast {
toastification.show( toastification.show(
context: context, context: context,
type: ToastificationType.success, type: ToastificationType.success,
style: ToastificationStyle.fillColored, style: ToastificationStyle.flatColored,
title: Text(message), title: Text(message),
autoCloseDuration: const Duration(seconds: 3), autoCloseDuration: const Duration(seconds: 3),
); );
@@ -16,7 +16,7 @@ class AppToast {
toastification.show( toastification.show(
context: context, context: context,
type: ToastificationType.error, type: ToastificationType.error,
style: ToastificationStyle.fillColored, style: ToastificationStyle.flatColored,
title: Text(message), title: Text(message),
autoCloseDuration: const Duration(seconds: 3), autoCloseDuration: const Duration(seconds: 3),
); );
+14 -22
View File
@@ -7,6 +7,7 @@ import 'package:tm_app/views/detail/widgets/tender_detail_action.dart';
import 'package:tm_app/views/detail/widgets/tender_detail_card.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_card.dart';
import 'package:tm_app/views/detail/widgets/tender_detail_header.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_header.dart';
import '../../../core/utils/app_toast.dart';
import '../../shared/desktop_navigation_widget.dart'; import '../../shared/desktop_navigation_widget.dart';
import '../strings/tender_details_strings.dart'; import '../strings/tender_details_strings.dart';
@@ -32,46 +33,37 @@ class _TenderDetailDesktopPageState extends State<TenderDetailDesktopPage> {
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'submitted' && viewModel.status == 'submitted' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderSubmittedSuccessfully), TenderDetailsStrings.tenderSubmittedSuccessfully,
),
); );
} }
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'unsubmitted' && viewModel.status == 'unsubmitted' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderUnsubmittedSuccessfully), TenderDetailsStrings.tenderUnsubmittedSuccessfully,
),
); );
} }
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'rejected' && viewModel.status == 'rejected' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderRejectedSuccessfully), TenderDetailsStrings.tenderRejectedSuccessfully,
),
); );
} }
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'unrejected' && viewModel.status == 'unrejected' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderUnrejectedSuccessfully), TenderDetailsStrings.tenderUnrejectedSuccessfully,
),
); );
} }
if (viewModel.approvalStatus != false && viewModel.errorMessage != null) { if (viewModel.approvalStatus != false && viewModel.errorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.error(context, viewModel.errorMessage!);
SnackBar(
backgroundColor: AppColors.errorColor,
content: Text(viewModel.errorMessage!),
),
);
} }
} }
+15 -22
View File
@@ -10,6 +10,8 @@ import 'package:tm_app/views/detail/widgets/tender_detail_card.dart';
import 'package:tm_app/views/detail/widgets/tender_detail_header.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_header.dart';
import 'package:tm_app/views/shared/tender_app_bar.dart'; import 'package:tm_app/views/shared/tender_app_bar.dart';
import '../../../core/utils/app_toast.dart';
class TenderDetailMobilePage extends StatefulWidget { class TenderDetailMobilePage extends StatefulWidget {
final String tenderId; final String tenderId;
const TenderDetailMobilePage({required this.tenderId, super.key}); const TenderDetailMobilePage({required this.tenderId, super.key});
@@ -31,46 +33,37 @@ class _TenderDetailMobilePageState extends State<TenderDetailMobilePage> {
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'submitted' && viewModel.status == 'submitted' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderSubmittedSuccessfully), TenderDetailsStrings.tenderSubmittedSuccessfully,
),
); );
} }
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'unsubmitted' && viewModel.status == 'unsubmitted' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderUnsubmittedSuccessfully), TenderDetailsStrings.tenderUnsubmittedSuccessfully,
),
); );
} }
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'rejected' && viewModel.status == 'rejected' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderRejectedSuccessfully), TenderDetailsStrings.tenderRejectedSuccessfully,
),
); );
} }
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'unrejected' && viewModel.status == 'unrejected' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderUnrejectedSuccessfully), TenderDetailsStrings.tenderUnrejectedSuccessfully,
),
); );
} }
if (viewModel.approvalStatus != false && viewModel.errorMessage != null) { if (viewModel.approvalStatus != false && viewModel.errorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.error(context, viewModel.errorMessage!);
SnackBar(
backgroundColor: AppColors.errorColor,
content: Text(viewModel.errorMessage!),
),
);
} }
} }
+14 -22
View File
@@ -9,6 +9,7 @@ import 'package:tm_app/views/detail/widgets/tender_detail_card.dart';
import 'package:tm_app/views/detail/widgets/tender_detail_header.dart'; import 'package:tm_app/views/detail/widgets/tender_detail_header.dart';
import 'package:tm_app/views/shared/tablet_navigation_widget.dart'; import 'package:tm_app/views/shared/tablet_navigation_widget.dart';
import '../../../core/utils/app_toast.dart';
import '../../shared/tender_app_bar.dart'; import '../../shared/tender_app_bar.dart';
import '../strings/tender_details_strings.dart'; import '../strings/tender_details_strings.dart';
@@ -33,46 +34,37 @@ class _TenderDetailTabletPageState extends State<TenderDetailTabletPage> {
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'submitted' && viewModel.status == 'submitted' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderSubmittedSuccessfully), TenderDetailsStrings.tenderSubmittedSuccessfully,
),
); );
} }
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'unsubmitted' && viewModel.status == 'unsubmitted' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderUnsubmittedSuccessfully), TenderDetailsStrings.tenderUnsubmittedSuccessfully,
),
); );
} }
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'rejected' && viewModel.status == 'rejected' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderRejectedSuccessfully), TenderDetailsStrings.tenderRejectedSuccessfully,
),
); );
} }
if (viewModel.status.isNotEmpty && if (viewModel.status.isNotEmpty &&
viewModel.status == 'unrejected' && viewModel.status == 'unrejected' &&
viewModel.approvalStatus == true) { viewModel.approvalStatus == true) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.success(
SnackBar( context,
content: Text(TenderDetailsStrings.tenderUnrejectedSuccessfully), TenderDetailsStrings.tenderUnrejectedSuccessfully,
),
); );
} }
if (viewModel.approvalStatus != false && viewModel.errorMessage != null) { if (viewModel.approvalStatus != false && viewModel.errorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.error(context, viewModel.errorMessage!);
SnackBar(
backgroundColor: AppColors.errorColor,
content: Text(viewModel.errorMessage!),
),
);
} }
} }
@@ -8,6 +8,7 @@ import 'package:tm_app/data/services/model/tender_approvals_data/tender_approval
import 'package:tm_app/view_models/liked_tenders_view_model.dart'; import 'package:tm_app/view_models/liked_tenders_view_model.dart';
import 'package:tm_app/views/liked_tenders/widgets/liked_tenders_list_item.dart'; import 'package:tm_app/views/liked_tenders/widgets/liked_tenders_list_item.dart';
import '../../../core/utils/app_toast.dart';
import '../../shared/desktop_navigation_widget.dart'; import '../../shared/desktop_navigation_widget.dart';
import '../strings/liked_tenders_strings.dart'; import '../strings/liked_tenders_strings.dart';
@@ -31,9 +32,7 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
void _viewModelListener() { void _viewModelListener() {
if (viewModel.approvalErrorMessage?.isNotEmpty == true && if (viewModel.approvalErrorMessage?.isNotEmpty == true &&
viewModel.approvalStatus == false) { viewModel.approvalStatus == false) {
ScaffoldMessenger.of( AppToast.error(context, viewModel.approvalErrorMessage!);
context,
).showSnackBar(SnackBar(content: Text(viewModel.approvalErrorMessage!)));
viewModel.clearApprovalErrorMessage(); viewModel.clearApprovalErrorMessage();
} }
} }
@@ -4,6 +4,7 @@ import 'package:flutter_svg/svg.dart';
import 'package:provider/provider.dart'; import 'package:provider/provider.dart';
import 'package:tm_app/core/constants/assets.dart'; import 'package:tm_app/core/constants/assets.dart';
import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/app_toast.dart';
import 'package:tm_app/core/utils/size_config.dart'; import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/data/services/model/tender_approvals_data/tender_approvals_data.dart'; import 'package:tm_app/data/services/model/tender_approvals_data/tender_approvals_data.dart';
import 'package:tm_app/view_models/liked_tenders_view_model.dart'; import 'package:tm_app/view_models/liked_tenders_view_model.dart';
@@ -34,9 +35,7 @@ class _LikedTendersMobilePageState extends State<LikedTendersMobilePage> {
if (mounted && if (mounted &&
viewModel.approvalErrorMessage?.isNotEmpty == true && viewModel.approvalErrorMessage?.isNotEmpty == true &&
viewModel.approvalStatus == false) { viewModel.approvalStatus == false) {
ScaffoldMessenger.of( AppToast.error(context, viewModel.approvalErrorMessage!);
context,
).showSnackBar(SnackBar(content: Text(viewModel.approvalErrorMessage!)));
viewModel.clearApprovalErrorMessage(); viewModel.clearApprovalErrorMessage();
} }
} }
@@ -9,6 +9,7 @@ import 'package:tm_app/view_models/liked_tenders_view_model.dart';
import 'package:tm_app/views/liked_tenders/strings/liked_tenders_strings.dart'; import 'package:tm_app/views/liked_tenders/strings/liked_tenders_strings.dart';
import 'package:tm_app/views/liked_tenders/widgets/liked_tenders_list_item.dart'; import 'package:tm_app/views/liked_tenders/widgets/liked_tenders_list_item.dart';
import '../../../core/utils/app_toast.dart';
import '../../../data/services/model/tender_approvals_data/tender_approvals_data.dart'; import '../../../data/services/model/tender_approvals_data/tender_approvals_data.dart';
import '../../shared/tablet_navigation_widget.dart'; import '../../shared/tablet_navigation_widget.dart';
import '../../shared/tender_app_bar.dart'; import '../../shared/tender_app_bar.dart';
@@ -32,9 +33,7 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
void _viewModelListener() { void _viewModelListener() {
if (viewModel.approvalErrorMessage?.isNotEmpty == true && if (viewModel.approvalErrorMessage?.isNotEmpty == true &&
viewModel.approvalStatus == false) { viewModel.approvalStatus == false) {
ScaffoldMessenger.of( AppToast.error(context, viewModel.approvalErrorMessage!);
context,
).showSnackBar(SnackBar(content: Text(viewModel.approvalErrorMessage!)));
viewModel.clearApprovalErrorMessage(); viewModel.clearApprovalErrorMessage();
} }
} }
@@ -7,6 +7,7 @@ import 'package:tm_app/core/theme/colors.dart';
import '../../../core/constants/assets.dart'; import '../../../core/constants/assets.dart';
import '../../../core/routes/app_routes.dart'; import '../../../core/routes/app_routes.dart';
import '../../../core/utils/app_toast.dart';
import '../../../core/utils/size_config.dart'; import '../../../core/utils/size_config.dart';
import '../../../view_models/auth_view_model.dart'; import '../../../view_models/auth_view_model.dart';
import '../strings/login_strings.dart'; import '../strings/login_strings.dart';
@@ -33,9 +34,7 @@ class _LoginDesktopPageState extends State<LoginDesktopPage> {
if (viewModel.loggedInUser != null) { if (viewModel.loggedInUser != null) {
Router.neglect(context, () => context.go('/home')); Router.neglect(context, () => context.go('/home'));
} else if (viewModel.errorMessage != null) { } else if (viewModel.errorMessage != null) {
ScaffoldMessenger.of( AppToast.error(context, viewModel.errorMessage!);
context,
).showSnackBar(SnackBar(content: Text(viewModel.errorMessage!)));
} }
} }
+2 -3
View File
@@ -6,6 +6,7 @@ import 'package:tm_app/core/routes/app_routes.dart';
import 'package:tm_app/core/theme/colors.dart'; import 'package:tm_app/core/theme/colors.dart';
import '../../../core/constants/assets.dart'; import '../../../core/constants/assets.dart';
import '../../../core/utils/app_toast.dart';
import '../../../core/utils/size_config.dart'; import '../../../core/utils/size_config.dart';
import '../../../view_models/auth_view_model.dart'; import '../../../view_models/auth_view_model.dart';
import '../strings/login_strings.dart'; import '../strings/login_strings.dart';
@@ -32,9 +33,7 @@ class _LoginMobilePageState extends State<LoginMobilePage> {
Router.neglect(context, () => context.go('/home')); Router.neglect(context, () => context.go('/home'));
} }
if (viewModel.errorMessage != null) { if (viewModel.errorMessage != null) {
ScaffoldMessenger.of( AppToast.error(context, viewModel.errorMessage!);
context,
).showSnackBar(SnackBar(content: Text(viewModel.errorMessage!)));
} }
} }
+2 -3
View File
@@ -5,6 +5,7 @@ import 'package:tm_app/core/theme/colors.dart';
import '../../../core/constants/assets.dart'; import '../../../core/constants/assets.dart';
import '../../../core/routes/app_routes.dart'; import '../../../core/routes/app_routes.dart';
import '../../../core/utils/app_toast.dart';
import '../../../core/utils/size_config.dart'; import '../../../core/utils/size_config.dart';
import '../../../view_models/auth_view_model.dart'; import '../../../view_models/auth_view_model.dart';
import '../strings/login_strings.dart'; import '../strings/login_strings.dart';
@@ -32,9 +33,7 @@ class _LoginTabletPageState extends State<LoginTabletPage> {
Router.neglect(context, () => context.go('/home')); Router.neglect(context, () => context.go('/home'));
} }
if (viewModel.errorMessage != null) { if (viewModel.errorMessage != null) {
ScaffoldMessenger.of( AppToast.error(context, viewModel.errorMessage!);
context,
).showSnackBar(SnackBar(content: Text(viewModel.errorMessage!)));
} }
} }
+2 -6
View File
@@ -7,6 +7,7 @@ import 'package:tm_app/view_models/profile_view_model.dart';
import '../../../core/constants/assets.dart'; import '../../../core/constants/assets.dart';
import '../../../core/constants/common_strings.dart'; import '../../../core/constants/common_strings.dart';
import '../../../core/theme/colors.dart'; import '../../../core/theme/colors.dart';
import '../../../core/utils/app_toast.dart';
import '../../../core/utils/size_config.dart'; import '../../../core/utils/size_config.dart';
import '../../shared/desktop_navigation_widget.dart'; import '../../shared/desktop_navigation_widget.dart';
import '../strings/profile_strings.dart'; import '../strings/profile_strings.dart';
@@ -31,12 +32,7 @@ class _DesktopProfilePageState extends State<DesktopProfilePage> {
void _profileListener() { void _profileListener() {
if (viewModel.errorMessage != null) { if (viewModel.errorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.error(context, viewModel.errorMessage!);
SnackBar(
content: Text(viewModel.errorMessage!),
backgroundColor: AppColors.red,
),
);
} }
if (viewModel.loggedOut) { if (viewModel.loggedOut) {
Router.neglect(context, () => LoginScreenRoute().go(context)); Router.neglect(context, () => LoginScreenRoute().go(context));
+2 -6
View File
@@ -8,6 +8,7 @@ import 'package:tm_app/views/profile/widgets/theme_toggle.dart';
import '../../../core/constants/assets.dart'; import '../../../core/constants/assets.dart';
import '../../../core/constants/common_strings.dart'; import '../../../core/constants/common_strings.dart';
import '../../../core/theme/colors.dart'; import '../../../core/theme/colors.dart';
import '../../../core/utils/app_toast.dart';
import '../../../core/utils/size_config.dart'; import '../../../core/utils/size_config.dart';
import '../../shared/tender_app_bar.dart'; import '../../shared/tender_app_bar.dart';
import '../strings/profile_strings.dart'; import '../strings/profile_strings.dart';
@@ -31,12 +32,7 @@ class _MobileProfilePageState extends State<MobileProfilePage> {
void _profileListener() { void _profileListener() {
if (viewModel.errorMessage != null) { if (viewModel.errorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.error(context, viewModel.errorMessage!);
SnackBar(
content: Text(viewModel.errorMessage!),
backgroundColor: AppColors.red,
),
);
} }
if (viewModel.loggedOut) { if (viewModel.loggedOut) {
Router.neglect(context, () => LoginScreenRoute().go(context)); Router.neglect(context, () => LoginScreenRoute().go(context));
+2 -6
View File
@@ -7,6 +7,7 @@ import 'package:tm_app/core/routes/app_routes.dart';
import 'package:tm_app/view_models/profile_view_model.dart'; import 'package:tm_app/view_models/profile_view_model.dart';
import '../../../core/theme/colors.dart'; import '../../../core/theme/colors.dart';
import '../../../core/utils/app_toast.dart';
import '../../../core/utils/size_config.dart'; import '../../../core/utils/size_config.dart';
import '../../shared/tablet_navigation_widget.dart'; import '../../shared/tablet_navigation_widget.dart';
import '../../shared/tender_app_bar.dart'; import '../../shared/tender_app_bar.dart';
@@ -32,12 +33,7 @@ class _TabletProfilePageState extends State<TabletProfilePage> {
void _profileListener() { void _profileListener() {
if (viewModel.errorMessage != null) { if (viewModel.errorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.error(context, viewModel.errorMessage!);
SnackBar(
content: Text(viewModel.errorMessage!),
backgroundColor: AppColors.red,
),
);
} }
if (viewModel.loggedOut) { if (viewModel.loggedOut) {
Router.neglect(context, () => LoginScreenRoute().go(context)); Router.neglect(context, () => LoginScreenRoute().go(context));
+3 -12
View File
@@ -7,6 +7,7 @@ import 'package:tm_app/views/shared/desktop_navigation_widget.dart';
import 'package:tm_app/views/tenders/widgets/main_tenders_slider.dart'; import 'package:tm_app/views/tenders/widgets/main_tenders_slider.dart';
import '../../../core/constants/common_strings.dart'; import '../../../core/constants/common_strings.dart';
import '../../../core/utils/app_toast.dart';
class DesktopTendersPage extends StatefulWidget { class DesktopTendersPage extends StatefulWidget {
const DesktopTendersPage({super.key}); const DesktopTendersPage({super.key});
@@ -26,20 +27,10 @@ class _DesktopTendersPageState extends State<DesktopTendersPage> {
void _viewModelListener() { void _viewModelListener() {
if (viewModel.feedbackErrorMessage != null) { if (viewModel.feedbackErrorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.error(context, viewModel.feedbackErrorMessage!);
SnackBar(
backgroundColor: AppColors.error,
content: Text(viewModel.feedbackErrorMessage!),
),
);
} }
if (viewModel.tenderApprovalErrorMessage != null) { if (viewModel.tenderApprovalErrorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.error(context, viewModel.tenderApprovalErrorMessage!);
SnackBar(
backgroundColor: AppColors.error,
content: Text(viewModel.tenderApprovalErrorMessage!),
),
);
} }
} }
+3 -12
View File
@@ -5,6 +5,7 @@ import 'package:tm_app/view_models/tenders_view_model.dart';
import '../../../core/constants/common_strings.dart'; import '../../../core/constants/common_strings.dart';
import '../../../core/theme/colors.dart'; import '../../../core/theme/colors.dart';
import '../../../core/utils/app_toast.dart';
import '../../shared/tender_app_bar.dart'; import '../../shared/tender_app_bar.dart';
import '../strings/tenders_strings.dart'; import '../strings/tenders_strings.dart';
import '../widgets/main_tenders_slider.dart'; import '../widgets/main_tenders_slider.dart';
@@ -27,20 +28,10 @@ class _MobileTendersPageState extends State<MobileTendersPage> {
void _viewModelListener() { void _viewModelListener() {
if (viewModel.feedbackErrorMessage != null) { if (viewModel.feedbackErrorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.error(context, viewModel.feedbackErrorMessage!);
SnackBar(
backgroundColor: AppColors.error,
content: Text(viewModel.feedbackErrorMessage!),
),
);
} }
if (viewModel.tenderApprovalErrorMessage != null) { if (viewModel.tenderApprovalErrorMessage != null) {
ScaffoldMessenger.of(context).showSnackBar( AppToast.error(context, viewModel.tenderApprovalErrorMessage!);
SnackBar(
backgroundColor: AppColors.error,
content: Text(viewModel.tenderApprovalErrorMessage!),
),
);
} }
} }
+4 -1
View File
@@ -1,5 +1,6 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<!-- <!--
If you are serving your web app in a path other than the root, change the If you are serving your web app in a path other than the root, change the
@@ -29,10 +30,12 @@
<!-- Favicon --> <!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png" /> <link rel="icon" type="image/png" href="favicon.png" />
<title>tm_app</title> <title>OppLens</title>
<link rel="manifest" href="manifest.json"> <link rel="manifest" href="manifest.json">
</head> </head>
<body> <body>
<script src="flutter_bootstrap.js" async></script> <script src="flutter_bootstrap.js" async></script>
</body> </body>
</html> </html>