From fb12c445057b541f64a883099ac2ebfd403c255b Mon Sep 17 00:00:00 2001 From: anhtunz Date: Sun, 5 Jan 2025 18:48:11 +0700 Subject: [PATCH] chore(deps): upgrade Flutter SDK from 3.10.1 to 3.27.1 - Update Flutter SDK version to 3.27.1 - Update minimum dart SDK version - Update dependencies to compatible versions - Fix deprecated method calls - Run migration for breaking changes --- android/build.gradle | 13 +- .../gradle/wrapper/gradle-wrapper.properties | 2 +- .../auth/login/screen/login_screen.dart | 4 +- .../device_log/device_logs_screen.dart | 30 ++-- .../device_detail/device_detail_screen.dart | 7 +- lib/feature/devices/device_model.dart | 2 +- .../device_update/device_update_screen.dart | 8 +- .../devices/devices_manager_screen.dart | 11 +- lib/feature/home/shared/alert_card.dart | 2 +- lib/feature/home/shared/status_card.dart | 2 +- lib/feature/home/shared/warning_card.dart | 6 +- .../group_detail/group_detail_screen.dart | 33 +++-- .../inter_family/groups/groups_screen.dart | 137 +++++++++--------- .../inter_family/groups/groups_widget.dart | 2 +- lib/feature/main/main_bloc.dart | 2 - lib/feature/main/main_screen.dart | 27 ++-- lib/feature/map/map_screen.dart | 2 +- .../map/widget/on_tap_marker_widget.dart | 14 +- .../map/widget/show_direction_widget.dart | 2 +- .../map/widget/show_nearest_place.dart | 4 +- .../device_notification_settings_screen.dart | 4 +- .../settings/profile/profile_screen.dart | 8 +- lib/main.dart | 2 +- lib/product/lang/l10n/app_en.arb | 1 + lib/product/lang/l10n/app_vi.arb | 1 + lib/product/services/api_services.dart | 2 - .../shared_map_search_location.dart | 2 +- lib/product/shared/shared_line_chart.dart | 8 +- pubspec.lock | 126 ++++++++++------ pubspec.yaml | 14 +- 30 files changed, 266 insertions(+), 212 deletions(-) diff --git a/android/build.gradle b/android/build.gradle index 164baa5..5107ad1 100644 --- a/android/build.gradle +++ b/android/build.gradle @@ -9,7 +9,7 @@ buildscript { // START: FlutterFire Configuration classpath 'com.google.gms:google-services:4.3.15' // END: FlutterFire Configuration - classpath 'com.android.tools.build:gradle:7.3.1' + classpath 'com.android.tools.build:gradle:8.2.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } } @@ -19,6 +19,17 @@ allprojects { google() mavenCentral() } + subprojects { + afterEvaluate { project -> + if (project.hasProperty('android')) { + project.android { + if (namespace == null) { + namespace project.group + } + } + } + } + } } rootProject.buildDir = '../build' diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 3c472b9..b5fc5a7 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-all.zip diff --git a/lib/feature/auth/login/screen/login_screen.dart b/lib/feature/auth/login/screen/login_screen.dart index a153e93..0bafef4 100644 --- a/lib/feature/auth/login/screen/login_screen.dart +++ b/lib/feature/auth/login/screen/login_screen.dart @@ -149,9 +149,9 @@ class _LoginScreenState extends State { ElevatedButton( style: const ButtonStyle( backgroundColor: - MaterialStatePropertyAll(Colors.blue), + WidgetStatePropertyAll(Colors.blue), foregroundColor: - MaterialStatePropertyAll(Colors.white), + WidgetStatePropertyAll(Colors.white), ), onPressed: () { validate(); diff --git a/lib/feature/device_log/device_logs_screen.dart b/lib/feature/device_log/device_logs_screen.dart index d40adf4..3f666c0 100644 --- a/lib/feature/device_log/device_logs_screen.dart +++ b/lib/feature/device_log/device_logs_screen.dart @@ -3,15 +3,15 @@ import 'dart:developer'; import 'package:dropdown_button2/dropdown_button2.dart'; import 'package:flutter/material.dart'; import 'package:intl/intl.dart'; -import 'package:sfm_app/feature/device_log/widgets/tag_widget.dart'; -import 'package:sfm_app/feature/devices/device_model.dart'; -import 'package:sfm_app/feature/device_log/device_logs_bloc.dart'; -import 'package:sfm_app/product/constant/icon/icon_constants.dart'; -import 'package:sfm_app/product/extention/context_extention.dart'; -import 'package:sfm_app/product/services/language_services.dart'; -import 'package:sfm_app/product/shared/shared_snack_bar.dart'; -import 'package:sfm_app/product/utils/date_time_utils.dart'; -import 'package:sfm_app/product/utils/device_utils.dart'; +import 'widgets/tag_widget.dart'; +import '../devices/device_model.dart'; +import 'device_logs_bloc.dart'; +import '../../product/constant/icon/icon_constants.dart'; +import '../../product/extention/context_extention.dart'; +import '../../product/services/language_services.dart'; +import '../../product/shared/shared_snack_bar.dart'; +import '../../product/utils/date_time_utils.dart'; +import '../../product/utils/device_utils.dart'; import '../../product/base/bloc/base_bloc.dart'; import 'device_logs_model.dart'; @@ -178,10 +178,10 @@ class _DeviceLogsScreenState extends State { Center( child: TextButton.icon( style: const ButtonStyle( - backgroundColor: MaterialStatePropertyAll( - Colors.green), - foregroundColor: MaterialStatePropertyAll( - Colors.white), + backgroundColor: + WidgetStatePropertyAll(Colors.green), + foregroundColor: + WidgetStatePropertyAll(Colors.white), ), onPressed: () { if (fromDateApi.isEmpty) { @@ -278,7 +278,7 @@ class _DeviceLogsScreenState extends State { ListTile( subtitle: Text(DeviceUtils.instance.getDeviceSensorsLog(context, sensor)), - leading: leadingList(sensor), + // leading: leadingList(sensor), title: Text( DateTimeUtils.instance .convertCurrentMillisToDateTimeString(sensor.time ?? 0), @@ -310,7 +310,7 @@ class _DeviceLogsScreenState extends State { content = "Điều khiển"; } else { boxColor = Colors.lightGreen; - content = "Sự kiện"; + content = appLocalization(context).event_tag_title; } return TagWidgetShared( diff --git a/lib/feature/devices/device_detail/device_detail_screen.dart b/lib/feature/devices/device_detail/device_detail_screen.dart index f9aa4b8..97c89a3 100644 --- a/lib/feature/devices/device_detail/device_detail_screen.dart +++ b/lib/feature/devices/device_detail/device_detail_screen.dart @@ -59,10 +59,10 @@ class _DetailDeviceScreenState extends State { BoxDecoration boxDecoration = BoxDecoration( borderRadius: BorderRadius.circular(15), - color: Colors.grey.withOpacity(0.1), + color: Colors.grey.withValues(alpha: 0.1), border: Border.all( width: 1, - color: Colors.grey.withOpacity(0.6), + color: Colors.grey.withValues(alpha: 0.6), ), ); @@ -439,7 +439,8 @@ class _DetailDeviceScreenState extends State { width: double.infinity, height: 20, decoration: BoxDecoration( - color: Colors.grey.withOpacity(0.3), + color: Colors.grey + .withValues(alpha: 0.3), borderRadius: BorderRadius.circular(10), ), diff --git a/lib/feature/devices/device_model.dart b/lib/feature/devices/device_model.dart index a58cf8a..6f648e9 100644 --- a/lib/feature/devices/device_model.dart +++ b/lib/feature/devices/device_model.dart @@ -1,4 +1,4 @@ -import 'package:google_maps_cluster_manager/google_maps_cluster_manager.dart'; +import 'package:google_maps_cluster_manager_2/google_maps_cluster_manager_2.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; // class Device { diff --git a/lib/feature/devices/device_update/device_update_screen.dart b/lib/feature/devices/device_update/device_update_screen.dart index 2d8ffbb..d8c3aef 100644 --- a/lib/feature/devices/device_update/device_update_screen.dart +++ b/lib/feature/devices/device_update/device_update_screen.dart @@ -187,7 +187,7 @@ class _DeviceUpdateScreenState extends State { child: IconButton.filled( style: const ButtonStyle( backgroundColor: - MaterialStatePropertyAll( + WidgetStatePropertyAll( Colors .lightGreen)), // iconSize: 24, @@ -379,7 +379,7 @@ class _DeviceUpdateScreenState extends State { decoration: BoxDecoration( borderRadius: const BorderRadius - .all( + .all( Radius.circular( 20)), border: Border.all()), @@ -429,11 +429,11 @@ class _DeviceUpdateScreenState extends State { child: TextButton( style: ButtonStyle( foregroundColor: - MaterialStateProperty + WidgetStateProperty .all(Colors .white), backgroundColor: - MaterialStateProperty + WidgetStateProperty .all(Colors .blue)), onPressed: () async { diff --git a/lib/feature/devices/devices_manager_screen.dart b/lib/feature/devices/devices_manager_screen.dart index 704fdf1..da0e56e 100644 --- a/lib/feature/devices/devices_manager_screen.dart +++ b/lib/feature/devices/devices_manager_screen.dart @@ -51,7 +51,7 @@ class _DevicesManagerScreenState extends State { @override Widget build(BuildContext context) { return Scaffold( - // backgroundColor: Colors.grey.withOpacity(0.6), + // backgroundColor: Colors.grey.withValues(alpha: 0.6), body: SafeArea( child: StreamBuilder>( stream: devicesManagerBloc.streamAllDevices, @@ -138,11 +138,10 @@ class _DevicesManagerScreenState extends State { IconButton( style: ButtonStyle( backgroundColor: - MaterialStateProperty.all( + WidgetStateProperty.all( Colors.green), - iconColor: - MaterialStateProperty.all( - Colors.white)), + iconColor: WidgetStateProperty.all( + Colors.white)), onPressed: () { ScaffoldMessenger.of(context) .clearSnackBars(); @@ -163,7 +162,7 @@ class _DevicesManagerScreenState extends State { ), SizedBox(height: context.lowValue), Text( - appLocalization(context).overview_message, + appLocalization(context).overview_message, style: const TextStyle( fontSize: 20, fontWeight: FontWeight.bold, diff --git a/lib/feature/home/shared/alert_card.dart b/lib/feature/home/shared/alert_card.dart index f4f7cbf..b5551cc 100644 --- a/lib/feature/home/shared/alert_card.dart +++ b/lib/feature/home/shared/alert_card.dart @@ -113,7 +113,7 @@ Future notificationCard( alignment: Alignment.centerRight, child: OutlinedButton( style: const ButtonStyle( - backgroundColor: MaterialStatePropertyAll(Colors.blueAccent)), + backgroundColor: WidgetStatePropertyAll(Colors.blueAccent)), onPressed: () {}, child: Text( appLocalization(context).detail_message, diff --git a/lib/feature/home/shared/status_card.dart b/lib/feature/home/shared/status_card.dart index 54ab04e..5216c1b 100644 --- a/lib/feature/home/shared/status_card.dart +++ b/lib/feature/home/shared/status_card.dart @@ -15,7 +15,7 @@ class StatusCard extends StatelessWidget { Widget build(BuildContext context) { return Container( decoration: BoxDecoration( - color: color.withOpacity(0.2), + color: color.withValues(alpha: 0.2), borderRadius: BorderRadius.circular(10), border: Border.all( color: color, diff --git a/lib/feature/home/shared/warning_card.dart b/lib/feature/home/shared/warning_card.dart index 4fff4ae..db44de8 100644 --- a/lib/feature/home/shared/warning_card.dart +++ b/lib/feature/home/shared/warning_card.dart @@ -148,7 +148,7 @@ Future warningCard( iconSize: 25, style: ButtonStyle( backgroundColor: - MaterialStateProperty.all(Colors.blue[300]!), + WidgetStateProperty.all(Colors.blue[300]!), ), ), const SizedBox(width: 10), @@ -164,7 +164,7 @@ Future warningCard( iconSize: 25, style: ButtonStyle( backgroundColor: - MaterialStateProperty.all(Colors.blue[300]!), + WidgetStateProperty.all(Colors.blue[300]!), ), ), SizedBox(width: context.mediumValue), @@ -174,7 +174,7 @@ Future warningCard( child: OutlinedButton( style: ButtonStyle( backgroundColor: - MaterialStatePropertyAll(backgroundColor)), + WidgetStatePropertyAll(backgroundColor)), onPressed: () async { if (message == appLocalization(context).button_fake_fire_message) { diff --git a/lib/feature/inter_family/group_detail/group_detail_screen.dart b/lib/feature/inter_family/group_detail/group_detail_screen.dart index 4e48749..a894eff 100644 --- a/lib/feature/inter_family/group_detail/group_detail_screen.dart +++ b/lib/feature/inter_family/group_detail/group_detail_screen.dart @@ -335,8 +335,8 @@ class _DetailGroupScreenState extends State { ); }, style: const ButtonStyle( - backgroundColor: MaterialStatePropertyAll(Colors.red), - foregroundColor: MaterialStatePropertyAll(Colors.white), + backgroundColor: WidgetStatePropertyAll(Colors.red), + foregroundColor: WidgetStatePropertyAll(Colors.white), ), child: Text( appLocalization(context).delete_group_title, @@ -383,7 +383,8 @@ class _DetailGroupScreenState extends State { child: Text( appLocalization(context) .confirm_button_content, - style: const TextStyle(color: Colors.red), + style: const TextStyle( + color: Colors.red), )) ], ); @@ -391,8 +392,8 @@ class _DetailGroupScreenState extends State { }); }, style: const ButtonStyle( - backgroundColor: MaterialStatePropertyAll(Colors.red), - foregroundColor: MaterialStatePropertyAll(Colors.white), + backgroundColor: WidgetStatePropertyAll(Colors.red), + foregroundColor: WidgetStatePropertyAll(Colors.white), ), child: Text( appLocalization(context).leave_group_title, @@ -437,16 +438,19 @@ class _DetailGroupScreenState extends State { itemCount: devices.length, itemBuilder: (BuildContext context, int index) { return ListTile( - title: Text(devices[index].alias != "" - ? devices[index].alias! - : devices[index].name!,), + title: Text( + devices[index].alias != "" + ? devices[index].alias! + : devices[index].name!, + ), trailing: Text( DeviceUtils.instance.checkStateDevice( context, devices[index].state!), style: TextStyle( - color: DeviceUtils.instance - .getTableRowColor( - devices[index].state!,),), + color: DeviceUtils.instance.getTableRowColor( + devices[index].state!, + ), + ), ), ); }, @@ -454,7 +458,8 @@ class _DetailGroupScreenState extends State { ), ], ); - },), + }, + ), ), ); } @@ -500,8 +505,8 @@ class _DetailGroupScreenState extends State { Center( child: TextButton( style: const ButtonStyle( - foregroundColor: MaterialStatePropertyAll(Colors.white), - backgroundColor: MaterialStatePropertyAll(Colors.green)), + foregroundColor: WidgetStatePropertyAll(Colors.white), + backgroundColor: WidgetStatePropertyAll(Colors.green)), onPressed: () async { ScaffoldMessenger.of(context).hideCurrentSnackBar(); String alias = aliasController.text; diff --git a/lib/feature/inter_family/groups/groups_screen.dart b/lib/feature/inter_family/groups/groups_screen.dart index fbffa89..501260f 100644 --- a/lib/feature/inter_family/groups/groups_screen.dart +++ b/lib/feature/inter_family/groups/groups_screen.dart @@ -1,3 +1,5 @@ +// ignore_for_file: use_build_context_synchronously + import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; @@ -36,74 +38,75 @@ class _GroupsScreenState extends State { widget.role == ApplicationConstants.PARTICIPANT_GROUP) { interFamilyBloc.getAllGroup(widget.role); return StreamBuilder>( - stream: interFamilyBloc.streamCurrentGroups, - builder: (context, groupsSnapshot) { - return Scaffold( - body: groupsSnapshot.data?.isEmpty ?? true - ? const Center( - child: CircularProgressIndicator(), - ) - : ListView.builder( - itemCount: groupsSnapshot.data!.length, - itemBuilder: (context, index) { - return ListTile( - onTap: () { - context.pushNamed(AppRoutes.GROUP_DETAIL.name, - pathParameters: { - "groupId": groupsSnapshot.data![index].id! - }, - extra: widget.role); - }, - leading: IconConstants.instance - .getMaterialIcon(Icons.diversity_2), - title: Text( - groupsSnapshot.data![index].name ?? '', - style: const TextStyle(fontWeight: FontWeight.bold), - ), - subtitle: Text( - groupsSnapshot.data![index].description ?? ""), - trailing: - widget.role == ApplicationConstants.OWNER_GROUP - ? PopupMenuButton( - shape: const RoundedRectangleBorder( - borderRadius: BorderRadius.only( - bottomLeft: Radius.circular(8.0), - bottomRight: Radius.circular(8.0), - topLeft: Radius.circular(8.0), - topRight: Radius.circular(8.0), - ), + stream: interFamilyBloc.streamCurrentGroups, + builder: (context, groupsSnapshot) { + return Scaffold( + body: groupsSnapshot.data?.isEmpty ?? true + ? const Center( + child: CircularProgressIndicator(), + ) + : ListView.builder( + itemCount: groupsSnapshot.data!.length, + itemBuilder: (context, index) { + return ListTile( + onTap: () { + context.pushNamed(AppRoutes.GROUP_DETAIL.name, + pathParameters: { + "groupId": groupsSnapshot.data![index].id! + }, + extra: widget.role); + }, + leading: IconConstants.instance + .getMaterialIcon(Icons.diversity_2), + title: Text( + groupsSnapshot.data![index].name ?? '', + style: const TextStyle(fontWeight: FontWeight.bold), + ), + subtitle: + Text(groupsSnapshot.data![index].description ?? ""), + trailing: + widget.role == ApplicationConstants.OWNER_GROUP + ? PopupMenuButton( + shape: const RoundedRectangleBorder( + borderRadius: BorderRadius.only( + bottomLeft: Radius.circular(8.0), + bottomRight: Radius.circular(8.0), + topLeft: Radius.circular(8.0), + topRight: Radius.circular(8.0), ), - itemBuilder: (ctx) => [ - _buildPopupMenuItem( - groupsSnapshot.data![index], - context, - appLocalization(context) - .share_group_title, - Icons.share, - 4), - _buildPopupMenuItem( - groupsSnapshot.data![index], - context, - appLocalization(context) - .change_group_infomation_title, - Icons.settings_backup_restore, - 2), - _buildPopupMenuItem( - groupsSnapshot.data![index], - context, - appLocalization(context) - .delete_group_title, - Icons.delete_forever_rounded, - 3), - ], - icon: const Icon(Icons.more_horiz), - ) - : const SizedBox.shrink(), - ); - }, - ), - ); - }); + ), + itemBuilder: (ctx) => [ + _buildPopupMenuItem( + groupsSnapshot.data![index], + context, + appLocalization(context) + .share_group_title, + Icons.share, + 4), + _buildPopupMenuItem( + groupsSnapshot.data![index], + context, + appLocalization(context) + .change_group_infomation_title, + Icons.settings_backup_restore, + 2), + _buildPopupMenuItem( + groupsSnapshot.data![index], + context, + appLocalization(context) + .delete_group_title, + Icons.delete_forever_rounded, + 3), + ], + icon: const Icon(Icons.more_horiz), + ) + : const SizedBox.shrink(), + ); + }, + ), + ); + }, + ); } else { return const SizedBox.shrink(); } diff --git a/lib/feature/inter_family/groups/groups_widget.dart b/lib/feature/inter_family/groups/groups_widget.dart index f23d70a..621d059 100644 --- a/lib/feature/inter_family/groups/groups_widget.dart +++ b/lib/feature/inter_family/groups/groups_widget.dart @@ -9,7 +9,7 @@ import 'groups_model.dart'; shareGroup(BuildContext context, Group group) { showGeneralDialog( - barrierColor: Colors.black.withOpacity(0.5), + barrierColor: Colors.black.withValues(alpha: 0.5), transitionBuilder: (context, a1, a2, widget) { return Material( child: Scaffold( diff --git a/lib/feature/main/main_bloc.dart b/lib/feature/main/main_bloc.dart index 74b415a..a38a62b 100644 --- a/lib/feature/main/main_bloc.dart +++ b/lib/feature/main/main_bloc.dart @@ -2,8 +2,6 @@ import 'dart:async'; import 'package:flutter/material.dart'; import 'package:sfm_app/product/base/bloc/base_bloc.dart'; -import 'package:sfm_app/product/constant/enums/app_theme_enums.dart'; - import '../bell/bell_model.dart'; class MainBloc extends BlocBase { diff --git a/lib/feature/main/main_screen.dart b/lib/feature/main/main_screen.dart index 0753dff..f37e563 100644 --- a/lib/feature/main/main_screen.dart +++ b/lib/feature/main/main_screen.dart @@ -5,8 +5,9 @@ import 'dart:developer'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; import 'package:go_router/go_router.dart'; -import 'package:persistent_bottom_nav_bar_v2/persistent-tab-view.dart'; +// import 'package:persistent_bottom_nav_bar_v2/persistent-tab-view.dart'; import 'package:badges/badges.dart' as badges; +import 'package:persistent_bottom_nav_bar/persistent_bottom_nav_bar.dart'; import '../home/home_bloc.dart'; import '../../product/constant/app/app_constants.dart'; import '../../product/constant/enums/app_route_enums.dart'; @@ -336,11 +337,11 @@ class _MainScreenState extends State with WidgetsBindingObserver { controller: controller, screens: _buildScreens(), items: _navBarsItems(), - confineInSafeArea: true, + // confineInSafeArea: true, handleAndroidBackButtonPress: true, resizeToAvoidBottomInset: true, stateManagement: true, - hideNavigationBarWhenKeyboardShows: true, + // hideNavigationBarWhenKeyboardShows: true, backgroundColor: themeModeSnapshot.data! ? Colors.white : Colors.black, decoration: NavBarDecoration( @@ -348,16 +349,16 @@ class _MainScreenState extends State with WidgetsBindingObserver { colorBehindNavBar: themeModeSnapshot.data! ? Colors.white : Colors.black, ), - popAllScreensOnTapOfSelectedTab: true, - itemAnimationProperties: const ItemAnimationProperties( - duration: Duration(milliseconds: 200), - curve: Curves.bounceInOut, - ), - screenTransitionAnimation: const ScreenTransitionAnimation( - animateTabTransition: true, - curve: Curves.linear, - duration: Duration(milliseconds: 200), - ), + // popAllScreensOnTapOfSelectedTab: true, + // itemAnimationProperties: const ItemAnimationProperties( + // duration: Duration(milliseconds: 200), + // curve: Curves.bounceInOut, + // ), + // screenTransitionAnimation: const ScreenTransitionAnimation( + // animateTabTransition: true, + // curve: Curves.linear, + // duration: Duration(milliseconds: 200), + // ), navBarStyle: NavBarStyle.style4, ), ); diff --git a/lib/feature/map/map_screen.dart b/lib/feature/map/map_screen.dart index 4f7828d..e62e052 100644 --- a/lib/feature/map/map_screen.dart +++ b/lib/feature/map/map_screen.dart @@ -4,7 +4,7 @@ import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:geolocator/geolocator.dart'; -import 'package:google_maps_cluster_manager/google_maps_cluster_manager.dart'; +import 'package:google_maps_cluster_manager_2/google_maps_cluster_manager_2.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; import 'package:sfm_app/feature/devices/device_model.dart'; import 'package:sfm_app/feature/map/map_bloc.dart'; diff --git a/lib/feature/map/widget/on_tap_marker_widget.dart b/lib/feature/map/widget/on_tap_marker_widget.dart index ac429dd..57d715e 100644 --- a/lib/feature/map/widget/on_tap_marker_widget.dart +++ b/lib/feature/map/widget/on_tap_marker_widget.dart @@ -94,8 +94,8 @@ onTapMarker( ); }, style: const ButtonStyle( - backgroundColor: MaterialStatePropertyAll(Colors.blue), - foregroundColor: MaterialStatePropertyAll(Colors.white), + backgroundColor: WidgetStatePropertyAll(Colors.blue), + foregroundColor: WidgetStatePropertyAll(Colors.white), ), child: Row( children: [ @@ -127,8 +127,8 @@ onTapMarker( ); }, style: const ButtonStyle( - backgroundColor: MaterialStatePropertyAll(Colors.pink), - foregroundColor: MaterialStatePropertyAll(Colors.white), + backgroundColor: WidgetStatePropertyAll(Colors.pink), + foregroundColor: WidgetStatePropertyAll(Colors.white), ), icon: IconConstants.instance .getMaterialIcon(Icons.local_hospital), @@ -156,8 +156,8 @@ onTapMarker( ); }, style: const ButtonStyle( - backgroundColor: MaterialStatePropertyAll(Colors.red), - foregroundColor: MaterialStatePropertyAll(Colors.white), + backgroundColor: WidgetStatePropertyAll(Colors.red), + foregroundColor: WidgetStatePropertyAll(Colors.white), ), icon: IconConstants.instance .getMaterialIcon(Icons.fire_truck_outlined), @@ -279,7 +279,7 @@ class DeviceSource extends DataTableSource { String deviceState = DeviceUtils.instance.checkStateDevice(context, device.state!); return DataRow.byIndex( - color: MaterialStatePropertyAll( + color: WidgetStatePropertyAll( DeviceUtils.instance.getTableRowColor(device.state ?? -1), ), index: index, diff --git a/lib/feature/map/widget/show_direction_widget.dart b/lib/feature/map/widget/show_direction_widget.dart index 2d9ab49..a1757ed 100644 --- a/lib/feature/map/widget/show_direction_widget.dart +++ b/lib/feature/map/widget/show_direction_widget.dart @@ -112,7 +112,7 @@ showDirections( ), style: ButtonStyle( backgroundColor: - MaterialStateProperty.all(Colors.blue[300]!), + WidgetStateProperty.all(Colors.blue[300]!), ), ), ], diff --git a/lib/feature/map/widget/show_nearest_place.dart b/lib/feature/map/widget/show_nearest_place.dart index beab93a..ffe3658 100644 --- a/lib/feature/map/widget/show_nearest_place.dart +++ b/lib/feature/map/widget/show_nearest_place.dart @@ -158,9 +158,9 @@ showNearPlacesSideSheet( child: ElevatedButton.icon( style: const ButtonStyle( backgroundColor: - MaterialStatePropertyAll(Colors.blue), + WidgetStatePropertyAll(Colors.blue), foregroundColor: - MaterialStatePropertyAll(Colors.white), + WidgetStatePropertyAll(Colors.white), ), onPressed: () async { Navigator.pop(modalBottomSheetContext); diff --git a/lib/feature/settings/device_notification_settings/device_notification_settings_screen.dart b/lib/feature/settings/device_notification_settings/device_notification_settings_screen.dart index 9054e03..0f0c3c7 100644 --- a/lib/feature/settings/device_notification_settings/device_notification_settings_screen.dart +++ b/lib/feature/settings/device_notification_settings/device_notification_settings_screen.dart @@ -221,10 +221,10 @@ class _DeviceNotificationSettingsScreenState child: TextButton( style: ButtonStyle( backgroundColor: - MaterialStateProperty.all( + WidgetStateProperty.all( Colors.green), foregroundColor: - MaterialStateProperty.all( + WidgetStateProperty.all( Colors.white)), onPressed: () async { updateDeviceNotification( diff --git a/lib/feature/settings/profile/profile_screen.dart b/lib/feature/settings/profile/profile_screen.dart index b72780d..648e39b 100644 --- a/lib/feature/settings/profile/profile_screen.dart +++ b/lib/feature/settings/profile/profile_screen.dart @@ -238,9 +238,9 @@ changeUserInfomation( }, style: const ButtonStyle( backgroundColor: - MaterialStatePropertyAll(Colors.blue), + WidgetStatePropertyAll(Colors.blue), foregroundColor: - MaterialStatePropertyAll(Colors.white), + WidgetStatePropertyAll(Colors.white), ), child: Text(appLocalization(context) .update_button_content), @@ -418,9 +418,9 @@ changeUserPassword(BuildContext context, SettingsBloc settingsBloc) { }, style: const ButtonStyle( backgroundColor: - MaterialStatePropertyAll(Colors.blue), + WidgetStatePropertyAll(Colors.blue), foregroundColor: - MaterialStatePropertyAll(Colors.white), + WidgetStatePropertyAll(Colors.white), ), child: Text(appLocalization(context) .update_button_content), diff --git a/lib/main.dart b/lib/main.dart index 1219cec..7461d2b 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,6 +1,6 @@ import 'package:firebase_core/firebase_core.dart'; import 'package:flutter/material.dart'; -import 'package:sfm_app/product/services/theme_services.dart'; +import 'product/services/theme_services.dart'; import 'product/services/language_services.dart'; import 'feature/main/main_bloc.dart'; import 'product/base/bloc/base_bloc.dart'; diff --git a/lib/product/lang/l10n/app_en.arb b/lib/product/lang/l10n/app_en.arb index c70ce35..b71f80d 100644 --- a/lib/product/lang/l10n/app_en.arb +++ b/lib/product/lang/l10n/app_en.arb @@ -78,6 +78,7 @@ "choose_date_start_datePicker": "Start from", "choose_date_end_datePicker": "End", "main_no_data": "No data yet.", + "event_tag_title": "Event", "description_NOTUSE3": "This is english language in InterFamily", "interfamily_page_name": "InterFamily", "my_group_title": "My group", diff --git a/lib/product/lang/l10n/app_vi.arb b/lib/product/lang/l10n/app_vi.arb index ab21783..b379d64 100644 --- a/lib/product/lang/l10n/app_vi.arb +++ b/lib/product/lang/l10n/app_vi.arb @@ -78,6 +78,7 @@ "choose_date_start_datePicker": "Bắt đầu từ", "choose_date_end_datePicker": "Kết thúc", "main_no_data": "Chưa có dữ liệu.", + "event_tag_title": "Sự kiện", "description_NOTUSE3": "This is vietnamese language in InterFamily", "interfamily_page_name": "Liên gia", "my_group_title": "Group của tôi", diff --git a/lib/product/services/api_services.dart b/lib/product/services/api_services.dart index e6fe8fa..0d6c3be 100644 --- a/lib/product/services/api_services.dart +++ b/lib/product/services/api_services.dart @@ -381,6 +381,4 @@ class APIServices { .getDataFromServerWithParams(APIPathConstants.DEVICE_LOGS_PATH, params); return body; } - - } diff --git a/lib/product/shared/find_location_maps/shared_map_search_location.dart b/lib/product/shared/find_location_maps/shared_map_search_location.dart index 72b4782..63c570b 100644 --- a/lib/product/shared/find_location_maps/shared_map_search_location.dart +++ b/lib/product/shared/find_location_maps/shared_map_search_location.dart @@ -151,7 +151,7 @@ class _NearBySearchSFMState PlacesAutocompleteResponse subscriptionResponse = PlacesAutocompleteResponse.fromJson(response.data); - if (text.length == 0) { + if (text.isEmpty) { alPredictions.clear(); this._overlayEntry!.remove(); return; diff --git a/lib/product/shared/shared_line_chart.dart b/lib/product/shared/shared_line_chart.dart index 23d8a96..5999e0f 100644 --- a/lib/product/shared/shared_line_chart.dart +++ b/lib/product/shared/shared_line_chart.dart @@ -39,7 +39,7 @@ Widget sharedLineChart(String chartName, List sensors) { ), lineTouchData: LineTouchData( touchTooltipData: LineTouchTooltipData( - tooltipBgColor: Colors.grey.withOpacity(0.3), + tooltipBgColor: Colors.grey.withValues(alpha: 0.3), getTooltipItems: (List touchedSpots) { return touchedSpots.map((spot) { final index = spot.x.toInt(); @@ -55,7 +55,7 @@ Widget sharedLineChart(String chartName, List sensors) { ), lineBarsData: [ LineChartBarData( - color: Colors.green.withOpacity(0.8), + color: Colors.green.withValues(alpha: 0.8), barWidth: 5, curveSmoothness: 0.35, spots: sensors @@ -74,7 +74,7 @@ Widget sharedLineChart(String chartName, List sensors) { ), belowBarData: BarAreaData( show: true, - color: Colors.green.withOpacity(0.2), + color: Colors.green.withValues(alpha: 0.2), ), ) ], @@ -85,7 +85,7 @@ Widget sharedLineChart(String chartName, List sensors) { right: BorderSide.none, left: BorderSide.none, bottom: BorderSide( - color: Colors.black.withOpacity(0.7), + color: Colors.black.withValues(alpha: 0.7), ), ), ), diff --git a/pubspec.lock b/pubspec.lock index 8e528ae..c244a08 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -69,10 +69,10 @@ packages: dependency: transitive description: name: collection - sha256: "4a07be6cb69c84d677a6c3096fcf960cc3285a8330b4603e0d463d15d9bd934c" + sha256: a1ace0a119f20aabc852d165077c036cd864315bd99b7eaa10a60100341941bf url: "https://pub.dev" source: hosted - version: "1.17.1" + version: "1.19.0" crypto: dependency: transitive description: @@ -149,10 +149,10 @@ packages: dependency: transitive description: name: ffi - sha256: "7bf0adc28a23d395f19f3f1eb21dd7cfd1dd9f8e1c50051c069122e6853bc878" + sha256: "16ed7b077ef01ad6170a3d0c57caa4a112a38d7a2ed5602e0aca9ca6f3d98da6" url: "https://pub.dev" source: hosted - version: "2.1.0" + version: "2.1.3" file: dependency: transitive description: @@ -221,18 +221,18 @@ packages: dependency: "direct main" description: name: flex_color_scheme - sha256: "659cf59bd5ccaa1e7de9384342be8b666ff10b108ed57a7fd46c122fb8bf6aca" + sha256: "09bea5d776f694c5a67f2229f2aa500cc7cce369322dc6500ab01cf9ad1b4e1a" url: "https://pub.dev" source: hosted - version: "7.2.0" + version: "8.1.0" flex_seed_scheme: dependency: transitive description: name: flex_seed_scheme - sha256: "29c12aba221eb8a368a119685371381f8035011d18de5ba277ad11d7dfb8657f" + sha256: d3ba3c5c92d2d79d45e94b4c6c71d01fac3c15017da1545880c53864da5dfeb0 url: "https://pub.dev" source: hosted - version: "1.4.0" + version: "3.5.0" flutter: dependency: "direct main" description: flutter @@ -373,14 +373,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.3.0" - google_maps_cluster_manager: + google_maps_cluster_manager_2: dependency: "direct main" description: - name: google_maps_cluster_manager - sha256: "36e9a4b2d831c470fc85d692a6c9cec70e0f385d578b9697de5f4de347561b83" + name: google_maps_cluster_manager_2 + sha256: acf31c2bcc175c953c4f4085ef3be53d7e592f417106fb2067950e821da4fe75 url: "https://pub.dev" source: hosted - version: "3.1.0" + version: "3.2.0" google_maps_flutter: dependency: "direct main" description: @@ -409,10 +409,10 @@ packages: dependency: transitive description: name: google_maps_flutter_platform_interface - sha256: "6060779f020638a8eedeb0fb14234818e5fa32ec45a4653d6428ab436e2bbc64" + sha256: a951981c22d790848efb9f114f81794945bc5c06bc566238a419a92f110af6cb url: "https://pub.dev" source: hosted - version: "2.4.3" + version: "2.9.5" google_maps_flutter_web: dependency: transitive description: @@ -449,10 +449,10 @@ packages: dependency: "direct main" description: name: intl - sha256: a3715e3bc90294e971cb7dc063fbf3cd9ee0ebf8604ffeafabd9e6f16abbdbe6 + sha256: d6f56758b7d3014a48af9701c085700aac781a92a87a62b1333b46d8879661cf url: "https://pub.dev" source: hosted - version: "0.18.0" + version: "0.19.0" js: dependency: transitive description: @@ -469,6 +469,30 @@ packages: url: "https://pub.dev" source: hosted version: "0.7.4" + leak_tracker: + dependency: transitive + description: + name: leak_tracker + sha256: "7bb2830ebd849694d1ec25bf1f44582d6ac531a57a365a803a6034ff751d2d06" + url: "https://pub.dev" + source: hosted + version: "10.0.7" + leak_tracker_flutter_testing: + dependency: transitive + description: + name: leak_tracker_flutter_testing + sha256: "9491a714cca3667b60b5c420da8217e6de0d1ba7a5ec322fab01758f6998f379" + url: "https://pub.dev" + source: hosted + version: "3.0.8" + leak_tracker_testing: + dependency: transitive + description: + name: leak_tracker_testing + sha256: "6ba465d5d76e67ddf503e1161d1f4a6bc42306f9d66ca1e8f079a47290fb06d3" + url: "https://pub.dev" + source: hosted + version: "3.0.1" lints: dependency: transitive description: @@ -497,34 +521,34 @@ packages: dependency: transitive description: name: matcher - sha256: "6501fbd55da300384b768785b83e5ce66991266cec21af89ab9ae7f5ce1c4cbb" + sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb url: "https://pub.dev" source: hosted - version: "0.12.15" + version: "0.12.16+1" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: d92141dc6fe1dad30722f9aa826c7fbc896d021d792f80678280601aff8cf724 + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.2.0" + version: "0.11.1" meta: dependency: transitive description: name: meta - sha256: "3c74dbf8763d36539f114c799d8a2d87343b5067e9d796ca22b5eb8437090ee3" + sha256: bdb68674043280c3428e9ec998512fb681678676b3c54e773629ffe74419f8c7 url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.15.0" path: dependency: transitive description: name: path - sha256: "8829d8a55c13fc0e37127c29fedf290c102f4e40ae94ada574091fe0ff96c917" + sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af" url: "https://pub.dev" source: hosted - version: "1.8.3" + version: "1.9.0" path_provider_linux: dependency: transitive description: @@ -589,14 +613,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.1.3" - persistent_bottom_nav_bar_v2: + persistent_bottom_nav_bar: dependency: "direct main" description: - name: persistent_bottom_nav_bar_v2 - sha256: "2fbaf1e8b18108d8a303304a306d68bcfb78abfd553295f489a8a315dff479e2" + name: persistent_bottom_nav_bar + sha256: "6aa9b97ced1abd92c90cedd1997d34ea0b35c3ded762ac6063baccc299b0c4c5" url: "https://pub.dev" source: hosted - version: "4.2.8" + version: "6.2.1" petitparser: dependency: transitive description: @@ -657,10 +681,10 @@ packages: dependency: "direct main" description: name: search_choices - sha256: "10a50815c0190922dadae81cce723266bfc57d134911565c37c96d4527312bde" + sha256: "44b0e00b45b72e69ee4e1350e2794134151d2a34ac668f2a7b6049b142d9b642" url: "https://pub.dev" source: hosted - version: "2.2.11" + version: "2.3.1" shared_preferences: dependency: "direct main" description: @@ -729,15 +753,15 @@ packages: dependency: transitive description: flutter source: sdk - version: "0.0.99" + version: "0.0.0" source_span: dependency: transitive description: name: source_span - sha256: dd904f795d4b4f3b870833847c461801f6750a9fa8e61ea5ac53f9422b31f250 + sha256: "53e943d4206a5e30df338fd4c6e7a077e02254531b138a15aec3bd143c1a8b3c" url: "https://pub.dev" source: hosted - version: "1.9.1" + version: "1.10.0" sprintf: dependency: transitive description: @@ -750,18 +774,18 @@ packages: dependency: transitive description: name: stack_trace - sha256: c3c7d8edb15bee7f0f74debd4b9c5f3c2ea86766fe4178eb2a18eb30a0bdaed5 + sha256: "9f47fd3630d76be3ab26f0ee06d213679aa425996925ff3feffdec504931c377" url: "https://pub.dev" source: hosted - version: "1.11.0" + version: "1.12.0" stream_channel: dependency: transitive description: name: stream_channel - sha256: "83615bee9045c1d322bbbd1ba209b7a749c2cbcdcb3fdd1df8eb488b3279c1c8" + sha256: ba2aa5d8cc609d96bbb2899c28934f9e1af5cddbd60a827822ea467161eb54e7 url: "https://pub.dev" source: hosted - version: "2.1.1" + version: "2.1.2" stream_transform: dependency: transitive description: @@ -774,10 +798,10 @@ packages: dependency: transitive description: name: string_scanner - sha256: "556692adab6cfa87322a115640c11f13cb77b3f076ddcc5d6ae3c20242bedcde" + sha256: "688af5ed3402a4bde5b3a6c15fd768dbf2621a614950b17f04626c431ab3c4c3" url: "https://pub.dev" source: hosted - version: "1.2.0" + version: "1.3.0" term_glyph: dependency: transitive description: @@ -790,10 +814,10 @@ packages: dependency: transitive description: name: test_api - sha256: eb6ac1540b26de412b3403a163d919ba86f6a973fe6cc50ae3541b80092fdcfb + sha256: "664d3a9a64782fcdeb83ce9c6b39e78fd2971d4e37827b9b06c3aa1edc5e760c" url: "https://pub.dev" source: hosted - version: "0.5.1" + version: "0.7.3" timezone: dependency: transitive description: @@ -898,14 +922,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.4" - win32: + vm_service: dependency: transitive description: - name: win32 - sha256: "350a11abd2d1d97e0cc7a28a81b781c08002aa2864d9e3f192ca0ffa18b06ed3" + name: vm_service + sha256: f6be3ed8bd01289b34d679c2b62226f63c0e69f9fd2e50a6b3c1c729a961041b url: "https://pub.dev" source: hosted - version: "5.0.9" + version: "14.3.0" + win32: + dependency: "direct main" + description: + name: win32 + sha256: "154360849a56b7b67331c21f09a386562d88903f90a1099c5987afc1912e1f29" + url: "https://pub.dev" + source: hosted + version: "5.10.0" xdg_directories: dependency: transitive description: @@ -923,5 +955,5 @@ packages: source: hosted version: "6.3.0" sdks: - dart: ">=3.0.1 <4.0.0" - flutter: ">=3.10.0" + dart: ">=3.5.0 <4.0.0" + flutter: ">=3.27.0" diff --git a/pubspec.yaml b/pubspec.yaml index 323101a..94aa815 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -36,23 +36,25 @@ dependencies: # Use with the CupertinoIcons class for iOS style icons. cupertino_icons: ^1.0.2 shared_preferences: ^2.2.2 - intl: ^0.18.0 + intl: ^0.19.0 firebase_core: ^2.24.2 firebase_messaging: ^14.7.10 flutter_local_notifications: ^17.2.4 permission_handler: ^11.0.1 app_settings: ^5.1.1 - flex_color_scheme: ^7.2.0 + # flex_color_scheme: ^7.2.0 + flex_color_scheme: ^8.1.0 go_router: ^13.1.0 http: ^1.1.0 top_snackbar_flutter: ^3.1.0 badges: ^3.1.2 - google_maps_cluster_manager: ^3.1.0 + # google_maps_cluster_manager: ^3.1.0 + google_maps_cluster_manager_2: ^3.2.0 google_maps_flutter: ^2.5.0 dropdown_button2: ^2.3.9 maps_launcher: ^2.2.1 flutter_barcode_scanner: ^2.0.0 - search_choices: ^2.2.11 + search_choices: ^2.3.1 dio: ^5.7.0 rxdart: ^0.28.0 geolocator: ^11.1.0 @@ -60,7 +62,9 @@ dependencies: flutter_polyline_points: ^2.0.0 simple_ripple_animation: ^0.1.0 fl_chart: ^0.64.0 - persistent_bottom_nav_bar_v2: ^4.2.8 + # persistent_bottom_nav_bar_v2: ^4.2.8 + persistent_bottom_nav_bar: ^6.2.1 + win32: ^5.10.0 dev_dependencies: flutter_test: