mirror of
https://github.com/SyncrowIOT/syncrow-app.git
synced 2025-07-15 09:45:22 +00:00
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:
@ -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) {
|
? state is! GetSpaceRoomsLoading
|
||||||
if (state is GetSpacesError) {
|
? HomeCubit.getInstance().pages[HomeCubit.pageIndex]
|
||||||
ScaffoldMessenger.of(context).showSnackBar(
|
: const Center(child: CircularProgressIndicator())
|
||||||
SnackBar(
|
: const Center(child: CircularProgressIndicator()),
|
||||||
content: Text(state.errMessage),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
builder: (context, state) {
|
|
||||||
return state is! GetSpacesLoading
|
|
||||||
? state is! GetSpaceRoomsLoading
|
|
||||||
? HomeCubit.getInstance().pages[HomeCubit.pageIndex]
|
|
||||||
: const Center(child: CircularProgressIndicator())
|
|
||||||
: const Center(child: CircularProgressIndicator());
|
|
||||||
},
|
|
||||||
),
|
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -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';
|
||||||
|
|
||||||
|
@ -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);
|
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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 {
|
||||||
|
@ -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,
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ],
|
||||||
|
// )),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// ),
|
||||||
|
// );
|
||||||
|
// }
|
||||||
|
// }
|
@ -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';
|
||||||
@ -42,13 +41,10 @@ class CustomSwitch extends StatelessWidget {
|
|||||||
width: 45.0,
|
width: 45.0,
|
||||||
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,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
@ -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;
|
||||||
|
@ -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(),
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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) {
|
||||||
|
@ -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(
|
||||||
|
Reference in New Issue
Block a user