push fetch devices and connecting the filters

This commit is contained in:
ashrafzarkanisala
2024-08-24 16:37:10 +03:00
parent 0c047de9c1
commit 2597cdc311
68 changed files with 1800 additions and 989 deletions

View File

@ -38,60 +38,58 @@ class DefaultButton extends StatelessWidget {
style: isSecondary
? null
: customButtonStyle ??
ButtonStyle(
textStyle: MaterialStateProperty.all(
customTextStyle
?? Theme.of(context).textTheme.bodySmall!.copyWith(
fontSize: 13,
color: foregroundColor,
fontWeight: FontWeight.normal
),
),
foregroundColor: MaterialStateProperty.all(
isSecondary
? Colors.black
: enabled
? foregroundColor ?? Colors.white
: Colors.black,
),
backgroundColor: MaterialStateProperty.resolveWith<Color>(
ButtonStyle(
textStyle: MaterialStateProperty.all(
customTextStyle ??
Theme.of(context).textTheme.bodySmall!.copyWith(
fontSize: 13,
color: foregroundColor,
fontWeight: FontWeight.normal),
),
foregroundColor: MaterialStateProperty.all(
isSecondary
? Colors.black
: enabled
? foregroundColor ?? Colors.white
: Colors.black,
),
backgroundColor: MaterialStateProperty.resolveWith<Color>(
(Set<MaterialState> states) {
return enabled
? backgroundColor ?? ColorsManager.primaryColor
: Colors.black.withOpacity(0.2);
}),
shape: MaterialStateProperty.all(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(borderRadius ?? 20),
shape: MaterialStateProperty.all(
RoundedRectangleBorder(
borderRadius: BorderRadius.circular(borderRadius ?? 20),
),
),
fixedSize: MaterialStateProperty.all(
const Size.fromHeight(50),
),
padding: MaterialStateProperty.all(
EdgeInsets.all(padding ?? 10),
),
minimumSize: MaterialStateProperty.all(
const Size.fromHeight(50),
),
),
),
fixedSize: MaterialStateProperty.all(
const Size.fromHeight(50),
),
padding: MaterialStateProperty.all(
EdgeInsets.all(padding ?? 10),
),
minimumSize: MaterialStateProperty.all(
const Size.fromHeight(50),
),
),
child: SizedBox(
height: height ?? 50,
child: Center(
child: isLoading
? const SizedBox.square(
dimension: 24,
child: CircularProgressIndicator(
color: Colors.white,
),
)
dimension: 24,
child: CircularProgressIndicator(
color: Colors.white,
),
)
: isDone
? const Icon(
Icons.check_circle_outline,
color: Colors.white,
)
: child,
? const Icon(
Icons.check_circle_outline,
color: Colors.white,
)
: child,
),
),
);

View File

@ -11,7 +11,8 @@ Future<void> showCustomDialog({
double? iconHeight,
double? iconWidth,
VoidCallback? onOkPressed,
bool barrierDismissible = false, required actions,
bool barrierDismissible = false,
required actions,
}) {
return showDialog(
context: context,

View File

@ -224,8 +224,14 @@ class _DynamicTableState extends State<DynamicTable> {
alignment: Alignment.centerLeft,
child: Text(
content,
style: const TextStyle(
color: Colors.black, fontSize: 10, fontWeight: FontWeight.w400),
style: TextStyle(
color: content == 'Online'
? ColorsManager.green
: content == 'Offline'
? ColorsManager.red
: Colors.black,
fontSize: 12,
fontWeight: FontWeight.w400),
),
),
);

View File

@ -1,7 +1,6 @@
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/constants/assets.dart';
import 'package:syncrow_web/utils/style.dart';
class DateTimeWebWidget extends StatelessWidget {
@ -23,8 +22,8 @@ class DateTimeWebWidget extends StatelessWidget {
final String firstString;
final String secondString;
final String icon;
final Function()? startTime;
final Function()? endTime;
final Function()? startTime;
final Function()? endTime;
@override
Widget build(BuildContext context) {
@ -32,61 +31,84 @@ class DateTimeWebWidget extends StatelessWidget {
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisAlignment: MainAxisAlignment.start,
children: [
Row(
children: [
if(isRequired)
Text(
'* ',
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(color: Colors.red),
),
Text(title??'' ,
style: Theme.of(context).textTheme.bodySmall!.copyWith(
color: Colors.black,fontSize: 13),),
],
),
const SizedBox(height: 8,),
Row(
children: [
if (isRequired)
Text(
'* ',
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(color: Colors.red),
),
Text(
title,
style: Theme.of(context)
.textTheme
.bodySmall!
.copyWith(color: Colors.black, fontSize: 13),
),
],
),
const SizedBox(
height: 8,
),
Container(
height:size.height * 0.055 ,
padding: EdgeInsets.only(top: 10,bottom: 10,right: 30,left: 10),
height: size.height * 0.055,
padding:
const EdgeInsets.only(top: 10, bottom: 10, right: 30, left: 10),
decoration: containerDecoration,
child: FittedBox(
child: Column(
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
InkWell(
onTap: startTime,
child: FittedBox(
child: Text(firstString,
style: Theme.of(context).textTheme.bodySmall!.copyWith(
color: ColorsManager.grayColor,fontSize: 12,fontWeight: FontWeight.w400),),
)
),
SizedBox(width: 30,),
const Icon(Icons.arrow_right_alt),
SizedBox(width: 30,),
InkWell(
onTap:endTime,
child: FittedBox(
child: Text(secondString,
style: Theme.of(context).textTheme.bodySmall!.copyWith(
color: ColorsManager.grayColor,fontSize: 12,fontWeight: FontWeight.w400),
),
)),
SizedBox(width: 30,),
SvgPicture.asset(
icon,
),
],
InkWell(
onTap: startTime,
child: FittedBox(
child: Text(
firstString,
style: Theme.of(context)
.textTheme
.bodySmall!
.copyWith(
color: ColorsManager.grayColor,
fontSize: 12,
fontWeight: FontWeight.w400),
),
)),
const SizedBox(
width: 30,
),
const Icon(Icons.arrow_right_alt),
const SizedBox(
width: 30,
),
InkWell(
onTap: endTime,
child: FittedBox(
child: Text(
secondString,
style: Theme.of(context)
.textTheme
.bodySmall!
.copyWith(
color: ColorsManager.grayColor,
fontSize: 12,
fontWeight: FontWeight.w400),
),
)),
const SizedBox(
width: 30,
),
SvgPicture.asset(
icon,
),
],
)),
),
],
)),
),
],
);

