✨implement light and dark theme
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/flutter_svg.dart';
|
||||
import 'package:tm_app/core/constants/assets.dart';
|
||||
import 'package:tm_app/core/constants/colors.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
import 'package:tm_app/core/utils/size_config.dart';
|
||||
import 'package:tm_app/views/login/widgets/login_button.dart';
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:tm_app/core/routes/app_routes.dart';
|
||||
|
||||
import '../../../core/constants/strings.dart';
|
||||
import '../../core/constants/colors.dart';
|
||||
import '../../core/theme/colors.dart';
|
||||
import '../../core/utils/size_config.dart';
|
||||
import 'widgets.dart';
|
||||
|
||||
@@ -14,7 +14,7 @@ class HomeScreen extends StatelessWidget {
|
||||
SizeConfig.init(context);
|
||||
return SafeArea(
|
||||
child: Scaffold(
|
||||
backgroundColor: Colors.white,
|
||||
backgroundColor: AppColors.backgroundColor,
|
||||
body: _body(context),
|
||||
appBar: _appbar(),
|
||||
),
|
||||
@@ -68,7 +68,7 @@ class HomeScreen extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Color(0xFF222222),
|
||||
color: AppColors.grey70,
|
||||
),
|
||||
),
|
||||
Image.asset(
|
||||
@@ -111,7 +111,7 @@ class HomeScreen extends StatelessWidget {
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
StatisticsCard(
|
||||
backgroundColor: Color(0xFFE5EFFF),
|
||||
backgroundColor: AppColors.primary20,
|
||||
iconPath: 'assets/icons/arrows.svg',
|
||||
title: AppStrings.tenderSubmitting,
|
||||
amount: '12',
|
||||
@@ -168,7 +168,7 @@ class HomeScreen extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 20.0.sp(),
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF777777),
|
||||
color: AppColors.grey60,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
|
||||
import '../../core/utils/size_config.dart';
|
||||
|
||||
class ProgressBarColumn extends StatefulWidget {
|
||||
const ProgressBarColumn({
|
||||
super.key,
|
||||
required this.text,
|
||||
required this.value,
|
||||
required this.amount,
|
||||
super.key,
|
||||
});
|
||||
|
||||
final String text;
|
||||
@@ -74,7 +75,7 @@ class _ProgressBarColumnState extends State<ProgressBarColumn>
|
||||
backgroundColor: Color(0xFFE1E1E1),
|
||||
strokeCap: StrokeCap.round,
|
||||
strokeWidth: 8.0,
|
||||
valueColor: AlwaysStoppedAnimation<Color>(Color(0xFF34BCCB)),
|
||||
valueColor: AlwaysStoppedAnimation<Color>(AppColors.jellyBean),
|
||||
value: _animation.value,
|
||||
),
|
||||
),
|
||||
@@ -85,7 +86,11 @@ class _ProgressBarColumnState extends State<ProgressBarColumn>
|
||||
return Center(
|
||||
child: Text(
|
||||
widget.amount,
|
||||
style: TextStyle(fontSize: 24.0.sp(), fontWeight: FontWeight.bold),
|
||||
style: TextStyle(
|
||||
fontSize: 24.0.sp(),
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColors.titleColor,
|
||||
),
|
||||
textAlign: TextAlign.center,
|
||||
),
|
||||
);
|
||||
@@ -97,7 +102,7 @@ class _ProgressBarColumnState extends State<ProgressBarColumn>
|
||||
style: TextStyle(
|
||||
fontSize: 16.0.sp(),
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Color(0xFF222222),
|
||||
color: AppColors.titleColor,
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
|
||||
import '../../core/theme/colors.dart';
|
||||
import '../../core/utils/size_config.dart';
|
||||
|
||||
class TendersListItem extends StatelessWidget {
|
||||
@@ -8,7 +9,12 @@ class TendersListItem extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return SizedBox(
|
||||
return Container(
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.cardBackground,
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
),
|
||||
margin: EdgeInsetsDirectional.only(end: 16.0.w()),
|
||||
width: 327.0.w(),
|
||||
height: 309.0.h(),
|
||||
child: Padding(
|
||||
@@ -23,14 +29,14 @@ class TendersListItem extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 12.0.sp(),
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF777777),
|
||||
color: AppColors.grey60,
|
||||
),
|
||||
),
|
||||
Container(
|
||||
width: 91.0.w(),
|
||||
height: 24.0.h(),
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFDAF8D6),
|
||||
color: AppColors.green20,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
alignment: Alignment.center,
|
||||
@@ -39,7 +45,7 @@ class TendersListItem extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 12.0.sp(),
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF289744),
|
||||
color: AppColors.green30,
|
||||
),
|
||||
),
|
||||
),
|
||||
@@ -51,7 +57,7 @@ class TendersListItem extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 16.0.sp(),
|
||||
fontWeight: FontWeight.w600,
|
||||
color: Color(0xFF222222),
|
||||
color: AppColors.grey80,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 8.0.h()),
|
||||
@@ -60,7 +66,7 @@ class TendersListItem extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 14.0.sp(),
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF222222),
|
||||
color: AppColors.grey70,
|
||||
),
|
||||
),
|
||||
SizedBox(height: 24.0.h()),
|
||||
@@ -73,7 +79,7 @@ class TendersListItem extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 12.0.sp(),
|
||||
fontWeight: FontWeight.w400,
|
||||
color: Color(0xFF777777),
|
||||
color: AppColors.grey80,
|
||||
),
|
||||
),
|
||||
SizedBox(width: 8.0.w()),
|
||||
@@ -87,9 +93,8 @@ class TendersListItem extends StatelessWidget {
|
||||
width: 96.0.w(),
|
||||
height: 24.0.h(),
|
||||
decoration: BoxDecoration(
|
||||
color: Color(0xFFE4E4E4),
|
||||
color: AppColors.grey30,
|
||||
borderRadius: BorderRadius.circular(88),
|
||||
border: Border.all(color: Color(0xFFDADADA)),
|
||||
),
|
||||
alignment: Alignment.center,
|
||||
child: Text(
|
||||
@@ -97,7 +102,7 @@ class TendersListItem extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 12.0.sp(),
|
||||
fontWeight: FontWeight.w500,
|
||||
color: Color(0xFF777777),
|
||||
color: AppColors.grey60,
|
||||
),
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import '../../../core/constants/colors.dart';
|
||||
|
||||
import '../../../core/constants/strings.dart';
|
||||
import '../../../core/theme/colors.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
|
||||
class BaseButton extends StatelessWidget {
|
||||
@@ -35,7 +36,8 @@ class BaseButton extends StatelessWidget {
|
||||
child: ElevatedButton(
|
||||
onPressed: isEnabled ? onPressed : null,
|
||||
style: ElevatedButton.styleFrom(
|
||||
backgroundColor: backgroundColor ??
|
||||
backgroundColor:
|
||||
backgroundColor ??
|
||||
(isEnabled ? AppColors.mainBlue : Colors.grey[300]),
|
||||
foregroundColor: textColor ?? Colors.white,
|
||||
elevation: elevation ?? 0,
|
||||
@@ -58,4 +60,4 @@ class BaseButton extends StatelessWidget {
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
import '../../../core/constants/colors.dart';
|
||||
import '../../../core/theme/colors.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
|
||||
class LoginTextField extends StatelessWidget {
|
||||
@@ -15,11 +15,11 @@ class LoginTextField extends StatelessWidget {
|
||||
final VoidCallback? onToggleVisibility;
|
||||
|
||||
const LoginTextField({
|
||||
super.key,
|
||||
required this.controller,
|
||||
required this.focusNode,
|
||||
required this.label,
|
||||
required this.iconPath,
|
||||
super.key,
|
||||
this.isPassword = false,
|
||||
this.obscureText = false,
|
||||
this.onToggleVisibility,
|
||||
|
||||
@@ -2,7 +2,8 @@ import 'package:flutter/material.dart';
|
||||
import 'package:tm_app/core/constants/strings.dart';
|
||||
import 'package:tm_app/core/utils/size_config.dart';
|
||||
|
||||
import '../../core/constants/colors.dart';
|
||||
import '../../core/theme/colors.dart';
|
||||
import '../../widgets/theme_toggle.dart';
|
||||
|
||||
class ProfileScreen extends StatelessWidget {
|
||||
const ProfileScreen({super.key});
|
||||
@@ -27,7 +28,7 @@ class ProfileScreen extends StatelessWidget {
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: Color(0xFF222222),
|
||||
color: AppColors.primaryTextColor,
|
||||
),
|
||||
),
|
||||
Image.asset(
|
||||
@@ -65,6 +66,20 @@ class ProfileScreen extends StatelessWidget {
|
||||
description: 'Telecommunications',
|
||||
),
|
||||
TitleDescription(title: 'Founded', description: '2010'),
|
||||
SizedBox(height: 24.0.h()),
|
||||
// Theme Toggle
|
||||
Container(
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 16.0.w(),
|
||||
vertical: 12.0.h(),
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.surfaceColor,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
border: Border.all(color: AppColors.borderColor),
|
||||
),
|
||||
child: const ThemeToggle(),
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../core/constants/colors.dart';
|
||||
import '../../core/theme/colors.dart';
|
||||
import '../../core/utils/size_config.dart';
|
||||
|
||||
class MainTabBar extends StatefulWidget {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../core/constants/colors.dart';
|
||||
import '../../core/theme/colors.dart';
|
||||
import '../../core/utils/size_config.dart';
|
||||
|
||||
class TabItem extends StatelessWidget {
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tm_app/core/constants/strings.dart';
|
||||
|
||||
import '../../core/constants/colors.dart';
|
||||
import '../../core/theme/colors.dart';
|
||||
import '../../core/utils/size_config.dart';
|
||||
import 'widgets/main_tenders_slider.dart';
|
||||
import 'widgets/widgets.dart';
|
||||
|
||||
class TendersScreen extends StatefulWidget {
|
||||
const TendersScreen({super.key});
|
||||
@@ -34,18 +34,16 @@ class _TendersScreenState extends State<TendersScreen>
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
backgroundColor: AppColors.backgroundColor,
|
||||
body: SafeArea(
|
||||
child: SingleChildScrollView(
|
||||
return SafeArea(
|
||||
child: Scaffold(
|
||||
backgroundColor: AppColors.backgroundColor,
|
||||
appBar: _appbar(),
|
||||
body: SingleChildScrollView(
|
||||
child: Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 24.0.h()),
|
||||
child: Column(
|
||||
children: [
|
||||
TenderAppBar(),
|
||||
SizedBox(height: 24.0.h()),
|
||||
// MainTabBar(controller: controller),
|
||||
SizedBox(height: 24.0.h()),
|
||||
MainTendersSlider(),
|
||||
],
|
||||
),
|
||||
@@ -54,4 +52,35 @@ class _TendersScreenState extends State<TendersScreen>
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
PreferredSize _appbar() {
|
||||
return PreferredSize(
|
||||
preferredSize: Size.fromHeight(56.0.h()),
|
||||
child: Container(
|
||||
color: AppColors.backgroundColor,
|
||||
padding: EdgeInsets.symmetric(horizontal: 24.0.w()),
|
||||
height: 56.0.h(),
|
||||
width: double.infinity,
|
||||
child: Row(
|
||||
mainAxisAlignment: MainAxisAlignment.spaceBetween,
|
||||
children: [
|
||||
Text(
|
||||
AppStrings.tendersTitle,
|
||||
style: TextStyle(
|
||||
fontSize: 20,
|
||||
fontWeight: FontWeight.bold,
|
||||
color: AppColors.grey70,
|
||||
),
|
||||
),
|
||||
Image.asset(
|
||||
'assets/icons/tenderLogo.png',
|
||||
width: 59.0.w(),
|
||||
height: 28.0.h(),
|
||||
fit: BoxFit.cover,
|
||||
),
|
||||
],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
import 'package:tm_app/core/constants/colors.dart';
|
||||
import 'package:tm_app/core/routes/app_routes.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
@@ -86,7 +86,7 @@ class _MainTendersSliderState extends State<MainTendersSlider> {
|
||||
children: [
|
||||
SizedBox(
|
||||
width: double.infinity,
|
||||
height: 693.0.h(),
|
||||
height: 694.0.h(),
|
||||
child: PageView.builder(
|
||||
controller: pageController,
|
||||
scrollDirection: Axis.horizontal,
|
||||
|
||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
import '../../../core/constants/colors.dart';
|
||||
import '../../../core/theme/colors.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
|
||||
class TenderActionButtons extends StatelessWidget {
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
import '../../../core/constants/colors.dart';
|
||||
import '../../../core/constants/strings.dart';
|
||||
import '../../../core/theme/colors.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
|
||||
class TenderAppBar extends StatelessWidget {
|
||||
|
||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
import '../../../core/constants/colors.dart';
|
||||
import '../../../core/theme/colors.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
import 'tender_action_buttons.dart';
|
||||
|
||||
@@ -50,7 +50,7 @@ class TenderCard extends StatelessWidget {
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.grey0,
|
||||
borderRadius: BorderRadius.circular(12),
|
||||
border: Border.all(color: AppColors.borderColor),
|
||||
border: Border.all(color: AppColors.grey30),
|
||||
),
|
||||
child: Column(
|
||||
children: [
|
||||
@@ -75,10 +75,7 @@ class TenderCard extends StatelessWidget {
|
||||
Container(
|
||||
width: double.infinity,
|
||||
height: 24.0.h(),
|
||||
padding: EdgeInsets.symmetric(
|
||||
horizontal: 8.0.w(),
|
||||
vertical: 4.0.h(),
|
||||
),
|
||||
padding: EdgeInsets.symmetric(horizontal: 8.0.w()),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.primary2,
|
||||
borderRadius: BorderRadius.circular(4),
|
||||
@@ -89,7 +86,7 @@ class TenderCard extends StatelessWidget {
|
||||
Text(
|
||||
'Deadline:',
|
||||
style: TextStyle(
|
||||
color: AppColors.mainBlue,
|
||||
color: AppColors.textBlue,
|
||||
fontSize: 14.0.sp(),
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
@@ -134,7 +131,7 @@ class TenderCard extends StatelessWidget {
|
||||
Text(
|
||||
tenderId,
|
||||
style: TextStyle(
|
||||
color: AppColors.grey60,
|
||||
color: AppColors.grey,
|
||||
fontSize: 14.0.sp(),
|
||||
fontWeight: FontWeight.w400,
|
||||
),
|
||||
@@ -155,7 +152,7 @@ class TenderCard extends StatelessWidget {
|
||||
Text(
|
||||
'Match with your profile',
|
||||
style: TextStyle(
|
||||
color: AppColors.primaryTextColor,
|
||||
color: AppColors.grey80,
|
||||
fontSize: 14.0.sp(),
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
@@ -163,7 +160,7 @@ class TenderCard extends StatelessWidget {
|
||||
Text(
|
||||
'${matchPercentage.toInt()}%',
|
||||
style: TextStyle(
|
||||
color: const Color(0xFF2484A8),
|
||||
color: AppColors.secondaryTextColor,
|
||||
fontSize: 16.0.sp(),
|
||||
fontWeight: FontWeight.w600,
|
||||
),
|
||||
@@ -177,7 +174,7 @@ class TenderCard extends StatelessWidget {
|
||||
width: double.infinity,
|
||||
height: 4.0.h(),
|
||||
decoration: BoxDecoration(
|
||||
color: AppColors.grey10,
|
||||
color: AppColors.grey20,
|
||||
borderRadius: BorderRadius.circular(2),
|
||||
),
|
||||
child: FractionallySizedBox(
|
||||
@@ -185,7 +182,7 @@ class TenderCard extends StatelessWidget {
|
||||
widthFactor: matchPercentage / 100,
|
||||
child: Container(
|
||||
decoration: BoxDecoration(
|
||||
color: const Color(0xFF34BC9B),
|
||||
color: AppColors.secondary50,
|
||||
borderRadius: BorderRadius.circular(2),
|
||||
),
|
||||
),
|
||||
@@ -205,7 +202,7 @@ class TenderCard extends StatelessWidget {
|
||||
Text(
|
||||
location,
|
||||
style: TextStyle(
|
||||
color: AppColors.primaryTextColor,
|
||||
color: AppColors.grey80,
|
||||
fontSize: 14.0.sp(),
|
||||
fontWeight: FontWeight.w500,
|
||||
),
|
||||
|
||||
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart';
|
||||
import 'package:flutter_svg/svg.dart';
|
||||
|
||||
import '../../../core/constants/assets.dart';
|
||||
import '../../../core/constants/colors.dart';
|
||||
import '../../../core/theme/colors.dart';
|
||||
import '../../../core/utils/size_config.dart';
|
||||
|
||||
class TenderCard extends StatelessWidget {
|
||||
@@ -74,7 +74,7 @@ class TenderCard extends StatelessWidget {
|
||||
vertical: 4.0.h(),
|
||||
),
|
||||
decoration: BoxDecoration(
|
||||
color: statusCardColor ?? AppColors.gren20,
|
||||
color: statusCardColor ?? AppColors.green20,
|
||||
borderRadius: BorderRadius.circular(8),
|
||||
),
|
||||
child: Row(
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tm_app/core/constants/assets.dart';
|
||||
import 'package:tm_app/core/constants/colors.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
import 'package:tm_app/core/utils/size_config.dart';
|
||||
import 'package:tm_app/views/your_tenders/model/tender_model.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/tender_card.dart';
|
||||
@@ -35,7 +35,7 @@ class TendersSubmitted extends StatelessWidget {
|
||||
? AssetsManager.tickCircle
|
||||
: AssetsManager.closeCircle,
|
||||
statusCardColor:
|
||||
tender.status == 'Won' ? AppColors.gren20 : AppColors.red0,
|
||||
tender.status == 'Won' ? AppColors.green20 : AppColors.red0,
|
||||
statusTextColor:
|
||||
tender.status == 'Won' ? AppColors.gren30 : AppColors.red10,
|
||||
);
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:tm_app/core/constants/colors.dart';
|
||||
import 'package:tm_app/core/constants/strings.dart';
|
||||
import 'package:tm_app/core/theme/colors.dart';
|
||||
import 'package:tm_app/core/utils/size_config.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/approved_tenders.dart';
|
||||
import 'package:tm_app/views/your_tenders/widgets/tenders_submitted.dart';
|
||||
|
||||
Reference in New Issue
Block a user