Refactor code for consistency and readability

- Removed unused imports and commented-out code
- Updated class inheritance for AuthState subclasses
- Reorganized code structure for better readability
- Cleaned up debug print statements and replaced with dart:developer logs
This commit is contained in:
Mohammad Salameh
2024-04-15 12:03:25 +03:00
parent cfc395e210
commit 80d424f114
13 changed files with 162 additions and 77 deletions

View File

@ -12,7 +12,16 @@ class AppBody extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
return BlocBuilder<HomeCubit, HomeState>( return BlocConsumer<HomeCubit, HomeState>(
listener: (context, state) {
if (state is GetSpacesError) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(state.errMessage),
),
);
}
},
builder: (context, state) { builder: (context, state) {
return Container( return Container(
width: MediaQuery.sizeOf(context).width, width: MediaQuery.sizeOf(context).width,
@ -26,24 +35,11 @@ class AppBody extends StatelessWidget {
opacity: 0.4, opacity: 0.4,
), ),
), ),
child: BlocConsumer<HomeCubit, HomeState>( child: state is! GetSpacesLoading
listener: (context, state) {
if (state is GetSpacesError) {
ScaffoldMessenger.of(context).showSnackBar(
SnackBar(
content: Text(state.errMessage),
),
);
}
},
builder: (context, state) {
return state is! GetSpacesLoading
? state is! GetSpaceRoomsLoading ? state is! GetSpaceRoomsLoading
? HomeCubit.getInstance().pages[HomeCubit.pageIndex] ? HomeCubit.getInstance().pages[HomeCubit.pageIndex]
: const Center(child: CircularProgressIndicator()) : const Center(child: CircularProgressIndicator())
: const Center(child: CircularProgressIndicator()); : const Center(child: CircularProgressIndicator()),
},
),
); );
}, },
); );

View File

@ -2,8 +2,6 @@ import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart'; import 'package:syncrow_app/features/app_layout/bloc/home_cubit.dart';
import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart';
import 'package:syncrow_app/generated/assets.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
import 'package:syncrow_app/utils/resource_manager/constants.dart'; import 'package:syncrow_app/utils/resource_manager/constants.dart';

View File

@ -4,30 +4,44 @@ abstract class AuthState {}
class AuthInitial extends AuthState {} class AuthInitial extends AuthState {}
//base states
class AuthLoading extends AuthState {} class AuthLoading extends AuthState {}
class AuthError extends AuthState { class AuthError extends AuthState {
final String message; final String message;
String? code;
AuthError(this.message) { AuthError({required this.message, this.code});
debugPrint(message);
}
} }
class AuthSuccess extends AuthState {} class AuthSuccess extends AuthState {}
class AuthLoggedOut extends AuthState {} //user log states
class AuthLoginLoading extends AuthLoading {}
class AuthLoginSuccess extends AuthSuccess {}
class AuthLoginError extends AuthError {
AuthLoginError({required super.message, super.code});
}
class AuthLogoutLoading extends AuthLoading {}
class AuthLogoutSuccess extends AuthSuccess {}
class AuthLogoutError extends AuthError {
AuthLogoutError({required super.message, super.code});
}
// UI states
class AuthPasswordVisibilityChanged extends AuthState {} class AuthPasswordVisibilityChanged extends AuthState {}
class AuthAgreeToTermsChanged extends AuthState {} class AuthAgreeToTermsChanged extends AuthState {}
class AuthTokenLoading extends AuthState {} //token states
class AuthTokenLoading extends AuthLoading {}
class AuthTokenSuccess extends AuthState {} class AuthTokenSuccess extends AuthSuccess {}
class AuthTokenError extends AuthState { class AuthTokenError extends AuthError {
final String message; AuthTokenError({required super.message, super.code});
AuthTokenError(this.message);
} }

View File

