mirror of
https://github.com/SyncrowIOT/web.git
synced 2025-07-10 07:07:19 +00:00
update AnalyticsChartEmptyStateWidget
to use new icons.
This commit is contained in:
@ -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),
|
||||||
),
|
),
|
||||||
|
@ -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),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
Reference in New Issue
Block a user