fixed jira tm-172 and pagination dialog design changed

This commit is contained in:
amirrezaghabeli
2025-10-02 10:10:13 +03:30
parent 720682105d
commit 5f1b939d95
14 changed files with 148 additions and 46 deletions
@@ -84,6 +84,7 @@ class _TenderDetailTabletPageState extends State<TenderDetailTabletPage> {
appBar: tabletAppBar(
title: TenderDetailsStrings.tenderDetailTitle,
key: key,
context: context,
),
drawer: const TabletNavigationWidget(
+1 -1
View File
@@ -22,7 +22,7 @@ class TabletHomePage extends StatelessWidget {
return Scaffold(
key: key,
appBar: tabletAppBar(title: HomeStrings.home, key: key),
appBar: tabletAppBar(title: HomeStrings.home, key: key, context: context),
drawer: const TabletNavigationWidget(
currentIndex: 0, // Home is index 0
@@ -154,7 +154,11 @@ class _LikedTendersDesktopPageState extends State<LikedTendersDesktopPage> {
onTap: () async {
final selectedPage = await showDialog<int>(
context: context,
builder: (context) => PageSelectionDialog(totalPages: totalPages),
builder:
(context) => PageSelectionDialog(
totalPages: totalPages,
currentPage: currentPage,
),
);
if (selectedPage != null) {
@@ -61,7 +61,11 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
child: Scaffold(
key: key,
backgroundColor: AppColors.backgroundColor,
appBar: tabletAppBar(title: LikedTendersStrings.likedTenders, key: key),
appBar: tabletAppBar(
title: LikedTendersStrings.likedTenders,
key: key,
context: context,
),
drawer: const TabletNavigationWidget(currentIndex: 1),
body: SafeArea(
child: Center(
@@ -115,7 +119,8 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
}
final currentPage = viewModel.currentPage;
final totalPages = viewModel.data?.data?.meta?.pages ?? 1;
final totalPages =
viewModel.data?.data?.meta?.pages ?? 1;
return Column(
children: [
@@ -168,7 +173,11 @@ class _LikedTendersTabletPageState extends State<LikedTendersTabletPage> {
onTap: () async {
final selectedPage = await showDialog<int>(
context: context,
builder: (context) => PageSelectionDialog(totalPages: totalPages),
builder:
(context) => PageSelectionDialog(
totalPages: totalPages,
currentPage: currentPage,
),
);
if (selectedPage != null) {
@@ -153,6 +153,7 @@ class _DesktopNotificationPageState extends State<DesktopNotificationPage>
builder:
(context) => PageSelectionDialog(
totalPages: totalPages,
currentPage: currentPage,
),
);
@@ -68,6 +68,7 @@ class _TabletNotificationPageState extends State<TabletNotificationPage>
appBar: tabletAppBar(
title: NotificationStrings.notificationTitle,
key: key,
context: context,
),
drawer: const TabletNavigationWidget(currentIndex: 3),
body: Center(
@@ -151,8 +152,10 @@ class _TabletNotificationPageState extends State<TabletNotificationPage>
final selectedPage = await showDialog<int>(
context: context,
builder:
(context) =>
PageSelectionDialog(totalPages: totalPages),
(context) => PageSelectionDialog(
totalPages: totalPages,
currentPage: currentPage,
),
);
if (selectedPage != null) {
@@ -7,7 +7,7 @@ class NotificationStrings {
static const String important = 'Important';
static const String markAllAsReadButton = 'Mark all as read';
static const String page = 'page';
static const String selectPage = 'selectPage';
static const String selectPage = 'Select Page';
static const String currentPage = 'currentPage';
static const String of = 'of';
static const String totalPages = 'totalPages';
+5 -1
View File
@@ -67,7 +67,11 @@ class _TabletProfilePageState extends State<TabletProfilePage> {
return Scaffold(
key: key,
backgroundColor: AppColors.backgroundColor,
appBar: tabletAppBar(title: ProfileStrings.profileTitle, key: key),
appBar: tabletAppBar(
title: ProfileStrings.profileTitle,
key: key,
context: context,
),
drawer: const TabletNavigationWidget(currentIndex: 4),
body: SafeArea(
@@ -75,9 +75,10 @@ class DesktopNavigationWidget extends StatelessWidget {
text: TendersStrings.tendersTitle,
isActive: currentIndex == 1,
onTap: () {
if (currentIndex == 1) {
return;
} else {
// if (currentIndex == 1) {
// return;
// } else
{
Router.neglect(
context,
() => const TendersRouteData().go(context),
+59 -6
View File
@@ -1,29 +1,82 @@
import 'package:flutter/material.dart';
import 'package:go_router/go_router.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/views/notification/strings/notification_strings.dart';
class PageSelectionDialog extends StatelessWidget {
class PageSelectionDialog extends StatefulWidget {
final int totalPages;
final int currentPage;
const PageSelectionDialog({
required this.totalPages, super.key,
required this.totalPages,
required this.currentPage,
super.key,
});
@override
State<PageSelectionDialog> createState() => _PageSelectionDialogState();
}
class _PageSelectionDialogState extends State<PageSelectionDialog> {
late int selectedPage;
@override
void initState() {
super.initState();
selectedPage = widget.currentPage;
}
@override
Widget build(BuildContext context) {
return AlertDialog(
backgroundColor: AppColors.backgroundColor,
title: const Text(NotificationStrings.selectPage),
insetPadding: EdgeInsets.symmetric(
horizontal: 16.0.w(),
vertical: 16.0.h(),
),
title: Text(
'${NotificationStrings.selectPage} (Current: ${widget.currentPage})',
style: TextStyle(
fontSize: 16.0.sp(),
fontWeight: FontWeight.w500,
color: AppColors.grey80,
),
),
content: SizedBox(
width: 200,
height: 300,
child: ListView.builder(
itemCount: totalPages,
itemCount: widget.totalPages,
itemBuilder: (context, index) {
final pageNumber = index + 1;
return ListTile(
title: Text('$pageNumber'),
onTap: () => Navigator.pop(context, pageNumber),
leading: Radio<int>(
value: pageNumber,
groupValue: selectedPage,
activeColor: AppColors.mainBlue,
onChanged: (value) {
setState(() {
selectedPage = value!;
});
context.pop(value);
},
),
title: Text(
'$pageNumber',
style: TextStyle(
fontSize: 16.0.sp(),
fontWeight: FontWeight.w500,
color: AppColors.grey80,
),
),
onTap: () {
setState(() {
selectedPage = pageNumber;
});
context.pop(pageNumber);
},
);
},
),
+15
View File
@@ -1,9 +1,13 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:provider/provider.dart';
import 'package:tm_app/core/constants/assets.dart';
import 'package:tm_app/core/theme/colors.dart';
import 'package:tm_app/core/utils/size_config.dart';
import '../../core/routes/app_routes.dart';
import '../../view_models/home_view_model.dart';
PreferredSizeWidget tenderMobileAppBar({required String title}) {
return PreferredSize(
preferredSize: const Size.fromHeight(56),
@@ -65,6 +69,7 @@ PreferredSizeWidget appBar({
PreferredSizeWidget tabletAppBar({
required String title,
required GlobalKey<ScaffoldState> key,
required BuildContext context,
}) {
return PreferredSize(
preferredSize: const Size.fromHeight(64),
@@ -75,8 +80,18 @@ PreferredSizeWidget tabletAppBar({
titleSpacing: 0,
leading: Padding(
padding: EdgeInsetsDirectional.only(start: 24.0.w()),
child: InkWell(
splashColor: Colors.transparent,
highlightColor: AppColors.green0,
borderRadius: BorderRadius.circular(50),
onTap: () {
Router.neglect(context, () => const HomeRouteData().go(context));
context.read<HomeViewModel>().init();
},
child: SvgPicture.asset(AssetsManager.logoSmall),
),
),
actions: [
IconButton(
icon: Padding(
+4 -1
View File
@@ -282,7 +282,10 @@ class _DesktopPagination extends StatelessWidget {
final selectedPage = await showDialog<int>(
context: context,
builder:
(context) => PageSelectionDialog(totalPages: totalPages),
(context) => PageSelectionDialog(
totalPages: totalPages,
currentPage: currentPage,
),
);
if (selectedPage != null) {
onPageSelected(selectedPage);
+5 -1
View File
@@ -32,7 +32,11 @@ class _TabletTendersPageState extends State<TabletTendersPage> {
return Scaffold(
key: key,
backgroundColor: AppColors.backgroundColor,
appBar: tabletAppBar(title: TendersStrings.tendersTitle, key: key),
appBar: tabletAppBar(
title: TendersStrings.tendersTitle,
key: key,
context: context,
),
drawer: const TabletNavigationWidget(currentIndex: 1),
body: Consumer<TendersViewModel>(
builder: (context, viewModel, child) {
@@ -42,7 +42,11 @@ class _YourTendersTabletPageState extends State<YourTendersTabletPage>
return Scaffold(
key: key,
backgroundColor: AppColors.backgroundColor,
appBar: tabletAppBar(title: YourTendersStrings.yourTenders, key: key),
appBar: tabletAppBar(
title: YourTendersStrings.yourTenders,
key: key,
context: context,
),
drawer: const TabletNavigationWidget(currentIndex: 1),
body: SafeArea(
child: Center(