Fixed size on web and changed details design button in desktop and tablet

This commit is contained in:
llsajjad
2025-08-09 16:55:29 +03:30
parent 080125b851
commit e468ec9c43
11 changed files with 225 additions and 185 deletions
@@ -13,6 +13,8 @@ class TenderDetailDesktopPage extends StatelessWidget {
@override
Widget build(BuildContext context) {
SizeConfig.init(context);
return Scaffold(
backgroundColor: AppColors.backgroundColor,
appBar: _buildAppBar(context),
@@ -25,11 +27,11 @@ class TenderDetailDesktopPage extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TenderDetailHeader(isBig: true),
TenderDetailHeader(isScreenBig: true),
SizedBox(height: 24.0.h()),
const TenderDetailCard(),
SizedBox(height: 24.0.h()),
TenderDetailActions(),
TenderDetailActions(isScreenBig: true),
],
),
),
@@ -22,11 +22,11 @@ class TenderDetailMobilePage extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TenderDetailHeader(isBig: false),
TenderDetailHeader(isScreenBig: false),
SizedBox(height: 24.0.h()),
const TenderDetailCard(),
SizedBox(height: 24.0.h()),
TenderDetailActions(),
TenderDetailActions(isScreenBig: false,),
],
),
),
@@ -25,11 +25,11 @@ class TenderDetailTabletPage extends StatelessWidget {
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
TenderDetailHeader(isBig: true),
TenderDetailHeader(isScreenBig: true),
SizedBox(height: 24.0.h()),
const TenderDetailCard(),
SizedBox(height: 24.0.h()),
TenderDetailActions(),
TenderDetailActions(isScreenBig: true,),
],
),
),
+12 -4
View File
@@ -8,15 +8,22 @@ class DeadlineItem extends StatelessWidget {
final String approvalDate;
final String submissionText;
final String submissionDate;
final bool isBig;
final bool isScreenBig;
const DeadlineItem({
required this.title, required this.approvalText, required this.approvalDate, required this.submissionText, required this.submissionDate, required this.isBig, super.key,
required this.title,
required this.approvalText,
required this.approvalDate,
required this.submissionText,
required this.submissionDate,
required this.isScreenBig,
super.key,
});
@override
Widget build(BuildContext context) {
return isBig ? Padding(
return isScreenBig
? Padding(
padding: EdgeInsets.symmetric(vertical: 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -95,7 +102,8 @@ class DeadlineItem extends StatelessWidget {
const Divider(),
],
),
) : Padding(
)
: Padding(
padding: EdgeInsets.symmetric(vertical: 0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
@@ -5,11 +5,36 @@ import 'package:tm_app/core/utils/size_config.dart';
import 'package:tm_app/views/login/widgets/login_button.dart';
class TenderDetailActions extends StatelessWidget {
const TenderDetailActions({super.key});
final bool isScreenBig;
const TenderDetailActions({required this.isScreenBig, super.key});
@override
Widget build(BuildContext context) {
return Column(
return isScreenBig
? Row(
children: [
Spacer(),
BaseButton(
isEnabled: true,
text: AppStrings.tenderRejectButton,
textColor: AppColors.red10,
backgroundColor: AppColors.backgroundColor,
borderWidth: 1,
onPressed: () {},
width: 120.0.w(),
),
SizedBox(width: 5.0.w()),
BaseButton(
isEnabled: true,
text: AppStrings.tenderSubmitButton,
backgroundColor: AppColors.lightBlue,
textColor: AppColors.mainBlue,
onPressed: () {},
width: 120.0.w(),
),
],
)
: Column(
children: [
BaseButton(
isEnabled: true,
@@ -8,8 +8,8 @@ import 'package:tm_app/views/detail/widgets/tender_document_section.dart';
import 'package:tm_app/views/detail/widgets/tender_location_section.dart';
class TenderDetailHeader extends StatelessWidget {
final bool isBig;
const TenderDetailHeader({required this.isBig, super.key});
final bool isScreenBig;
const TenderDetailHeader({required this.isScreenBig, super.key});
@override
Widget build(BuildContext context) {
@@ -29,7 +29,7 @@ class TenderDetailHeader extends StatelessWidget {
SizedBox(height: 10.0.h()),
const Divider(),
SizedBox(height: 5.0.h()),
TenderDetailInfoSection(isBig: isBig,),
TenderDetailInfoSection(isScreenBig: isScreenBig),
TenderLocationSection(),
SizedBox(height: 16.0.h()),
TenderDocumentSection(),
@@ -4,9 +4,9 @@ import 'package:tm_app/views/detail/widgets/deadline_item.dart';
import 'package:tm_app/views/detail/widgets/info_item.dart';
class TenderDetailInfoSection extends StatelessWidget {
final bool isBig;
final bool isScreenBig;
const TenderDetailInfoSection({required this.isBig ,super.key});
const TenderDetailInfoSection({required this.isScreenBig, super.key});
@override
Widget build(BuildContext context) {
@@ -22,7 +22,8 @@ class TenderDetailInfoSection extends StatelessWidget {
approvalText: AppStrings.tenderApprovalText,
approvalDate: AppStrings.tenderApprovalDateExample,
submissionText: AppStrings.tenderSubmissionText,
submissionDate: AppStrings.tenderSubmissionDateExample, isBig: isBig,
submissionDate: AppStrings.tenderSubmissionDateExample,
isScreenBig: isScreenBig,
),
InfoItem(
title: AppStrings.tenderClientLabel,
@@ -6,8 +6,8 @@ import 'package:tm_app/core/theme/colors.dart';
import '../../../core/constants/assets.dart';
import '../../../core/constants/strings.dart';
import '../../../core/utils/size_config.dart';
import '../widgets/widgets.dart';
import '../../../view_models/login_view_model.dart';
import '../widgets/widgets.dart';
class LoginDesktopPage extends StatefulWidget {
const LoginDesktopPage({super.key});
@@ -40,7 +40,7 @@ class _LoginDesktopPageState extends State<LoginDesktopPage> {
child: SingleChildScrollView(
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
child: SizedBox(
width: 120.0.w(),
width: 526,
child: ListenableBuilder(
listenable: _viewModel,
builder: (context, _) {
@@ -79,7 +79,8 @@ class _LoginDesktopPageState extends State<LoginDesktopPage> {
BaseButton(
isEnabled: _viewModel.isLoginEnabled,
onPressed: _viewModel.isLoginEnabled
onPressed:
_viewModel.isLoginEnabled
? () => HomeRouteData().go(context)
: null,
),
+5 -4
View File
@@ -6,8 +6,8 @@ import 'package:tm_app/core/theme/colors.dart';
import '../../../core/constants/assets.dart';
import '../../../core/constants/strings.dart';
import '../../../core/utils/size_config.dart';
import '../widgets/widgets.dart';
import '../../../view_models/login_view_model.dart';
import '../widgets/widgets.dart';
class LoginTabletPage extends StatefulWidget {
const LoginTabletPage({super.key});
@@ -35,12 +35,12 @@ class _LoginTabletPageState extends State<LoginTabletPage> {
Widget build(BuildContext context) {
SizeConfig.init(context);
return Scaffold(
backgroundColor:AppColors.backgroundColor,
backgroundColor: AppColors.backgroundColor,
body: Center(
child: SingleChildScrollView(
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
child: SizedBox(
width: 120.0.w(),
width: 526,
child: ListenableBuilder(
listenable: _viewModel,
builder: (context, _) {
@@ -79,7 +79,8 @@ class _LoginTabletPageState extends State<LoginTabletPage> {
BaseButton(
isEnabled: _viewModel.isLoginEnabled,
onPressed: _viewModel.isLoginEnabled
onPressed:
_viewModel.isLoginEnabled
? () => HomeRouteData().go(context)
: null,
),
+3 -1
View File
@@ -14,6 +14,7 @@ class BaseButton extends StatelessWidget {
final double? borderWidth;
final double? borderRadius;
final double? elevation;
final double? width;
const BaseButton({
required this.isEnabled,
@@ -25,13 +26,14 @@ class BaseButton extends StatelessWidget {
this.borderWidth,
this.borderRadius,
this.elevation,
this.width,
super.key,
});
@override
Widget build(BuildContext context) {
return SizedBox(
width: double.infinity,
width: width ?? double.infinity,
height: 55.0.h(),
child: ElevatedButton(
onPressed: isEnabled ? onPressed : null,