update AnalyticsChartEmptyStateWidget to use new icons.

This commit is contained in:
Faris Armoush
2025-06-30 10:54:53 +03:00
parent 44c88fb1c4
commit db05331e9a
2 changed files with 36 additions and 29 deletions

View File

@ -6,6 +6,7 @@ import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/to
import 'package:syncrow_web/pages/analytics/widgets/analytics_chart_empty_state_widget.dart'; import 'package:syncrow_web/pages/analytics/widgets/analytics_chart_empty_state_widget.dart';
import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart'; import 'package:syncrow_web/pages/analytics/widgets/analytics_error_widget.dart';
import 'package:syncrow_web/pages/analytics/widgets/charts_loading_widget.dart'; import 'package:syncrow_web/pages/analytics/widgets/charts_loading_widget.dart';
import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/style.dart'; import 'package:syncrow_web/utils/style.dart';
class TotalEnergyConsumptionChartBox extends StatelessWidget { class TotalEnergyConsumptionChartBox extends StatelessWidget {
@ -43,12 +44,14 @@ class TotalEnergyConsumptionChartBox extends StatelessWidget {
const Divider(), const Divider(),
const SizedBox(height: 20), const SizedBox(height: 20),
Visibility( Visibility(
visible: state.chartData.isNotEmpty, visible: state.chartData.isNotEmpty &&
state.chartData.every((e) => e.value != 0),
replacement: AnalyticsChartEmptyStateWidget( replacement: AnalyticsChartEmptyStateWidget(
isLoading: state.status == TotalEnergyConsumptionStatus.loading, isLoading: state.status == TotalEnergyConsumptionStatus.loading,
isError: state.status == TotalEnergyConsumptionStatus.failure, isError: state.status == TotalEnergyConsumptionStatus.failure,
isInitial: state.status == TotalEnergyConsumptionStatus.initial, isInitial: state.status == TotalEnergyConsumptionStatus.initial,
errorMessage: state.errorMessage, errorMessage: state.errorMessage,
iconPath: Assets.emptyEnergyManagementChart,
), ),
child: TotalEnergyConsumptionChart(chartData: state.chartData), child: TotalEnergyConsumptionChart(chartData: state.chartData),
), ),

View File

@ -1,10 +1,12 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_svg/svg.dart';
import 'package:syncrow_web/common/widgets/app_loading_indicator.dart'; import 'package:syncrow_web/common/widgets/app_loading_indicator.dart';
import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/extension/build_context_x.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart';
class AnalyticsChartEmptyStateWidget extends StatelessWidget { class AnalyticsChartEmptyStateWidget extends StatelessWidget {
const AnalyticsChartEmptyStateWidget({ const AnalyticsChartEmptyStateWidget({
required this.iconPath,
this.isLoading = false, this.isLoading = false,
this.isError = false, this.isError = false,
this.isInitial = false, this.isInitial = false,
@ -20,59 +22,61 @@ class AnalyticsChartEmptyStateWidget extends StatelessWidget {
final String? errorMessage; final String? errorMessage;
final String noDataMessage; final String noDataMessage;
final String initialMessage; final String initialMessage;
final String iconPath;
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return Expanded( return Expanded(
child: isLoading child: () {
? const Center( if (isLoading) {
child: AppLoadingIndicator(), return const AppLoadingIndicator();
) } else if (isError) {
: isError return _buildState(
? _buildState(
context, context,
icon: Icons.error_outline,
message: errorMessage ?? 'Something went wrong', message: errorMessage ?? 'Something went wrong',
color: ColorsManager.red, color: ColorsManager.red,
) );
: isInitial } else if (isInitial) {
? _buildState( return _buildState(context, message: initialMessage);
context, } else {
icon: Icons.filter_list, return _buildState(context, message: noDataMessage);
message: initialMessage, }
) }(),
: _buildState(
context,
icon: Icons.bar_chart,
message: noDataMessage,
),
); );
} }
Widget _buildState( Widget _buildState(
BuildContext context, { BuildContext context, {
required IconData icon,
required String message, required String message,
Color? color, Color? color,
}) { }) {
final disabledColor = context.theme.disabledColor; final disabledColor = context.theme.disabledColor;
return Center( return Center(
child: Column( child: Column(
spacing: 16,
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Icon(
icon,
size: 48,
color: color ?? disabledColor,
),
const SizedBox(height: 16), const SizedBox(height: 16),
Expanded(
child: SvgPicture.asset(
iconPath,
fit: BoxFit.contain,
colorFilter: ColorFilter.mode(
color ?? disabledColor,
BlendMode.srcIn,
),
),
),
SelectableText( SelectableText(
message, message,
style: context.textTheme.bodyMedium?.copyWith( style: context.textTheme.bodyMedium?.copyWith(
color: color ?? disabledColor, color: color ?? disabledColor,
fontSize: 16,
fontWeight: FontWeight.w700,
), ),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
const SizedBox(height: 16),
], ],
), ),
); );