@ -18,8 +18,6 @@ class LoginView extends StatelessWidget {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
//TODO move to strings manager
return BlocConsumer<AuthCubit, AuthState>( return BlocConsumer<AuthCubit, AuthState>(
listener: (context, state) { listener: (context, state) {
if (state is AuthError) { if (state is AuthError) {
@ -28,8 +26,8 @@ class LoginView extends StatelessWidget {
content: Text(state.message), content: Text(state.message),
), ),
); );
} else if (state is AuthSuccess) { } else if (state is AuthLoginSuccess) {
Navigator.popAndPushNamed(context, Routes.homeRoute); Navigator.pushNamed(context, Routes.homeRoute);
} }
}, },
builder: (context, state) { builder: (context, state) {

View File

@ -11,7 +11,6 @@ import 'package:syncrow_app/features/shared_widgets/text_widgets/body_medium.dar
import 'package:syncrow_app/generated/assets.dart'; import 'package:syncrow_app/generated/assets.dart';
import 'package:syncrow_app/utils/context_extension.dart'; import 'package:syncrow_app/utils/context_extension.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
import 'package:syncrow_app/utils/resource_manager/constants.dart';
import 'package:syncrow_app/utils/resource_manager/font_manager.dart'; import 'package:syncrow_app/utils/resource_manager/font_manager.dart';
class AcInterfaceTempUnit extends StatelessWidget { class AcInterfaceTempUnit extends StatelessWidget {

View File

@ -0,0 +1,92 @@
// import 'package:flutter/material.dart';
// import 'package:flutter/services.dart';
// import 'package:flutter_svg/flutter_svg.dart';
// import 'package:syncrow_app/features/devices/model/device_model.dart';
// import 'package:syncrow_app/features/shared_widgets/default_container.dart';
// import 'package:syncrow_app/features/shared_widgets/text_widgets/body_large.dart';
// import 'package:syncrow_app/generated/assets.dart';
// import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
// import 'package:syncrow_app/utils/resource_manager/constants.dart';
// import 'package:syncrow_app/utils/resource_manager/font_manager.dart';
// class DoorInterface extends StatelessWidget {
// const DoorInterface({super.key, required this.doorlock});
// final DeviceModel doorlock;
// @override
// Widget build(BuildContext context) {
// return AnnotatedRegion(
// value: SystemUiOverlayStyle(
// statusBarColor: ColorsManager.primaryColor.withOpacity(0.5),
// statusBarIconBrightness: Brightness.light,
// ),
// child: SafeArea(
// child: Scaffold(
// backgroundColor: ColorsManager.backgroundColor,
// extendBodyBehindAppBar: true,
// extendBody: true,
// appBar: AppBar(
// backgroundColor: Colors.transparent,
// centerTitle: true,
// title: BodyLarge(
// text: doorlock.name ?? "",
// fontColor: ColorsManager.primaryColor,
// fontWeight: FontsManager.bold,
// ),
// ),
// body: Container(
// width: MediaQuery.sizeOf(context).width,
// height: MediaQuery.sizeOf(context).height,
// decoration: const BoxDecoration(
// image: DecorationImage(
// image: AssetImage(
// Assets.imagesBackground,
// ),
// fit: BoxFit.cover,
// opacity: 0.4,
// ),
// ),
// child: Padding(
// padding: EdgeInsets.only(
// top: Constants.appBarHeight,
// left: Constants.defaultPadding,
// right: Constants.defaultPadding,
// bottom: Constants.bottomNavBarHeight,
// ),
// child: Column(
// children: [
// Row(
// mainAxisAlignment: MainAxisAlignment.spaceBetween,
// children: [
// SvgPicture.asset(Assets.iconsWifi),
// SvgPicture.asset(Assets.iconsBatteryIndicator),
// ],
// ),
// SizedBox.square(
// dimension: 255,
// ),
// SizedBox(
// height: 80,
// ),
// GridView.builder(
// shrinkWrap: true,
// gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
// crossAxisCount: 2,
// mainAxisSpacing: 10,
// crossAxisSpacing: 10,
// ),
// itemBuilder: (context, index) => DefaultContainer(
// child: SizedBox.shrink(),
// width: 175,
// height: 100,
// ),
// ),
// ],
// )),
// ),
// ),
// ),
// );
// }
// }

View File

@ -1,7 +1,6 @@
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart'; import 'package:syncrow_app/features/devices/bloc/devices_cubit.dart';
import 'package:syncrow_app/features/devices/model/device_category_model.dart';
import 'package:syncrow_app/features/devices/model/device_control_model.dart'; import 'package:syncrow_app/features/devices/model/device_control_model.dart';
import 'package:syncrow_app/features/devices/model/device_model.dart'; import 'package:syncrow_app/features/devices/model/device_model.dart';
import 'package:syncrow_app/utils/resource_manager/color_manager.dart'; import 'package:syncrow_app/utils/resource_manager/color_manager.dart';
@ -43,12 +42,9 @@ class CustomSwitch extends StatelessWidget {
height: 28.0, height: 28.0,
decoration: BoxDecoration( decoration: BoxDecoration(
borderRadius: BorderRadius.circular(24.0), borderRadius: BorderRadius.circular(24.0),
color: status != null color: status
? status
? ColorsManager.primaryColor ? ColorsManager.primaryColor
: const Color(0xFFD9D9D9) : const Color(0xFFD9D9D9)),
: const Color(0xFFD9D9D9),
),
child: Center( child: Center(
child: Container( child: Container(
width: 40.0, width: 40.0,
@ -60,20 +56,16 @@ class CustomSwitch extends StatelessWidget {
child: Padding( child: Padding(
padding: const EdgeInsets.all(2.0), padding: const EdgeInsets.all(2.0),
child: Container( child: Container(
alignment: status != null alignment: status
? status
? Alignment.centerRight ? Alignment.centerRight
: Alignment.centerLeft
: Alignment.centerLeft, : Alignment.centerLeft,
child: Container( child: Container(
width: 20.0, width: 20.0,
height: 20.0, height: 20.0,
decoration: BoxDecoration( decoration: BoxDecoration(
shape: BoxShape.circle, shape: BoxShape.circle,
color: status != null color: status
? status
? ColorsManager.primaryColor ? ColorsManager.primaryColor
: Colors.grey
: Colors.grey, : Colors.grey,
), ),
), ),

View File

@ -22,7 +22,7 @@ class AuthenticationAPI {
body: model.toJson(), body: model.toJson(),
showServerMessage: false, showServerMessage: false,
expectedResponseModel: (json) => Token.fromJson(json['data'])); expectedResponseModel: (json) => Token.fromJson(json['data']));
// debugPrint("response: $response"); // developer.log("response: $response");
return response; return response;
} catch (e) { } catch (e) {
rethrow; rethrow;

View File

@ -10,6 +10,7 @@ class DevicesAPI {
DeviceControlModel controlModel) async { DeviceControlModel controlModel) async {
// print( // print(
// 'contoling [${controlModel.deviceId}] with code [${controlModel.code}] and value [${controlModel.value}'); // 'contoling [${controlModel.deviceId}] with code [${controlModel.code}] and value [${controlModel.value}');
final response = await _httpService.post( final response = await _httpService.post(
path: ApiEndpoints.control, path: ApiEndpoints.control,
body: controlModel.toJson(), body: controlModel.toJson(),

View File

@ -1,5 +1,5 @@
import 'package:dio/dio.dart'; import 'package:dio/dio.dart';
import 'package:flutter/material.dart'; import 'dart:developer' as developer;
import 'package:syncrow_app/services/api/api_links_endpoints.dart'; import 'package:syncrow_app/services/api/api_links_endpoints.dart';
import 'package:syncrow_app/services/api/http_interceptor.dart'; import 'package:syncrow_app/services/api/http_interceptor.dart';
import 'package:syncrow_app/services/locator.dart'; import 'package:syncrow_app/services/locator.dart';
@ -39,9 +39,6 @@ class HTTPService {
); );
return expectedResponseModel(response.data); return expectedResponseModel(response.data);
} catch (error) { } catch (error) {
debugPrint("******* Error");
debugPrint(error.toString());
debugPrint("******* Error End");
rethrow; rethrow;
} }
} }
@ -60,8 +57,8 @@ class HTTPService {
queryParameters: queryParameters, queryParameters: queryParameters,
options: options, options: options,
); );
// debugPrint("status code is ${response.statusCode}"); // developer.log("status code is ${response.statusCode}");
// debugPrint("response data is ${response.data}"); // developer.log("response data is ${response.data}");
return expectedResponseModel(response.data); return expectedResponseModel(response.data);
} catch (error) { } catch (error) {
rethrow; rethrow;
@ -79,11 +76,11 @@ class HTTPService {
data: body, data: body,
queryParameters: queryParameters, queryParameters: queryParameters,
); );
debugPrint("status code is ${response.statusCode}"); developer.log("status code is ${response.statusCode}");
return expectedResponseModel(response.data); return expectedResponseModel(response.data);
} catch (error) { } catch (error) {
debugPrint("******* Error"); developer.log("******* Error");
debugPrint(error.toString()); developer.log(error.toString());
rethrow; rethrow;
} }
} }
@ -94,26 +91,25 @@ class HTTPService {
Map<String, dynamic>? queryParameters, Map<String, dynamic>? queryParameters,
required T Function(dynamic) expectedResponseModel}) async { required T Function(dynamic) expectedResponseModel}) async {
try { try {
debugPrint("download begins"); developer.log("download begins");
final response = await client.download( final response = await client.download(
path, path,
savePath, savePath,
onReceiveProgress: (current, total) { onReceiveProgress: (current, total) {
debugPrint("current = $current, while total = $total"); developer.log("current = $current, while total = $total");
}, },
); );
debugPrint("download ends"); developer.log("download ends");
return expectedResponseModel(response.data); return expectedResponseModel(response.data);
// return expectedResponseModel(response.data); // return expectedResponseModel(response.data);
} catch (error) { } catch (error) {
debugPrint("******* Error"); developer.log("******* Error");
debugPrint("download error"); developer.log("download error");
debugPrint(error.toString()); developer.log(error.toString());
rethrow; rethrow;
} }
} }
//delete
Future<T> delete<T>({ Future<T> delete<T>({
required String path, required String path,
Map<String, dynamic>? queryParameters, Map<String, dynamic>? queryParameters,
@ -127,8 +123,8 @@ class HTTPService {
); );
return expectedResponseModel(response.data); return expectedResponseModel(response.data);
} catch (error) { } catch (error) {
debugPrint("******* Error"); developer.log("******* Error");
debugPrint(error.toString()); developer.log(error.toString());
rethrow; rethrow;
} }
} }

View File

@ -5,6 +5,7 @@ class MyHttpOverrides extends HttpOverrides {
@override @override
HttpClient createHttpClient(SecurityContext? context) { HttpClient createHttpClient(SecurityContext? context) {
return super.createHttpClient(context) return super.createHttpClient(context)
..badCertificateCallback = (X509Certificate cert, String host, int port) => true; ..badCertificateCallback =
(X509Certificate cert, String host, int port) => true;
} }
} }

View File

@ -1,13 +1,12 @@
import 'dart:developer' as developer;
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart';
class StringHelpers { class StringHelpers {
// TODO ( to Mohammad Salameh): convert this to extension method // TODO ( to Mohammad Salameh): convert this to extension method
static String enhanceFileName(File file) { static String enhanceFileName(File file) {
var fileName = " "; var fileName = " ";
final filePath = file.path; final filePath = file.path;
debugPrint(filePath); developer.log(filePath);
final fileStringArray = filePath.split("/"); final fileStringArray = filePath.split("/");
fileName = fileStringArray.last; fileName = fileStringArray.last;
if (fileName.length > 20) { if (fileName.length > 20) {

View File

@ -207,7 +207,6 @@ abstract class ThemeManager {
), ),
///card theme ///card theme
//TODO edit card theme
cardTheme: const CardTheme( cardTheme: const CardTheme(
elevation: 0, elevation: 0,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(