Back button UserGuide,and open project bux fix

This commit is contained in:
Kalonkarthik 2025-02-14 16:14:22 +05:30
parent dafc089ae9
commit 21c4525db3
26 changed files with 1082 additions and 1005 deletions

View File

@ -0,0 +1,3 @@
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M12.9999 4V8C6.42494 9.028 3.97994 14.788 2.99994 20C2.96294 20.206 8.38394 14.038 12.9999 14V18L20.9999 11L12.9999 4Z" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 313 B

View File

@ -2,8 +2,9 @@ import 'package:flutter/material.dart';
abstract class UaeNumbersAssetPath {
static const _basePath = 'assets/icons/uae_numbers';
static const bookmarksUae = '$_basePath/bookmarks.png';
static const bookmarksSelectedUae = '$_basePath/bookmarksSelectedUae.png';
static const shareUae = '$_basePath/share.png';
// static const bookmarksUae = '$_basePath/bookmarks.png';
// static const bookmarksSelectedUae = '$_basePath/bookmarksSelectedUae.png';
// static const shareUae = '$_basePath/share.png';
static const share = '$_basePath/share.svg';
static const filterUae = '$_basePath/filters.png';
}

View File

@ -288,7 +288,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
final encodedTitle = Uri.encodeComponent(title);
// Pass mainTopic and title as query parameters
context.go(
context.push(
'/chartScreen/$data_set?bgColor=$colorPattern&mainTopic=$encodedMainTopic&title=$encodedTitle');
// context.go('/chartScreen/$data_set');
},

View File

