integrate report and table view two sensors, use mock data for reports

This commit is contained in:
ashrafzarkanisala
2024-08-27 03:11:51 +03:00
parent 40deaff8a0
commit 7d700f47dd
9 changed files with 398 additions and 209 deletions

View File

@ -0,0 +1,48 @@
import 'package:flutter/material.dart';
class DescriptionView extends StatelessWidget {
final String description;
final VoidCallback onClose;
const DescriptionView({
super.key,
required this.description,
required this.onClose,
});
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.symmetric(horizontal: 50),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Text(
'Help Description',
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(color: Colors.grey),
),
GestureDetector(
onTap: onClose,
child: Text(
'Close',
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(color: Colors.grey),
),
),
],
),
const SizedBox(height: 10),
Text(description),
],
),
);
}
}

View File

@ -0,0 +1,72 @@
import 'package:flutter/material.dart';
import 'package:syncrow_web/pages/device_managment/all_devices/models/device_reports.dart';
import 'package:syncrow_web/pages/device_managment/shared/table/table_cell_widget.dart';
import 'package:syncrow_web/pages/device_managment/shared/table/table_header.dart';
class ReportsTable extends StatelessWidget {
final DeviceReport report;
final Function(int index) onRowTap;
final VoidCallback onClose;
const ReportsTable({
super.key,
required this.report,
required this.onRowTap,
required this.onClose,
});
@override
Widget build(BuildContext context) {
return Stack(
children: [
Padding(
padding: const EdgeInsets.all(20.0),
child: Table(
border: TableBorder.all(color: Colors.grey.shade300, width: 1),
columnWidths: const {
0: FlexColumnWidth(),
1: FlexColumnWidth(),
2: FlexColumnWidth(),
},
children: [
TableRow(
decoration: BoxDecoration(color: Colors.grey.shade200),
children: const [
TableHeader(title: 'Date'),
TableHeader(title: 'Time'),
TableHeader(title: 'Status'),
],
),
...report.data!.asMap().entries.map((entry) {
int index = entry.key;
var data = entry.value;
return TableRow(
children: [
TableCellWidget(value: data['date']),
TableCellWidget(value: data['time']),
TableCellWidget(
value: data['status'],
onTap: () => onRowTap(index),
),
],
);
}).toList(),
],
),
),
Positioned(
top: 0,
right: 0,
child: IconButton(
icon: const Icon(
Icons.close,
color: Colors.red,
size: 18,
),
onPressed: onClose,
),
),
],
);
}
}

View File

@ -0,0 +1,23 @@
import 'package:flutter/material.dart';
class TableCellWidget extends StatelessWidget {
final String value;
final Function()? onTap;
const TableCellWidget({
super.key,
required this.value,
this.onTap,
});
@override
Widget build(BuildContext context) {
return GestureDetector(
onTap: onTap,
child: Padding(
padding: const EdgeInsets.all(8.0),
child: Text(value),
),
);
}
}

View File

@ -0,0 +1,21 @@
import 'package:flutter/material.dart';
class TableHeader extends StatelessWidget {
final String title;
const TableHeader({
super.key,
required this.title,
});
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
title,
style: const TextStyle(fontWeight: FontWeight.bold),
),
);
}
}