diff --git a/lib/pages/analytics/modules/energy_management/widgets/power_clamp_phase.dart b/lib/pages/analytics/modules/energy_management/widgets/power_clamp_phase.dart new file mode 100644 index 00000000..ffd1b801 --- /dev/null +++ b/lib/pages/analytics/modules/energy_management/widgets/power_clamp_phase.dart @@ -0,0 +1,102 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/svg.dart'; +import 'package:syncrow_web/utils/color_manager.dart'; +import 'package:syncrow_web/utils/extension/build_context_x.dart'; +import 'package:syncrow_web/utils/style.dart'; + +class PowerClampPhase extends StatelessWidget { + const PowerClampPhase({ + super.key, + required this.iconPath, + required this.title, + required this.value, + this.unit, + }); + final String iconPath; + final String title; + final String value; + final String? unit; + + @override + Widget build(BuildContext context) { + return Expanded( + flex: 5, + child: Container( + margin: const EdgeInsets.only(bottom: 4), + decoration: containerWhiteDecoration.copyWith( + boxShadow: const [], + ), + padding: const EdgeInsetsDirectional.all(8), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + spacing: 10, + children: [ + Expanded( + child: FittedBox( + fit: BoxFit.scaleDown, + child: SvgPicture.asset(iconPath), + ), + ), + Expanded( + flex: 5, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + spacing: 4, + children: [ + Expanded( + child: FittedBox( + alignment: AlignmentDirectional.centerStart, + fit: BoxFit.scaleDown, + child: Text( + title, + style: context.textTheme.titleSmall?.copyWith( + color: ColorsManager.lightGreyColor, + fontWeight: FontWeight.w400, + fontSize: 8, + ), + ), + ), + ), + Expanded( + flex: 2, + child: FittedBox( + alignment: AlignmentDirectional.centerStart, + fit: BoxFit.scaleDown, + child: Text.rich( + TextSpan( + style: context.textTheme.bodySmall?.copyWith( + color: ColorsManager.textPrimaryColor.withValues( + alpha: 0.83, + ), + fontWeight: FontWeight.w700, + fontSize: 15, + ), + children: [ + TextSpan(text: '$value '), + if (unit != null) + TextSpan( + text: unit, + style: context.textTheme.bodySmall?.copyWith( + color: ColorsManager.textPrimaryColor.withValues( + alpha: 0.83, + ), + fontWeight: FontWeight.w700, + fontSize: 8, + ), + ), + ], + ), + ), + ), + ), + ], + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/pages/analytics/modules/energy_management/widgets/power_clamp_phases_data_widget.dart b/lib/pages/analytics/modules/energy_management/widgets/power_clamp_phases_data_widget.dart index a66960a3..3f961f68 100644 --- a/lib/pages/analytics/modules/energy_management/widgets/power_clamp_phases_data_widget.dart +++ b/lib/pages/analytics/modules/energy_management/widgets/power_clamp_phases_data_widget.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; +import 'package:syncrow_web/pages/analytics/modules/energy_management/widgets/power_clamp_phase.dart'; import 'package:syncrow_web/utils/color_manager.dart'; import 'package:syncrow_web/utils/constants/assets.dart'; import 'package:syncrow_web/utils/extension/build_context_x.dart'; @@ -93,97 +93,3 @@ class PowerClampPhasesDataWidget extends StatelessWidget { ); } } - -class PowerClampPhase extends StatelessWidget { - const PowerClampPhase({ - super.key, - required this.iconPath, - required this.title, - required this.value, - this.unit, - }); - final String iconPath; - final String title; - final String value; - final String? unit; - - @override - Widget build(BuildContext context) { - return Container( - margin: const EdgeInsets.only(bottom: 4), - decoration: containerWhiteDecoration.copyWith( - boxShadow: const [], - ), - padding: const EdgeInsetsDirectional.all(8), - child: Row( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - spacing: 10, - children: [ - Expanded( - child: FittedBox( - fit: BoxFit.scaleDown, - child: SvgPicture.asset(iconPath), - ), - ), - Expanded( - flex: 5, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisSize: MainAxisSize.min, - spacing: 4, - children: [ - Expanded( - child: FittedBox( - alignment: AlignmentDirectional.centerStart, - fit: BoxFit.scaleDown, - child: Text( - title, - style: context.textTheme.titleSmall?.copyWith( - color: ColorsManager.lightGreyColor, - fontWeight: FontWeight.w400, - fontSize: 8, - ), - ), - ), - ), - Expanded( - flex: 2, - child: FittedBox( - alignment: AlignmentDirectional.centerStart, - fit: BoxFit.scaleDown, - child: Text.rich( - TextSpan( - style: context.textTheme.bodySmall?.copyWith( - color: ColorsManager.textPrimaryColor.withValues( - alpha: 0.83, - ), - fontWeight: FontWeight.w700, - fontSize: 15, - ), - children: [ - TextSpan(text: '$value '), - if (unit != null) - TextSpan( - text: unit, - style: context.textTheme.bodySmall?.copyWith( - color: ColorsManager.textPrimaryColor.withValues( - alpha: 0.83, - ), - fontWeight: FontWeight.w700, - fontSize: 8, - ), - ), - ], - ), - ), - ), - ), - ], - ), - ), - ], - ), - ); - } -}