diff --git a/agrilink_vocpro/lib/data/model/relay_response.dart b/agrilink_vocpro/lib/data/model/relay_response.dart index a9f09e8..5444c5b 100644 --- a/agrilink_vocpro/lib/data/model/relay_response.dart +++ b/agrilink_vocpro/lib/data/model/relay_response.dart @@ -1,15 +1,15 @@ class RelayResponse { bool? success; - List? data; + List? data; RelayResponse({this.success, this.data}); RelayResponse.fromJson(Map json) { success = json['success']; if (json['data'] != null) { - data = []; + data = []; json['data'].forEach((v) { - data!.add(Data.fromJson(v)); + data!.add(Relay.fromJson(v)); }); } } @@ -24,7 +24,7 @@ class RelayResponse { } } -class Data { +class Relay { int? id; int? number; String? enabledAt; @@ -32,7 +32,7 @@ class Data { bool? currentStatus; String? createdAt; - Data( + Relay( {this.id, this.number, this.enabledAt, @@ -40,7 +40,7 @@ class Data { this.currentStatus, this.createdAt}); - Data.fromJson(Map json) { + Relay.fromJson(Map json) { id = json['id']; number = json['number']; enabledAt = json['enabled_at']; diff --git a/agrilink_vocpro/lib/features/control/widgets/relay_status_history_widget.dart b/agrilink_vocpro/lib/features/control/widgets/relay_status_history_widget.dart new file mode 100644 index 0000000..f0b2581 --- /dev/null +++ b/agrilink_vocpro/lib/features/control/widgets/relay_status_history_widget.dart @@ -0,0 +1,68 @@ +import 'package:agrilink_vocpro/core/constant/app_theme.dart'; +import 'package:agrilink_vocpro/core/extension/extention.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_screenutil/flutter_screenutil.dart'; + +import '../../../core/constant/app_color.dart'; + +class RelayStatusHistoryWidget extends StatelessWidget { + const RelayStatusHistoryWidget({ + super.key, + required this.disabledAt, + required this.enabledAt, + required this.name, + required this.imageUrl, + }); + + final String? disabledAt; + final String? enabledAt; + final String name; + final String imageUrl; + + @override + Widget build(BuildContext context) { + return ListTile( + leading: CircleAvatar( + radius: 26.r, + backgroundColor: AppColor.ternary, + child: Image.asset( + imageUrl, + width: 24.r, + color: Colors.white, + ), + ), + title: Text( + name, + style: AppTheme.labelMedium, + ), + subtitle: Column( + children: [ + Row( + children: [ + CircleAvatar( + backgroundColor: Colors.greenAccent, + radius: 4.r, + ), + Text( + ' Aktif ${timeAgo(enabledAt)}', + style: AppTheme.labelSmall, + ), + ], + ), + Row( + children: [ + CircleAvatar( + backgroundColor: Colors.grey.shade300, + radius: 4.r, + ), + Text( + ' Nonaktif ${timeAgo(disabledAt)}', + style: AppTheme.labelSmall, + ), + ], + ) + ], + ), + ); + } +}