filter fix
This commit is contained in:
parent
933b154961
commit
1b8ea81c16
@ -1,5 +1,5 @@
|
||||
// api_config.dart
|
||||
// const String apiUrl = 'http://127.0.0.1:8090';
|
||||
// const String apiUrl = 'https://pbdev.venbait.in/';
|
||||
const String apiUrl = 'https://pb.venbait.in/';
|
||||
// const String apiUrl = 'https://pocket.fcsc.gov.ae/';
|
||||
// const String apiUrl = 'https://pb.venbait.in/';
|
||||
const String apiUrl = 'https://pocket.fcsc.gov.ae/';
|
||||
|
||||
@ -106,6 +106,7 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
||||
late UserService _userService;
|
||||
late double tourCard;
|
||||
late bool isDarkTheme;
|
||||
String? _previousTabId;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@ -144,11 +145,11 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final userID = prefs.getString('userId');
|
||||
try {
|
||||
|
||||
final result = await _pb.collection('bookmark').getList(
|
||||
filter: "user_id = '${userID}' && dataset = '${widget.dataSets}'",
|
||||
headers: {
|
||||
'Authorization': 'Bearer ${PocketBaseService.authStore.token}' // Pass the admin token
|
||||
'Authorization':
|
||||
'Bearer ${PocketBaseService.authStore.token}' // Pass the admin token
|
||||
},
|
||||
);
|
||||
|
||||
@ -168,7 +169,6 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
||||
final prefs = await SharedPreferences.getInstance();
|
||||
final userID = prefs.getString('userId');
|
||||
try {
|
||||
|
||||
final response = await _pb.collection('bookmark').create(body: {
|
||||
'user_id': userID,
|
||||
'dataset': widget.dataSets,
|
||||
@ -1667,6 +1667,45 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
||||
Navigator.pop(context);
|
||||
}
|
||||
|
||||
void clear() {
|
||||
print('CLEAR ---');
|
||||
|
||||
// List<Map<String, dynamic>> selectedFilters =
|
||||
// selectedFiltersStorage.isNotEmpty
|
||||
// ? List.from(selectedFiltersStorage) // Use stored filters
|
||||
// : filters.map((filter) {
|
||||
// return {"filter_key": filter["filter_key"], "filter_data": []};
|
||||
// }).toList(); // Or initialize empty filters
|
||||
|
||||
// selectedFilters.forEach((filter) {
|
||||
// filter["filter_data"].clear();
|
||||
// });
|
||||
setState(() {
|
||||
chartsData = List.from(originalTabChartsData);
|
||||
cardData = List.from(originalTabCardData);
|
||||
});
|
||||
selectedFiltersStorage.clear();
|
||||
formattedFilters = [];
|
||||
|
||||
final locale = ref.watch(localeProvider)?.languageCode ?? 'en';
|
||||
|
||||
print('locale22- $locale');
|
||||
final isDark = ref.watch(themeProvider) == ThemeMode.dark ||
|
||||
(ref.watch(themeProvider) == ThemeMode.system &&
|
||||
MediaQuery.of(context).platformBrightness == Brightness.dark);
|
||||
print('isDark filter');
|
||||
print(isDark);
|
||||
final themeMode = (isDark ? 'dark' : 'light');
|
||||
print(themeMode);
|
||||
|
||||
// fetchChartData(
|
||||
// widget.dataSets,
|
||||
// locale,
|
||||
// tabWiseKpi, // Ensure you are passing the correct KPI here
|
||||
// formattedFilters, // Pass the formatted filter data here
|
||||
// themeMode);
|
||||
}
|
||||
|
||||
String capitalizeAndSplit(String text) {
|
||||
if (text.isEmpty) return text;
|
||||
return text
|
||||
@ -2025,52 +2064,60 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
||||
print(
|
||||
"Selected Filters before applying: $selectedFilters");
|
||||
|
||||
if (selectedFilters.every(
|
||||
(filter) => filter['filter_data'].isEmpty)) {
|
||||
setState(() {
|
||||
isLoading = true;
|
||||
});
|
||||
selectedFilters.forEach((filter) {
|
||||
filter["filter_data"].clear();
|
||||
});
|
||||
setState(() {
|
||||
chartsData = List.from(originalTabChartsData);
|
||||
cardData = List.from(originalTabCardData);
|
||||
});
|
||||
selectedFiltersStorage.clear();
|
||||
formattedFilters = [];
|
||||
final hasAnyFilterData = selectedFilters.any(
|
||||
(filter) =>
|
||||
(filter['filter_data'] as List).isNotEmpty,
|
||||
);
|
||||
|
||||
final locale =
|
||||
ref.watch(localeProvider)?.languageCode ??
|
||||
'en';
|
||||
if (hasAnyFilterData) {
|
||||
print("⛔ No filter data, resetting");
|
||||
if (selectedFilters.every(
|
||||
(filter) => filter['filter_data'].isEmpty)) {
|
||||
setState(() {
|
||||
isLoading = true;
|
||||
});
|
||||
selectedFilters.forEach((filter) {
|
||||
filter["filter_data"].clear();
|
||||
});
|
||||
setState(() {
|
||||
chartsData = List.from(originalTabChartsData);
|
||||
cardData = List.from(originalTabCardData);
|
||||
});
|
||||
selectedFiltersStorage.clear();
|
||||
formattedFilters = [];
|
||||
|
||||
print('locale22- $locale');
|
||||
final isDark =
|
||||
ref.watch(themeProvider) == ThemeMode.dark ||
|
||||
(ref.watch(themeProvider) ==
|
||||
ThemeMode.system &&
|
||||
MediaQuery.of(context)
|
||||
.platformBrightness ==
|
||||
Brightness.dark);
|
||||
final locale =
|
||||
ref.watch(localeProvider)?.languageCode ??
|
||||
'en';
|
||||
|
||||
final themeMode = (isDark ? 'dark' : 'light');
|
||||
fetchChartData(
|
||||
widget.dataSets,
|
||||
locale,
|
||||
tabWiseKpi, // Ensure you are passing the correct KPI here
|
||||
formattedFilters, // Pass the formatted filter data here
|
||||
themeMode);
|
||||
Navigator.pop(context);
|
||||
} else {
|
||||
setState(() {
|
||||
// isLoading = true;
|
||||
chartsData = originalTabChartsData;
|
||||
cardData = originalTabCardData;
|
||||
});
|
||||
print('locale22- $locale');
|
||||
final isDark = ref.watch(themeProvider) ==
|
||||
ThemeMode.dark ||
|
||||
(ref.watch(themeProvider) ==
|
||||
ThemeMode.system &&
|
||||
MediaQuery.of(context)
|
||||
.platformBrightness ==
|
||||
Brightness.dark);
|
||||
|
||||
applyFilters(context, filters, chartsData,
|
||||
cardData, selectedFilters);
|
||||
// selectedFiltersStorage = List.from(selectedFilters);
|
||||
final themeMode = (isDark ? 'dark' : 'light');
|
||||
fetchChartData(
|
||||
widget.dataSets,
|
||||
locale,
|
||||
tabWiseKpi, // Ensure you are passing the correct KPI here
|
||||
formattedFilters, // Pass the formatted filter data here
|
||||
themeMode);
|
||||
Navigator.pop(context);
|
||||
} else {
|
||||
setState(() {
|
||||
// isLoading = true;
|
||||
chartsData = originalTabChartsData;
|
||||
cardData = originalTabCardData;
|
||||
});
|
||||
|
||||
applyFilters(context, filters, chartsData,
|
||||
cardData, selectedFilters);
|
||||
// selectedFiltersStorage = List.from(selectedFilters);
|
||||
}
|
||||
}
|
||||
},
|
||||
style: ElevatedButton.styleFrom(
|
||||
@ -2121,6 +2168,13 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
||||
|
||||
void onTabSelected(String tabId) {
|
||||
print('Selected Tab on: $tabId');
|
||||
|
||||
// 🔹 Call clear ONLY if tab changed
|
||||
// if (_previousTabId != tabId) {
|
||||
// clear();
|
||||
// selectedFiltersStorage.clear();
|
||||
// }
|
||||
|
||||
tabWiseKpi = tabId;
|
||||
print('Selected Tab tabWiseKpi: $tabWiseKpi');
|
||||
|
||||
@ -3063,20 +3117,36 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
||||
// ConstrainedBox
|
||||
Container(
|
||||
height: () {
|
||||
final chartHeight = chartsData[index]['chart_height'];
|
||||
final chartType = chartsData[index]['chart_type_json']?['chart_type'];
|
||||
final responseLength = (chartsData[index]['response'] as List?)?.length ?? 0;
|
||||
final chartHeight =
|
||||
chartsData[index]
|
||||
['chart_height'];
|
||||
final chartType = chartsData[
|
||||
index]
|
||||
['chart_type_json']
|
||||
?['chart_type'];
|
||||
final responseLength =
|
||||
(chartsData[index][
|
||||
'response']
|
||||
as List?)
|
||||
?.length ??
|
||||
0;
|
||||
|
||||
if (chartType == 'horizontal_rotate') {
|
||||
if (chartType ==
|
||||
'horizontal_rotate') {
|
||||
// Base 350 + add 30 for each response item
|
||||
return chartHeight + (responseLength * 20.0);
|
||||
return chartHeight +
|
||||
(responseLength * 20.0);
|
||||
}
|
||||
|
||||
if (chartHeight == null || chartHeight == 0) {
|
||||
if (chartHeight == null ||
|
||||
chartHeight == 0) {
|
||||
return 350.0; // default
|
||||
}
|
||||
|
||||
return double.tryParse(chartHeight.toString()) ?? 350.0;
|
||||
return double.tryParse(
|
||||
chartHeight
|
||||
.toString()) ??
|
||||
350.0;
|
||||
}(),
|
||||
// height: (chartsData[index][
|
||||
// 'chart_height'] ==
|
||||
@ -3090,7 +3160,6 @@ class _ChartScreen1State extends ConsumerState<ChartScreen1> {
|
||||
// ['chart_height']
|
||||
// .toString()),
|
||||
|
||||
|
||||
// child: buildChart(chartsData[index]),
|
||||
child: ChartWidget(
|
||||
chartData:
|
||||
@ -3316,9 +3385,11 @@ class CardWidget extends StatelessWidget {
|
||||
Icon? valueIcon;
|
||||
if (!hideIcon && (response[0]['font_color'] ?? '').isNotEmpty) {
|
||||
if (response[0]['font_color'] == '#D83731') {
|
||||
valueIcon = const Icon(Icons.arrow_downward, color: Colors.red, size: 20);
|
||||
valueIcon =
|
||||
const Icon(Icons.arrow_downward, color: Colors.red, size: 20);
|
||||
} else if (response[0]['font_color'] == '#11AF22') {
|
||||
valueIcon = const Icon(Icons.arrow_upward, color: Colors.green, size: 20);
|
||||
valueIcon =
|
||||
const Icon(Icons.arrow_upward, color: Colors.green, size: 20);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
92
pubspec.lock
92
pubspec.lock
@ -516,10 +516,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: file_selector_macos
|
||||
sha256: "44f24d102e368370951b98ffe86c7325b38349e634578312976607d28cc6d747"
|
||||
sha256: "19124ff4a3d8864fdc62072b6a2ef6c222d55a3404fe14893a3c02744907b60c"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.9.4+6"
|
||||
version: "0.9.4+4"
|
||||
file_selector_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -654,10 +654,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: flutter_plugin_android_lifecycle
|
||||
sha256: "306f0596590e077338312f38837f595c04f28d6cdeeac392d3d74df2f0003687"
|
||||
sha256: c2fe1001710127dfa7da89977a08d591398370d099aacdaa6d44da7eb14b8476
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.0.32"
|
||||
version: "2.0.31"
|
||||
flutter_rating_bar:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -832,18 +832,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: google_sign_in_android
|
||||
sha256: eff4ad55abb5de68ef85f1eb9c372638e9b45bea14871cbe8fa8fa78c366335f
|
||||
sha256: "799165f4c0621ed233bccdded4c2e92739bc1fe73e970163b2f7493b301adad3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "7.2.5"
|
||||
version: "7.2.1"
|
||||
google_sign_in_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: google_sign_in_ios
|
||||
sha256: aee8bb29484611a37607849175a2009d423de6bd7c129326c69fd7068f0b6ed7
|
||||
sha256: d9d80f953a244a099a40df1ff6aadc10ee375e6a098bbd5d55be332ce26db18c
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.2.4"
|
||||
version: "6.2.1"
|
||||
google_sign_in_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -952,10 +952,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_android
|
||||
sha256: a1cd1584fae64f6ecca63113fd5450e3483c097cc05e43a2f073330f62adcabe
|
||||
sha256: "28f3987ca0ec702d346eae1d90eda59603a2101b52f1e234ded62cff1d5cfa6e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.13+8"
|
||||
version: "0.8.13+1"
|
||||
image_picker_for_web:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -968,10 +968,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_ios
|
||||
sha256: "997d100ce1dda5b1ba4085194c5e36c9f8a1fb7987f6a36ab677a344cd2dc986"
|
||||
sha256: eb06fe30bab4c4497bad449b66448f50edcc695f1c59408e78aa3a8059eb8f0e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.8.13+2"
|
||||
version: "0.8.13"
|
||||
image_picker_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -984,10 +984,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: image_picker_macos
|
||||
sha256: "86f0f15a309de7e1a552c12df9ce5b59fe927e71385329355aec4776c6a8ec91"
|
||||
sha256: d58cd9d67793d52beefd6585b12050af0a7663c0c2a6ece0fb110a35d6955e04
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.2.2+1"
|
||||
version: "0.2.2"
|
||||
image_picker_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1080,26 +1080,26 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker
|
||||
sha256: "33e2e26bdd85a0112ec15400c8cbffea70d0f9c3407491f672a2fad47915e2de"
|
||||
sha256: "6bb818ecbdffe216e81182c2f0714a2e62b593f4a4f13098713ff1685dfb6ab0"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "11.0.2"
|
||||
version: "10.0.9"
|
||||
leak_tracker_flutter_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_flutter_testing
|
||||
sha256: "1dbc140bb5a23c75ea9c4811222756104fbcd1a27173f0c34ca01e16bea473c1"
|
||||
sha256: f8b613e7e6a13ec79cfdc0e97638fddb3ab848452eff057653abd3edba760573
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.10"
|
||||
version: "3.0.9"
|
||||
leak_tracker_testing:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: leak_tracker_testing
|
||||
sha256: "8d5a2d49f4a66b49744b23b018848400d23e54caf9463f4eb20df3eb8acb2eb1"
|
||||
sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.0.2"
|
||||
version: "3.0.1"
|
||||
lints:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1248,18 +1248,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_android
|
||||
sha256: "95c68a74d3cab950fd0ed8073d9fab15c1c06eb1f3eec68676e87aabc9ecee5a"
|
||||
sha256: "3b4c1fc3aa55ddc9cd4aa6759984330d5c8e66aa7702a6223c61540dc6380c37"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.21"
|
||||
version: "2.2.19"
|
||||
path_provider_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: path_provider_foundation
|
||||
sha256: "97390a0719146c7c3e71b6866c34f1cde92685933165c1c671984390d2aca776"
|
||||
sha256: "16eef174aacb07e09c351502740fa6254c165757638eba1e9116b0a781201bbd"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.4"
|
||||
version: "2.4.2"
|
||||
path_provider_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1455,18 +1455,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_android
|
||||
sha256: "07d552dbe8e71ed720e5205e760438ff4ecfb76ec3b32ea664350e2ca4b0c43b"
|
||||
sha256: bd14436108211b0d4ee5038689a56d4ae3620fd72fd6036e113bf1345bc74d9e
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.4.16"
|
||||
version: "2.4.13"
|
||||
shared_preferences_foundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: shared_preferences_foundation
|
||||
sha256: "4e7eaffc2b17ba398759f1151415869a34771ba11ebbccd1b0145472a619a64f"
|
||||
sha256: "6a52cfcdaeac77cad8c97b539ff688ccfc458c007b4db12be584fbe5c0e49e03"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.5.6"
|
||||
version: "2.5.4"
|
||||
shared_preferences_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1603,10 +1603,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: test_api
|
||||
sha256: "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00"
|
||||
sha256: fb31f383e2ee25fbbfe06b40fe21e1e458d14080e3c67e7ba0acfde4df4e0bbd
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "0.7.6"
|
||||
version: "0.7.4"
|
||||
the_validator:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -1659,18 +1659,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_android
|
||||
sha256: dff5e50339bf30b06d7950b50fda58164d3d8c40042b104ed041ddc520fbff28
|
||||
sha256: "81777b08c498a292d93ff2feead633174c386291e35612f8da438d6e92c4447e"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.25"
|
||||
version: "6.3.20"
|
||||
url_launcher_ios:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_ios
|
||||
sha256: cfde38aa257dae62ffe79c87fab20165dfdf6988c1d31b58ebf59b9106062aad
|
||||
sha256: d80b3f567a617cb923546034cc94bfe44eb15f989fe670b37f26abdb9d939cb7
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "6.3.6"
|
||||
version: "6.3.4"
|
||||
url_launcher_linux:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1683,10 +1683,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: url_launcher_macos
|
||||
sha256: "368adf46f71ad3c21b8f06614adb38346f193f3a59ba8fe9a2fd74133070ba18"
|
||||
sha256: c043a77d6600ac9c38300567f33ef12b0ef4f4783a2c1f00231d2b1941fea13f
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "3.2.5"
|
||||
version: "3.2.3"
|
||||
url_launcher_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1747,10 +1747,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vector_math
|
||||
sha256: d530bd74fea330e6e364cda7a85019c434070188383e1cd8d9777ee586914c5b
|
||||
sha256: "80b3257d1492ce4d091729e3a67a60407d227c27241d6927be0130c98e741803"
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.2.0"
|
||||
version: "2.1.4"
|
||||
video_player:
|
||||
dependency: "direct main"
|
||||
description:
|
||||
@ -1763,18 +1763,18 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: video_player_android
|
||||
sha256: "36913f94430b474c4a9033d59b7552b800e736a8521e7166e84895ddcedd0b03"
|
||||
sha256: a8dc4324f67705de057678372bedb66cd08572fe7c495605ac68c5f503324a39
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.8.19"
|
||||
version: "2.8.15"
|
||||
video_player_avfoundation:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: video_player_avfoundation
|
||||
sha256: "6bced1739cf1f96f03058118adb8ac0dd6f96aa1a1a6e526424ab92fd2a6a77d"
|
||||
sha256: f9a780aac57802b2892f93787e5ea53b5f43cc57dc107bee9436458365be71cd
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "2.8.7"
|
||||
version: "2.8.4"
|
||||
video_player_platform_interface:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1795,10 +1795,10 @@ packages:
|
||||
dependency: transitive
|
||||
description:
|
||||
name: vm_service
|
||||
sha256: "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60"
|
||||
sha256: ddfa8d30d89985b96407efce8acbdd124701f96741f2d981ca860662f1c0dc02
|
||||
url: "https://pub.dev"
|
||||
source: hosted
|
||||
version: "15.0.2"
|
||||
version: "15.0.0"
|
||||
watcher:
|
||||
dependency: transitive
|
||||
description:
|
||||
@ -1872,5 +1872,5 @@ packages:
|
||||
source: hosted
|
||||
version: "3.1.3"
|
||||
sdks:
|
||||
dart: ">=3.9.0 <4.0.0"
|
||||
flutter: ">=3.35.0"
|
||||
dart: ">=3.8.0 <4.0.0"
|
||||
flutter: ">=3.32.0"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user