View File

@ -4,7 +4,7 @@ import 'package:syncrow_web/utils/constants/assets.dart';
class FirstLayer extends StatelessWidget {
final Widget? second;
const FirstLayer({super.key,this.second});
const FirstLayer({super.key, this.second});
@override
Widget build(BuildContext context) {

View File

@ -1,5 +1,3 @@
import 'package:flutter/material.dart';
class HourPickerDialog extends StatefulWidget {
@ -17,7 +15,9 @@ class _HourPickerDialogState extends State<HourPickerDialog> {
@override
void initState() {
super.initState();
_selectedHour = widget.initialTime.hour > 12 ? widget.initialTime.hour - 12 : widget.initialTime.hour;
_selectedHour = widget.initialTime.hour > 12
? widget.initialTime.hour - 12
: widget.initialTime.hour;
_isPm = widget.initialTime.period == DayPeriod.pm;
}

View File

@ -35,7 +35,6 @@ class InfoDialog extends StatelessWidget {
width: 35,
),
),
Text(
title,
style: Theme.of(context).textTheme.headlineLarge!.copyWith(

View File

@ -8,37 +8,25 @@ class StatefulTextField extends StatefulWidget {
this.hintText = 'Please enter',
required this.width,
this.elevation = 0,
required this.controller, // Add the controller
});
final String title;
final String hintText;
final double width;
final double elevation;
final TextEditingController controller;
@override
State<StatefulTextField> createState() => _StatefulTextFieldState();
}
class _StatefulTextFieldState extends State<StatefulTextField> {
late TextEditingController _controller;
@override
void initState() {
super.initState();
_controller = TextEditingController();
}
@override
void dispose() {
_controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return CustomTextField(
title: widget.title,
controller: _controller,
controller: widget.controller,
hintText: widget.hintText,
width: widget.width,
elevation: widget.elevation,

View File

@ -1,23 +1,22 @@
import 'package:flutter/material.dart';
import 'package:syncrow_web/utils/color_manager.dart';
import 'package:syncrow_web/utils/style.dart';
class CustomWebTextField extends StatelessWidget {
const CustomWebTextField({
const CustomWebTextField({
super.key,
required this.isRequired,
required this.isRequired,
required this.textFieldName,
required this.controller,
this.description,
this.validator,
this.description,
this.validator,
});
final bool isRequired;
final String textFieldName;
final String? description;
final TextEditingController? controller;
final String? Function(String?)? validator;
final String? Function(String?)? validator;
@override
Widget build(BuildContext context) {
@ -28,51 +27,59 @@ class CustomWebTextField extends StatelessWidget {
Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
if(isRequired)
Row(
children: [
Text('* ',
style: Theme.of(context)
.textTheme.bodyMedium!
.copyWith(color: Colors.red),
),
Text(textFieldName, style: Theme.of(context).textTheme.bodySmall!.copyWith(
color: Colors.black,fontSize: 13),),
],
if (isRequired)
Row(
children: [
Text(
'* ',
style: Theme.of(context)
.textTheme
.bodyMedium!
.copyWith(color: Colors.red),
),
Text(
textFieldName,
style: Theme.of(context)
.textTheme
.bodySmall!
.copyWith(color: Colors.black, fontSize: 13),
),
],
),
const SizedBox(
width: 10,
),
const SizedBox(width: 10,),
Expanded(
child: Text(
description??'',
style: Theme.of(context)
.textTheme.bodySmall!
.copyWith(fontSize: 9,
description ?? '',
style: Theme.of(context).textTheme.bodySmall!.copyWith(
fontSize: 9,
fontWeight: FontWeight.w400,
color: ColorsManager.textGray),
),
),
],
),
const SizedBox(height: 7,),
const SizedBox(
height: 7,
),
Container(
decoration: containerDecoration.copyWith(
color: const Color(0xFFF5F6F7),
boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.3),
spreadRadius:2,
blurRadius: 3,
offset: const Offset(1, 1), // changes position of shadow
),
]
),
decoration: containerDecoration
.copyWith(color: const Color(0xFFF5F6F7), boxShadow: [
BoxShadow(
color: Colors.grey.withOpacity(0.3),
spreadRadius: 2,
blurRadius: 3,
offset: const Offset(1, 1), // changes position of shadow
),
]),
child: TextFormField(
validator: validator,
controller: controller,
style: const TextStyle(color: Colors.black),
decoration: textBoxDecoration()!
.copyWith(
errorStyle: const TextStyle(height: 0), // Hide the error text space
decoration: textBoxDecoration()!.copyWith(
errorStyle:
const TextStyle(height: 0), // Hide the error text space
hintText: 'Please enter'),
),