@ -14,7 +14,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import '../../../config/my_theme.dart';
class CreateNewPw extends StatefulWidget {
class CreateNewPw extends ConsumerStatefulWidget {
final String userId;
final String email;
final String? keyParam;
@ -22,10 +22,10 @@ class CreateNewPw extends StatefulWidget {
const CreateNewPw({Key? key, required this.userId, required this.email, required this.keyParam});
@override
State<CreateNewPw> createState() => _CreateNewPwState();
ConsumerState<CreateNewPw> createState() => _CreateNewPwState();
}
class _CreateNewPwState extends State<CreateNewPw> {
class _CreateNewPwState extends ConsumerState<CreateNewPw> {
final _pb = PocketBase('https://pb.venbait.in');
final _formKey = GlobalKey<FormState>();
bool _obscureOldPassword = true;
@ -188,9 +188,10 @@ class _CreateNewPwState extends State<CreateNewPw> {
}
@override
Widget build(BuildContext context) {
Widget build(BuildContext contextx) {
double screenHeight = MediaQuery.of(context).size.height;
double screenWidth = MediaQuery.of(context).size.width;
final passwordLocale = ref.watch(localeProvider);
return Scaffold(
backgroundColor: Colors.white,
@ -198,13 +199,14 @@ class _CreateNewPwState extends State<CreateNewPw> {
child: SafeArea(
child: _isPasswordUpdated
? _buildSuccessContent(screenHeight, screenWidth)
: _buildPasswordForm(screenHeight, screenWidth),
: _buildPasswordForm(ref,screenHeight, screenWidth),
),
),
);
}
Widget _buildPasswordForm(double screenHeight, double screenWidth) {
Widget _buildPasswordForm(WidgetRef ref ,double screenHeight, double screenWidth) {
final passwordLocale = ref.watch(localeProvider);
return Form(
key: _formKey,
child: Padding(
@ -231,7 +233,7 @@ class _CreateNewPwState extends State<CreateNewPw> {
child: Icon(
// Icons.close,
Icons.arrow_back_ios,
size: 28, // Icon size
size: 24, // Icon size
color: Colors.black, // Icon color
),
),
@ -259,7 +261,10 @@ class _CreateNewPwState extends State<CreateNewPw> {
// "Create New Password",
AppLocalizations.of(context)!.create_new_password,
style: TextStyle(
fontSize: 26,
fontSize: passwordLocale?.languageCode ==
'ar'
? 24
:26,
fontWeight: FontWeight.w300,
),
),
@ -269,12 +274,18 @@ class _CreateNewPwState extends State<CreateNewPw> {
TextSpan(
children: [
TextSpan(
text: 'Your New Password Must Be Different\n',
style: TextStyle(fontSize: 15,fontWeight: FontWeight.w700, color: Color(0xFF898C81)),
text: context.translate('Your New Password Must Be Different\n','يجب أن تكون كلمة المرور الجديدة مختلفة\n',),
style: TextStyle(fontSize: passwordLocale?.languageCode ==
'ar'
? 14
:15,fontWeight: FontWeight.w700, color: Color(0xFF898C81)),
),
TextSpan(
text: 'from Previously Used Password',
style: TextStyle(fontSize: 15, color: Color(0xFF898C81), fontWeight: FontWeight.w700),
text: context.translate('from Previously Used Password','عن كلمة المرور المستخدمة سابقًا'),
style: TextStyle(fontSize: passwordLocale?.languageCode ==
'ar'
? 14
:15, color: Color(0xFF898C81), fontWeight: FontWeight.w700),
),
],
),
@ -590,7 +601,10 @@ class _CreateNewPwState extends State<CreateNewPw> {
children: [
Text(
AppLocalizations.of(context)!.save,
style: TextStyle(fontSize: 18, color: Colors.white),
style: TextStyle(fontSize: passwordLocale?.languageCode ==
'ar'
? 14
:18, color: Colors.white),
),
SizedBox(width: 2),
Icon(

View File

@ -17,6 +17,7 @@ class PrivacyPolicy extends StatelessWidget {
),
child: Scaffold(
appBar: AppBar(
scrolledUnderElevation: 0,
title:Text(context.translate(
'Privacy Policy',
'الشروط والأحكام',

File diff suppressed because it is too large Load Diff

View File

@ -17,6 +17,7 @@ class TermsOfUse extends StatelessWidget {
),
child: Scaffold(
appBar: AppBar(
scrolledUnderElevation: 0,
title:Text(context.translate(
'Terms & Conditions',
'الشروط والأحكام',

View File

@ -1,6 +1,7 @@
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_svg/svg.dart';
import 'package:go_router/go_router.dart';
import 'package:pocketbase/pocketbase.dart';
import 'package:shared_preferences/shared_preferences.dart';
@ -2038,16 +2039,17 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
// color: Colors.white),
// ),
// const SizedBox(width: 5),
Image.asset(
isBookmarked
? UaeNumbersAssetPath
.bookmarksSelectedUae // Filled bookmark image
: UaeNumbersAssetPath
.bookmarksUae, // Default bookmark image
// color: Colors.white,
width: 24,
height: 24,
),
// Image.asset(
// isBookmarked
// ? UaeNumbersAssetPath
// .bookmarksSelectedUae // Filled bookmark image
// : UaeNumbersAssetPath
// .bookmarksUae, // Default bookmark image
// // color: Colors.white,
// width: 24,
// height: 24,
// ),
Icon(Icons.bookmarks_rounded, color:isBookmarked ? Colors.black:Colors.white ,),
],
),
),
@ -2069,18 +2071,24 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
SizedBox(width: 5),
Stack(
children: [
Image.asset(
UaeNumbersAssetPath.shareUae,
color: Colors.white, // Outline color
width: 24, // Slightly larger
height: 24,
),
Image.asset(
UaeNumbersAssetPath.shareUae,
color: Colors.white,
// Image.asset(
// UaeNumbersAssetPath.shareUae,
// color: Colors.white, // Outline color
// width: 24, // Slightly larger
// height: 24,
// ),
// Image.asset(
// UaeNumbersAssetPath.shareUae,
// color: Colors.white,
// width: 24,
// height: 24,
// ),
SvgPicture.asset(
UaeNumbersAssetPath.share,
semanticsLabel: 'share',
width: 24,
height: 24,
),
),
],
)
],

View File

@ -5,6 +5,7 @@ import 'package:external_repos/external_repos.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:http/http.dart' as http;
import 'package:image_picker/image_picker.dart';
@ -15,6 +16,8 @@ import 'package:uae_stat/config/my_theme.dart';
import 'package:uae_stat/domain/use_cases/language.dart';
import 'package:uae_stat/infrastructure/data/p_auth_repo.dart';
import 'package:uae_stat/infrastructure/services/img_asset_paths/icons/misc_icon_asset_path.dart';
import 'package:uae_stat/presentation/components/indicators/locale_provider.dart';
import 'package:uae_stat/presentation/components/my_toggle.dart';
import 'package:uae_stat/presentation/routes/bottom_bar_routes/tab_routes/home_route.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
@ -22,15 +25,15 @@ import '../components/my_bottom_nav_bar.dart';
import 'auth_verification/changepassword.dart';
import 'demo_home.dart';
class ProfileScreen extends StatefulWidget {
class ProfileScreen extends ConsumerStatefulWidget {
final String userId; // Add this field to hold the user ID
const ProfileScreen({Key? key, required this.userId}) : super(key: key);
@override
State<ProfileScreen> createState() => _ProfileScreenState();
ConsumerState<ProfileScreen> createState() => _ProfileScreenState();
}
class _ProfileScreenState extends State<ProfileScreen> {
class _ProfileScreenState extends ConsumerState<ProfileScreen> {
final _pb = PocketBase('https://pb.venbait.in');
// final _pb = PocketBase('http://127.0.0.1:8090');
@ -461,6 +464,7 @@ class _ProfileScreenState extends State<ProfileScreen> {
},
child: Scaffold(
appBar: AppBar(
scrolledUnderElevation: 0,
backgroundColor: Colors.white,
elevation: 0,
leading: IconButton(
@ -473,6 +477,23 @@ class _ProfileScreenState extends State<ProfileScreen> {
AppLocalizations.of(context)!.my_profile,
style: TextStyle(color: Color(0xFF985400)),
),
actions: [
Consumer(
builder: (context, ref, _) {
final locale = ref.watch(localeProvider); // Current locale
return MyToggle(
isOn: locale?.languageCode == 'en',
knobTextWhenOn: 'ع',
knobTextWhenOff: 'EN',
pathColorWhenOn: Colors.grey.shade300,
pathColorWhenOff: Colors.grey.shade300,
onTap: () {
ref.read(localeProvider.notifier).toggleLocale();
},
);
},
),
],
// actions: [
// TextButton(
// onPressed: () {
@ -788,74 +809,86 @@ class _ProfileScreenState extends State<ProfileScreen> {
),
),
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
SizedBox(
height: 10,
),
Text.rich(
TextSpan(
text: AppLocalizations.of(context)!.agree,
style: TextStyle(color: Color(0xFF898C81)),
children: [
TextSpan(
recognizer:TapGestureRecognizer()
..onTap = () => context.push('/terms&conditions'),
text: AppLocalizations.of(
context,
)!
.terms_conditions,
style: TextStyle(
color: Color(0xFF985400),
// decoration: TextDecoration.underline,
fontWeight: FontWeight
.w600, // Makes the text bold
decorationColor: Color(0xFF985400),
decorationThickness: 1,
),
),
TextSpan(
text: AppLocalizations.of(
context,
)!
.t_and,
style: TextStyle(color: Color(0xFF898C81)),
),
TextSpan(
recognizer: TapGestureRecognizer()
..onTap = () => context.push('/privacy_policy'),
text: AppLocalizations.of(
context,
)!
.privacy_policy,
style: TextStyle(
color: Color(0xFF985400),
// decoration: TextDecoration.underline,
fontWeight: FontWeight
.w600, // Makes the text bold
decorationColor: Color(0xFF985400),
decorationThickness: 1,
),
),
TextSpan(
text: AppLocalizations.of(
context,
)!
.conditions,
style: TextStyle(color: Color(0xFF898C81)),
),
],
child: Padding(
padding: const EdgeInsets.only(
top: 14.0,),
child: Text.rich(
TextSpan(
text: AppLocalizations.of(
context)!
.agree,
// text: 'I agree to ',
style: TextStyle(
fontWeight: FontWeight.w500,
fontSize: 14,
color: Color(
0xFF898C81,), // Change to your desired color
),
textAlign: TextAlign.start,
maxLines: 2,
overflow: TextOverflow.visible,
softWrap: true,
children: [
TextSpan(
recognizer:TapGestureRecognizer()
..onTap = () => context.push('/terms&conditions'),
text: AppLocalizations.of(
context)!
.terms_conditions,
// text: 'Terms & Conditions',
style: TextStyle(
fontSize: 14,
fontWeight:
FontWeight.bold,
color:
Color(0xFF985400),
// Makes the text bold
// decoration:
// TextDecoration.underline,
decorationColor:
Color(0xFF985400),
decorationThickness:
1),
),
TextSpan(
text: AppLocalizations.of(
context)!
.t_and,
style: TextStyle(
color: Color(
0xFF898C81), // Change to your desired color
),
),
TextSpan(
recognizer: TapGestureRecognizer()
..onTap = () => context.push('/privacy_policy'),
text: AppLocalizations.of(
context)!
.privacy_policy,
style: TextStyle(
fontWeight:
FontWeight.bold,
fontSize: 14,
fontFamily: 'Roboto',
color:
Color(0xFF985400),
// decoration:
// TextDecoration.underline,
decorationColor:
Color(0xFF648CBA),
decorationThickness:
1),
),
TextSpan(
text: AppLocalizations.of(
context)!
.conditions,
style: TextStyle(
fontWeight: FontWeight.w500,
fontSize: 14,
color: Color(
0xFF898C81), // Change to your desired color
),
),
],
),
],
),
),
),
],

View File

@ -449,8 +449,8 @@ class LoginRoute extends HookConsumerWidget {
'Roboto',
'Roboto',
),
fontSize: locale?.languageCode == 'ar' ? 14: 18,
fontWeight: FontWeight.bold,
fontSize: locale?.languageCode == 'ar' ? 12: 18,
fontWeight: FontWeight.w500,
)
),
6.horizontalSpace,

View File

@ -1266,7 +1266,7 @@ class InfoCard extends StatelessWidget {
return GestureDetector(
onTap: () {
context.go(
context.push(
'/chartScreen/$dataset?bgColor=$colorPattern&mainTopic=$encodedMainTopic&title=$encodedTitle&key=$encodedKey');
},
child: Container(

View File

@ -16,6 +16,7 @@ class aboutFCSC extends StatelessWidget {
);
return BaseScaffold(
showDivider: true,
showBackButton: true,
dividerColor: Colors.grey[300],
appbarColor: Colors.white,
bottomColor: Colors.white,

View File

@ -23,6 +23,7 @@ class GetStarted extends StatelessWidget {
),
child: BaseScaffold(
showDivider: true,
showBackButton: true,
dividerColor: Colors.grey[300],
appbarColor: Colors.white,
bottomColor: Colors.white,

View File

@ -21,6 +21,7 @@ class AppFeatures extends StatelessWidget {
),
child: BaseScaffold(
showDivider: true,
showBackButton: true,
bottomColor: Colors.white,
dividerColor: Colors.grey[300],
appbarColor: Colors.white,

View File

@ -21,6 +21,7 @@ class ChangeMyPassword extends StatelessWidget {
),
child: BaseScaffold(
showDivider: true,
showBackButton: true,
bottomColor: Colors.white,
dividerColor: Colors.grey[300],
appbarColor: Colors.white,

View File

@ -21,6 +21,7 @@ class EditMyProfile extends StatelessWidget {
),
child: BaseScaffold(
showDivider: true,
showBackButton: true,
bottomColor: Colors.white,
dividerColor: Colors.grey[300],
appbarColor: Colors.white,

View File

@ -21,6 +21,7 @@ class HowUseTheApp extends StatelessWidget {
),
child: BaseScaffold(
showDivider: true,
showBackButton: true,
dividerColor: Colors.grey[300],
appbarColor: Colors.white,
bottomColor: Colors.white,

View File

@ -24,6 +24,7 @@ class Purpose extends StatelessWidget {
),
child: BaseScaffold(
showDivider: true,
showBackButton: true,
dividerColor: Colors.grey[300],
appbarColor: Colors.white,
bottomColor: Colors.white,

View File

@ -24,6 +24,7 @@ class StayUpdate extends StatelessWidget {
),
child: BaseScaffold(
showDivider: true,
showBackButton: true,
dividerColor: Colors.grey[300],
appbarColor: Colors.white,
bottomColor: Colors.white,

View File

@ -21,6 +21,7 @@ class WhoUseTheApp extends StatelessWidget {
),
child: BaseScaffold(
showDivider: true,
showBackButton: true,
dividerColor: Colors.grey[300],
appbarColor: Colors.white,
bottomColor: Colors.white,

View File

@ -16,6 +16,7 @@ class aboutTheApp extends StatelessWidget {
);
return BaseScaffold(
showDivider: true,
showBackButton: true,
bottomColor: Colors.white,
dividerColor: Colors.grey[300],
appbarColor: Colors.white,

View File

@ -20,6 +20,7 @@ class _FAQPageState extends State<FAQPage> {
Widget build(BuildContext context) {
return BaseScaffold(
dividerColor: Colors.grey[300],
showBackButton: true,
appbarColor: Colors.white,
bottomColor: Colors.white,
mycenterTitle: true,

View File

@ -17,6 +17,7 @@ class UsingFeatures extends StatelessWidget {
);
return BaseScaffold(
showDivider: true,
showBackButton: true,
dividerColor: Colors.grey[300],
bottomColor: Colors.white,
appbarColor: Colors.white,

View File

@ -698,14 +698,15 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
child: IconButton(
padding: EdgeInsets.zero,
constraints: BoxConstraints(),
color: Colors.white,
color: widget.colorChange ? Colors.white : Colors.black,
icon: const Icon(Icons.arrow_back_ios_new, size: 24),
onPressed: () {
if ((widget.navBackArrow as Text).data == 'home') {
context.go('/myhomepage');
} else {
context.go('/uaenumbers');
}
// if ((widget.navBackArrow as Text).data == 'home') {
// context.go('/myhomepage');
// } else {
// context.go('/uaenumbers');
// }
context.pop();
},
),
),
@ -755,7 +756,7 @@ class _BaseScaffoldState extends ConsumerState<BaseScaffold> {
),
],
),
Divider(),
// Divider(),
InkWell(
onTap: () {
if (userId != 'guest') context.go('/editProfile');

View File

@ -568,7 +568,7 @@ packages:
source: hosted
version: "0.7.0"
flutter_svg:
dependency: transitive
dependency: "direct main"
description:
name: flutter_svg
sha256: c200fd79c918a40c5cd50ea0877fa13f81bdaf6f0a5d3dbcc2a13e3285d6aa1b

View File

@ -63,6 +63,7 @@ dependencies:
connectivity_plus: ^6.1.2
tutorial_coach_mark: ^1.2.12
package_info_plus: ^8.2.0
flutter_svg: ^2.0.17
dependency_overrides:
fading_edge_scrollview: ^4.1.1
@ -136,6 +137,7 @@ flutter:
- assets/icons/misc/group.png
- assets/icons/misc/search.png
fonts:
- family: Segoe
fonts: