bug fix search

This commit is contained in:
Juki-shiba 2025-04-30 16:03:01 +05:30
parent 809d3adc08
commit 72d29d2f30
8 changed files with 158 additions and 171 deletions

View File

@ -2,27 +2,27 @@ C/C++ Structured Logc
a
_C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ׈“ãç2  瘝èã2`
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  þÇð¯è2  瘝èã2`
^
\C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\android_gradle_build.json  ׈“ãç2º ««¤èã2e
\C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\android_gradle_build.json  ÿÇð¯è2º ««¤èã2e
c
aC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\android_gradle_build_mini.json  ׈“ãç2<18> Ø«¤èã2R
aC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\android_gradle_build_mini.json  ÿÇð¯è2<18> Ø«¤èã2R
P
NC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\build.ninja  ׈“ãç2÷Û ̨¤èã2V
NC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\build.ninja  ÿÇð¯è2÷Û ̨¤èã2V
T
RC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\build.ninja.txt  ؈“ãç2[
RC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\build.ninja.txt  ÿÇð¯è2[
Y
WC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\build_file_index.txt  ؈“ãç2 S 諤èã2\
WC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\build_file_index.txt  ÿÇð¯è2 S 諤èã2\
Z
XC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\compile_commands.json  ؈“ãç2`
XC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\compile_commands.json  ÿÇð¯è2`
^
\C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\compile_commands.json.bin  ؈“ãç2 f
\C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\compile_commands.json.bin  ÿÇð¯è2 f
d
bC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\metadata_generation_command.txt  ؈“ãç2
bC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\metadata_generation_command.txt  ÿÇð¯è2
Ä Þ«¤èã2Y
W
UC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\prefab_config.json  ؈“ãç2  ( 櫤èã2^
UC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\prefab_config.json  ÿÇð¯è2  ( 櫤èã2^
\
ZC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\symbol_folder_index.txt  ؈“ãç2  Q 諤èã2W
ZC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\arm64-v8a\symbol_folder_index.txt  ÿÇð¯è2  Q 諤èã2W
U
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ؈“ãç2 § ÑÜÐßÓ2
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ÿÇð¯è2 § ÑÜÐßÓ2

View File

@ -2,27 +2,27 @@ C/C++ Structured Loge
c
aC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  –‰“ãç2  ²ÿ¥èã2b
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ëÈð¯è2  ²ÿ¥èã2b
`
^C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\android_gradle_build.json  –‰“ãç2¾ µÿ¥èã2g
^C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\android_gradle_build.json  ëÈð¯è2¾ µÿ¥èã2g
e
cC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\android_gradle_build_mini.json  —‰“ãç2 âÿ¥èã2T
cC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\android_gradle_build_mini.json  ëÈð¯è2 âÿ¥èã2T
R
PC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\build.ninja  —‰“ãç2<18>Ü °õ¥èã2X
PC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\build.ninja  ëÈð¯è2<18>Ü °õ¥èã2X
V
TC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\build.ninja.txt  —‰“ãç2]
TC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\build.ninja.txt  ëÈð¯è2]
[
YC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\build_file_index.txt  —‰“ãç2 S “€¦èã2^
YC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\build_file_index.txt  ëÈð¯è2 S “€¦èã2^
\
ZC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\compile_commands.json  —‰“ãç2b
ZC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\compile_commands.json  ëÈð¯è2b
`
^C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\compile_commands.json.bin  —‰“ãç2 h
^C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\compile_commands.json.bin  ëÈð¯è2 h
f
dC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\metadata_generation_command.txt  —‰“ãç2
dC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\metadata_generation_command.txt  ëÈð¯è2
Î ‰€¦èã2[
Y
WC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\prefab_config.json  —‰“ãç2  ( €¦èã2`
WC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\prefab_config.json  ëÈð¯è2  ( €¦èã2`
^
\C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\symbol_folder_index.txt  —‰“ãç2  S “€¦èã2W
\C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\armeabi-v7a\symbol_folder_index.txt  ëÈð¯è2  S “€¦èã2W
U
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  —‰“ãç2 § ÑÜÐßÓ2
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ëÈð¯è2 § ÑÜÐßÓ2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log]
[
YC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  щ“ãç2  †½¦èã2Z
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  «Éð¯è2  †½¦èã2Z
X
VC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\android_gradle_build.json  щ“ãç2® ˜½¦èã2_
VC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\android_gradle_build.json  «Éð¯è2® ˜½¦èã2_
]
[C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\android_gradle_build_mini.json  щ“ãç2<18> ©½¦èã2L
[C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\android_gradle_build_mini.json  «Éð¯è2<18> ©½¦èã2L
J
HC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\build.ninja  щ“ãç2ÙÛ µ»¦èã2P
HC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\build.ninja  «Éð¯è2ÙÛ µ»¦èã2P
N
LC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\build.ninja.txt  щ“ãç2U
LC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\build.ninja.txt  «Éð¯è2U
S
QC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\build_file_index.txt  щ“ãç2 S »½¦èã2V
QC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\build_file_index.txt  «Éð¯è2 S »½¦èã2V
T
RC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\compile_commands.json  щ“ãç2Z
RC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\compile_commands.json  «Éð¯è2Z
X
VC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\compile_commands.json.bin  щ“ãç2 `
VC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\compile_commands.json.bin  «Éð¯è2 `
^
\C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\metadata_generation_command.txt  щ“ãç2
\C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\metadata_generation_command.txt  «Éð¯è2
¦ ¬½¦èã2S
Q
OC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\prefab_config.json  щ“ãç2  ( ±½¦èã2X
OC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\prefab_config.json  «Éð¯è2  ( ±½¦èã2X
V
TC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\symbol_folder_index.txt  Ò‰“ãç2  K ¶½¦èã2W
TC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86\symbol_folder_index.txt  «Éð¯è2  K ¶½¦èã2W
U
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  Ó‰“ãç2 § ÑÜÐßÓ2
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  «Éð¯è2 § ÑÜÐßÓ2

View File

@ -2,27 +2,27 @@ C/C++ Structured Log`
^
\C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\additional_project_files.txtC
A
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  ÿ‰“ãç2  üצèã2]
?com.android.build.gradle.internal.cxx.io.EncodedFileFingerPrint  öÊð¯è2  üצèã2]
[
YC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\android_gradle_build.json  ÿ‰“ãç2´ ئèã2b
YC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\android_gradle_build.json  öÊð¯è2´ ئèã2b
`
^C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\android_gradle_build_mini.json  ÿ‰“ãç2 …ئèã2O
^C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\android_gradle_build_mini.json  öÊð¯è2 …ئèã2O
M
KC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\build.ninja  ÿ‰“ãç2èÛ ¥Ö¦èã2S
KC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\build.ninja  öÊð¯è2èÛ ¥Ö¦èã2S
Q
OC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\build.ninja.txt  ÿ‰“ãç2X
OC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\build.ninja.txt  öÊð¯è2X
V
TC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\build_file_index.txt  ÿ‰“ãç2 S ˆØ¦èã2Y
TC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\build_file_index.txt  öÊð¯è2 S ˆØ¦èã2Y
W
UC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\compile_commands.json  ÿ‰“ãç2]
UC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\compile_commands.json  öÊð¯è2]
[
YC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\compile_commands.json.bin  ÿ‰“ãç2 c
YC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\compile_commands.json.bin  ÷Êð¯è2 c
a
_C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\metadata_generation_command.txt  ÿ‰“ãç2
_C:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\metadata_generation_command.txt  ÷Êð¯è2
µ †Ø¦èã2V
T
RC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\prefab_config.json  €Š“ãç2  ( ‡Ø¦èã2[
RC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\prefab_config.json  ÷Êð¯è2  ( ‡Ø¦èã2[
Y
WC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\symbol_folder_index.txt  €Š“ãç2  N ˆØ¦èã2W
WC:\flutter code\new\FCSC\android\app\.cxx\Debug\2d1206wq\x86_64\symbol_folder_index.txt  ÷Êð¯è2  N ˆØ¦èã2W
U
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  €Š“ãç2 § ÑÜÐßÓ2
SC:\flutter\src\flutter\packages\flutter_tools\gradle\src\main\groovy\CMakeLists.txt  ÷Êð¯è2 § ÑÜÐßÓ2

View File

@ -1,6 +1,6 @@
enum IndicatorTopic {
economy(nameAR: 'الاقتصاد', nameEN: 'Economy'),
social(nameAR: 'الاجتماعي', nameEN: 'Social'),
social(nameAR: 'لاجتماعي', nameEN: 'Social'),
environment(nameAR: 'البيئة', nameEN: 'Environment');
const IndicatorTopic({

View File

@ -71,7 +71,6 @@ class uaenumberWidget extends ConsumerStatefulWidget {
}
class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
@override
TextEditingController _searchController = TextEditingController();
List<dynamic> homePageData = [];
List<dynamic> filteredData = [];
@ -100,7 +99,6 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
}
Future<void> fetchData(locale) async {
// const baseUrl = 'https://pb.venbait.in/api/getHomePageData';
const baseUrl = '$apiUrl/api/getUAENumbersData';
try {
final response = await http.get(Uri.parse(baseUrl + '?language=$locale'));
@ -109,11 +107,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
homePageData = (json.decode(response.body) as List)
.map((e) => Map<String, dynamic>.from(e))
.toList();
filteredData = List.from(homePageData);
// Show all initially
// print("HomeDAta $homePageData");
isLoading = false;
});
} else {
@ -130,7 +124,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
void filterData(String query) {
if (query.isEmpty) {
setState(() {
filteredData = List.from(homePageData); // Reset if empty
filteredData = List.from(homePageData);
});
return;
}
@ -180,14 +174,13 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
setState(() {
filteredData = tempList;
print(filteredData); // Debugging: Check filtered output in console
});
}
@override
Widget build(BuildContext context) {
final isConnected = ref.watch(connectivityProvider);
// If no internet, redirect to InternetCheckScreen
ref.listen<AsyncValue<bool>>(connectivityProvider, (previous, hasInternet) {
if (hasInternet.value == false) {
context.push('/internetcheck');
@ -195,7 +188,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
});
ref.listen<Locale?>(localeProvider, (previous, next) async {
final localeCode = next?.languageCode ?? 'en'; // Default to 'en' if null
final localeCode = next?.languageCode ?? 'en';
setState(() {
isLoading = true;
});
@ -208,31 +201,26 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
if (isLoading) {
return Container(
color: Color(0x98FFFCE5), // Semi-transparent background
color: Color(0x98FFFCE5),
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
margin:
EdgeInsets.symmetric(horizontal: 40), // Left & Right space
margin: EdgeInsets.symmetric(horizontal: 40),
child: LinearProgressIndicator(
minHeight: 5, // Adjust thickness
backgroundColor: Colors.grey[100], // Optional: Background color
valueColor: AlwaysStoppedAnimation<Color>(
Color(0xFFAA8E83)), // Loader color
minHeight: 5,
backgroundColor: Colors.grey[100],
valueColor: AlwaysStoppedAnimation<Color>(Color(0xFFAA8E83)),
),
),
],
),
);
} else if (filteredData.isEmpty) {
return Center(child: Text("No data available"));
}
return Padding(
padding:
const EdgeInsets.only(left: 16.0, right: 16.0, top: 5.0, bottom: 5.0),
child: ListView(
padding: const EdgeInsets.only(left: 16.0, right: 16.0, top: 5.0, bottom: 5.0),
child: Column(
children: [
Container(
height: 40,
@ -246,17 +234,15 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
child: TextField(
controller: _searchController,
onChanged: (value) {
filterData(
value); // Call filter function directly on input change
}, // Ensures vertical alignment
// Centers text horizontally
filterData(value);
},
decoration: InputDecoration(
hintText: AppLocalizations.of(context)!.search,
hintStyle: TextStyle(
color: Color(0xFFAA8E83),
fontFamily: context.translate('Roboto', 'NotoKufi'),
fontSize: 14,
height: 2.5, // This helps align it with the icon
height: 2.0,
),
prefixIconConstraints: BoxConstraints(
maxWidth: 42,
@ -264,7 +250,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
),
prefixIcon: Container(
padding: EdgeInsets.only(right: 5, left: 5),
alignment: Alignment.center, // Ensures the SVG is centered
alignment: Alignment.center,
child: SvgPicture.asset(
MiscIconAssetPath.Search,
semanticsLabel: 'Search',
@ -273,72 +259,88 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
width: 18,
),
),
suffixIcon: _searchController.text.isNotEmpty
? IconButton(
icon: Icon(
Icons.clear,
color: Color(0xFFAA8E83),
size: 18,
),
onPressed: () {
_searchController.clear();
filterData('');
},
)
: null,
contentPadding: EdgeInsets.symmetric(vertical: 9, horizontal: 18.0),
border: InputBorder.none,
),
),
),
),
SizedBox(
height: myheight / 40,
),
...filteredData.map<Widget>((mainTopic) {
String colorPattern = mainTopic['color_pattern'];
print('colorPattern $colorPattern');
Color backgroundColor = Color(int.parse(colorPattern));
print('backgroundColor $backgroundColor');
Color borderColor = backgroundColor;
int index = filteredData.indexOf(mainTopic);
bool isFirstTile = index == 0;
SizedBox(height: myheight / 40),
Expanded(
child: filteredData.isEmpty
? Center(child: Text("No data available"))
: ListView(
children: [
...filteredData.map<Widget>((mainTopic) {
String colorPattern = mainTopic['color_pattern'];
Color backgroundColor = Color(int.parse(colorPattern));
Color borderColor = backgroundColor;
int index = filteredData.indexOf(mainTopic);
return CustomExpandableTile(
index: index,
isExpanded: expandedIndex == index, // Compare with expandedIndex
onTap: (index) {
setState(() {
expandedIndex = (expandedIndex == index) ? null : index;
});
},
title: mainTopic['main_topic'],
titleBackgroundColor: backgroundColor,
children: _buildSubTopics(mainTopic['sub_topics'] ?? [], mywidth,
myheight, borderColor, colorPattern, mainTopic['main_topic']),
);
}),
return CustomExpandableTile(
index: index,
isExpanded: expandedIndex == index,
onTap: (index) {
setState(() {
expandedIndex = (expandedIndex == index) ? null : index;
});
},
title: mainTopic['main_topic'],
titleBackgroundColor: backgroundColor,
children: _buildSubTopics(
mainTopic['sub_topics'] ?? [],
mywidth,
myheight,
borderColor,
colorPattern,
mainTopic['main_topic']),
);
}),
],
),
),
],
),
);
}
List<Widget> _buildSubTopics(List<dynamic> subTopics, double myWidth,
myheight, Color borderColor, String colorPattern, mainTopic) {
print('colorPattern123 $borderColor');
// Sort sub-topics based on `sub_topic_list_order`
subTopics.sort((a, b) => (a['sub_topic_list_order'] ?? 0)
.compareTo(b['sub_topic_list_order'] ?? 0));
List<Widget> _buildSubTopics(List<dynamic> subTopics, double myWidth, myheight,
Color borderColor, String colorPattern, mainTopic) {
subTopics.sort((a, b) =>
(a['sub_topic_list_order'] ?? 0).compareTo(b['sub_topic_list_order'] ?? 0));
return subTopics
.map<Widget>((subTopic) => Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
buildCategoryTitle(subTopic['sub_topic'], borderColor),
..._buildDataSetCards(subTopic['tile_data'] ?? [], myWidth,
borderColor, colorPattern, mainTopic),
],
))
crossAxisAlignment: CrossAxisAlignment.start,
children: [
buildCategoryTitle(subTopic['sub_topic'], borderColor),
..._buildDataSetCards(subTopic['tile_data'] ?? [], myWidth,
borderColor, colorPattern, mainTopic),
],
))
.toList();
}
List<Widget> _buildDataSetCards(List<dynamic> tileData, double myWidth,
Color borderColor, colorPattern, mainTopic) {
// Sort datasets based on `data_set_list_order`
tileData.sort((a, b) => (a['data_set_list_order'] ?? 0)
.compareTo(b['data_set_list_order'] ?? 0));
tileData.sort((a, b) =>
(a['data_set_list_order'] ?? 0).compareTo(b['data_set_list_order'] ?? 0));
List<Widget> rows = [];
for (int i = 0; i < tileData.length; i += 2) {
// Take 1 or 2 items for the row
final rowItems = tileData.sublist(
i,
i + 2 > tileData.length ? tileData.length : i + 2,
@ -348,15 +350,13 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: rowItems.map<Widget>((data) {
// Calculate width: full width for one item, half for two items
final cardWidth = rowItems.length == 1
? myWidth
: (myWidth - 16) / 2.6; // Subtract spacing for padding
: (myWidth - 16) / 2.6;
return Expanded(
child: Padding(
padding:
const EdgeInsets.symmetric(horizontal: 5.0), // Add spacing
padding: const EdgeInsets.symmetric(horizontal: 5.0),
child: buildCard(
context,
data['data_set_tile_heading'] ?? '',
@ -367,8 +367,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
borderColor,
colorPattern,
cardWidth,
mainTopic // Pass the calculated width
),
mainTopic),
),
);
}).toList(),
@ -380,22 +379,22 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
Widget buildCategoryTitle(String title, Color color) {
return Padding(
padding: const EdgeInsets.only(top: 1.2, bottom: 1.2),
// padding: const EdgeInsets.symmetric(vertical: 8.0),
child: Center(
child: Text(
title,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
fontWeight: FontWeight.w600,
color: color,
padding: const EdgeInsets.only(top: 1.2, bottom: 1.2),
child: Center(
child: Text(
title,
style: TextStyle(
fontFamily: context.translate(
'Roboto',
'NotoKufi',
),
fontSize: 16,
fontWeight: FontWeight.w600,
color: color,
),
));
),
),
);
}
Widget buildCardRow(List<Widget> cards) {
@ -423,11 +422,7 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
colorPattern,
double mywidth,
String mainTopic) {
print('UAE Numbers $value , $title');
// Check if title is "Population Growth"
bool isPopulationGrowth = title == "Population Growth";
// Convert value to double for checking positive or negative (only for Population Growth)
double parsedValue = isPopulationGrowth
? double.tryParse(value.replaceAll('%', '')) ?? 0.0
: 0.0;
@ -435,31 +430,23 @@ class _UaenumberWidgetState extends ConsumerState<uaenumberWidget> {
return GestureDetector(
onTap: () {
// print('checking data');
// print(mainTopic);
// print(title);
// print(subtitle);
// print(data_set);
final encodedMainTopic = Uri.encodeComponent(mainTopic);
final encodedTitle = Uri.encodeComponent(title);
final encodedKey = Uri.encodeQueryComponent('uaenumbers');
// Pass mainTopic and title as query parameters
context.push(
'/chartScreen/$data_set?bgColor=$colorPattern&mainTopic=$encodedMainTopic&title=$encodedTitle&key=$encodedKey');
// context.go('/chartScreen/$data_set');
},
child: Card(
elevation: 1,
child: Container(
width: mywidth,
decoration: BoxDecoration(
color: Colors.white, // Background color
color: Colors.white,
border: Border.all(
color: bordercolor, // Border color
width: 1, // Border width
color: bordercolor,
width: 1,
),
borderRadius:
BorderRadius.circular(12), // Optional: Rounded corners
borderRadius: BorderRadius.circular(12),
),
padding: const EdgeInsets.only(
top: 3.0, bottom: 3.0, left: 5.0, right: 5.0),

View File

@ -89,9 +89,9 @@ class ChartWidget extends StatelessWidget {
// Function to get colors for both English & Arabic keys
List<Color> get uniqueColors {
final Map<String, String> translations = {
'اقتصاد': 'ECONOMY',
'اجتماعي': 'SOCIAL',
'بيئة': 'ENVIRONMENT',
'الاقتصاد': 'ECONOMY',
'الاجتماعي': 'SOCIAL',
'البيئة': 'ENVIRONMENT',
};
String key = translations[chartHeader] ?? chartHeader;
@ -100,9 +100,9 @@ class ChartWidget extends StatelessWidget {
List<Color> get uniqueColorsForTwo {
final Map<String, String> translations = {
'اقتصاد': 'ECONOMY',
'اجتماعي': 'SOCIAL',
'بيئة': 'ENVIRONMENT',
'الاقتصاد': 'ECONOMY',
'الاجتماعي': 'SOCIAL',
'البيئة': 'ENVIRONMENT',
};
String key = translations[chartHeader] ?? chartHeader;
@ -111,9 +111,9 @@ class ChartWidget extends StatelessWidget {
List<Color> get uniqueColorsForThree {
final Map<String, String> translations = {
'اقتصاد': 'ECONOMY',
'اجتماعي': 'SOCIAL',
'بيئة': 'ENVIRONMENT',
'الاقتصاد': 'ECONOMY',
'الاجتماعي': 'SOCIAL',
'البيئة': 'ENVIRONMENT',
};
String key = translations[chartHeader] ?? chartHeader;

View File

@ -108,9 +108,9 @@ class _BookMarkState extends ConsumerState<BookMark> {
List<Map<String, dynamic>> fetchedData) {
// Define the required order
List<String> order = [
context.translate('ECONOMY', 'اقتصاد'),
context.translate('SOCIAL', 'اجتماعي'),
context.translate('ENVIRONMENT', 'بيئة')
context.translate('ECONOMY', 'الاقتصاد'),
context.translate('SOCIAL', 'الاجتماعي'),
context.translate('ENVIRONMENT', 'البيئة')
];
// Create a list to store sorted data
@ -118,9 +118,9 @@ class _BookMarkState extends ConsumerState<BookMark> {
// Group data based on categories
Map<String, List<Map<String, dynamic>>> groupedData = {
context.translate('ECONOMY', 'اقتصاد'): [],
context.translate('SOCIAL', 'اجتماعي'): [],
context.translate('ENVIRONMENT', 'بيئة'): []
context.translate('ECONOMY', 'الاقتصاد'): [],
context.translate('SOCIAL', 'الاجتماعي'): [],
context.translate('ENVIRONMENT', 'البيئة'): []
};
// Categorize data