- Restructuring Project Files

- Creating ApiClient class
merge-requests/2/head
Zaid-daoud 2 years ago
parent 008232e69f
commit a2ce99fbae

@ -0,0 +1,17 @@
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:test_sa/core/enums.dart' show SupportedLanguagesEnum;
class AppLocalizations {
AppLocalizations._();
static List<Locale> supportedLocales =
SupportedLanguagesEnum.values.map((e) => Locale(e.name)).toList();
static List<LocalizationsDelegate> get delegates => const [
// AppLocalization.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
];
}

@ -0,0 +1,29 @@
import 'package:flutter/material.dart';
import 'package:test_sa/screens/login_screen/login_screen.dart';
import 'package:test_sa/screens/splash_screen/splash_screen.dart';
Map<String, Widget Function(BuildContext)> appRoutes = {
SplashScreen.routeName: (_) => const SplashScreen(),
LoginScreen.routeName: (_) => const LoginScreen(),
// LandPage.routeName: (_) => const LandPage(),
// Register.routeName: (_) => Register(),
// ProfilePage.routeName: (_) => ProfilePage(),
// ReportIssuesPage.routeName: (_) => const ReportIssuesPage(),
// RequestGasRefill.routeName: (_) => const RequestGasRefill(),
// CreateRequestPage.routeName: (_) => CreateRequestPage(),
// SingleHospitalPicker.routeName: (_) => SingleHospitalPicker(),
// SingleDevicePicker.routeName: (_) => SingleDevicePicker(),
// SingleDepartmentPicker.routeName: (_) => SingleDepartmentPicker(),
// ServiceRequestsPage.routeName: (_) => ServiceRequestsPage(),
// NotificationsPage.routeName: (_) => NotificationsPage(),
// FutureRequestServiceDetails.routeName: (_) =>
// FutureRequestServiceDetails(),
// PreventiveMaintenanceVisitsPage.routeName: (_) =>
// PreventiveMaintenanceVisitsPage(),
// RegularVisitsPage.routeName: (_) => RegularVisitsPage(),
// TrackGasRefillPage.routeName: (_) => const TrackGasRefillPage(),
// RequestDeviceTransfer.routeName: (_) =>
// const RequestDeviceTransfer(),
// TrackDeviceTransferPage.routeName: (_) =>
// const TrackDeviceTransferPage(),
};

@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
import 'package:test_sa/core/constants/app_colors.dart';
class AppTheme {
AppTheme._();
static get theme => ThemeData(
fontFamily: "Poppins",
canvasColor: AppColors.primaryColor,
scaffoldBackgroundColor: AppColors.scaffoldBackgroundColor,
primaryColor: AppColors.primaryColor,
indicatorColor: AppColors.primaryColor,
colorScheme: const ColorScheme.light(
primary: AppColors.primaryColor,
onPrimary: Colors.white,
secondary: AppColors.secondaryColor,
onSecondary: Colors.white,
),
);
}

@ -0,0 +1,66 @@
class ApiConstants {
ApiConstants._();
static const host2 = "http://194.163.164.213/atoms/api";
static const host1 = "https://atoms.hmg.com/api";
// API Routes
static const login = "/handle/user/login"; // post
static const register = "/handle/create/user"; // post
static const updateProfile = "/update/user/profile"; // post
static const getHospitals = "/handle/return/all/clients"; // get
static const getDepartments = "/handle/return/all/departments"; // get
static const getEquipment = "/handle/return/all/client/equipments"; // get ?client=208051
static const getServiceRequests = "/return/user/calls"; // get
static const getPreventiveMaintenanceVisits = "/return/user/calibrations"; // get
static const updatePreventiveMaintenanceVisits = "/update/user/calibrations"; // get
static const getRegularVisits = "/return/user/ppm"; // get
static const updateRegularVisits = "/update/user/ppm"; // get
static const getSingleServiceRequest = "/return/call/information"; // get
static const getNotifications = "/return/user/notification"; // get
static const getRecentNotifications = "/return/user/recent/notification"; // get
static const createRequest = "/handle/create/request"; // get
static const createReport = "/handle/create/report/issue"; // get
static const updateRequestDate = "/handle/update/request"; // get
// service report
static const createServiceReport = "/handle/create/service/report"; // get
static const updateServiceReport = "/handle/update/service/report"; // get
static const getServiceReport = "/handle/view/service/report"; // get
static const createDuplicatedReport = "/handle/duplicate/request"; // get
static const getServiceReportReasons = "/return/service/report/reasons"; // get
static const getServiceReportTypes = "/return/service/report/type"; // get
static const getServiceReportStatus = "/return/service/report/status"; // get
static const getServiceReportLastCalls = "/return/call/last/situation"; // get
static const getServiceTypes = "/return/service/type"; // get
static const getPartNumber = "/handle/return/all/parts"; // get
static const getServiceReportPriority = "/return/call/priority/list"; // get
static const getServiceReportDefectTypes = "/return/call/defect/type/list"; // get
//gas refill
static const getGasTypes = "/return/gas/refill/types"; // get
static const getGasCylinderSize = "/return/gas/refill/size/cylinder"; // get
static const getGasStatus = "/return/gas/refill/status"; // get
static const requestGasRefill = "/create/gas/refill"; // get
static const updateGasRefill = "/update/gas/refill/"; // get
static const getGasRefill = "/search/gas/refill"; // get
//device transfer
static const requestDeviceTransfer = "/create/transfer/asset"; // get
static const updateDeviceTransfer = "/update/transfer/asset"; // get
static const getDeviceTransfer = "/search/transfer/asset"; // get
// employee
static const getEmployees = "/return/assigned/employee"; // get
// pentry
static const getPentry = "/return/pentry/details"; // get
static const updatePentry = "/update/pentry/details"; // get
static const getPentryTaskStatus = "/return/pentry/task/status"; // get
static const getPentryVisitStatus = "/return/pentry/visit/status/list"; // get
static const getPentryStatus = "/return/pentry/status/list"; // get
// contacts
static const getPentryContacts = "/handle/return/all/contacts"; // get
}

@ -0,0 +1,50 @@
import 'package:flutter/material.dart';
class AppColors {
AppColors._();
static const Color white = Color(0xffffffff);
static const Color black = Color(0xff000000);
static const Color grey3A = Color(0xff2e303a);
static const Color grey = Color(0xffe1e7e7);
static const green = Colors.green;
static const Color orange = Colors.orange;
static const Color deepOrange = Colors.deepOrangeAccent;
static const Color red = Colors.red;
static const Color deepRed = Color(0xFFD32F2F);
static const Color scaffoldBackgroundColor = Color(0xffffffff);
static const Color secondaryColor = Color(0xff111427);
static const Color primaryColor = Color(0xff5bb0da);
static const Color cyan = Color(0xff4A8DB7);
static const Color onPrimaryColor = Color(0xffffffff);
static const Color inputFieldBackgroundColor = Color(0xfff5f5f5);
static const Color greyEF = Color(0xffEFEFEF);
static Color getRequestStatusColor(int id) {
switch (id) {
case 4:
return deepRed;
case 6:
return green;
case 5:
return orange;
case 8:
return green;
case 9:
return orange;
default:
return grey;
}
}
static Color getGasStatusColor(int id) {
switch (id) {
case 0:
return orange;
case 1:
return green;
default:
return grey;
}
}
}

@ -0,0 +1,20 @@
enum SupportedLanguagesEnum { ar, en }
enum RequestMethod { get, post, put, delete }
enum ApiExceptionsEnum {
badRequest(10),
unauthorized(10),
forbidden(10),
notFound(10),
internalServerError(10),
upgradeRequired(10),
badResponseFormat(10),
other(10),
timeout(10),
unknown(10);
final int statusCode;
const ApiExceptionsEnum(this.statusCode);
}

@ -0,0 +1,3 @@
import 'package:flutter/widgets.dart';
extension ContextExtension on BuildContext {}

@ -0,0 +1,16 @@
import 'package:flutter/material.dart';
import 'package:test_sa/core/constants/app_colors.dart';
extension NumExtension on num {
Widget get height => SizedBox(height: toDouble());
Widget get width => SizedBox(width: toDouble());
Widget get divider => Divider(
height: toDouble(),
thickness: toDouble(),
color: AppColors.greyEF,
);
Widget get makeItSquare => SizedBox(width: toDouble(), height: toDouble());
}

@ -0,0 +1 @@
extension StringExtension on String {}

@ -0,0 +1,3 @@
import 'package:flutter/material.dart';
extension WidgetExtension on Widget {}

@ -0,0 +1,46 @@
import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/providers/settings_provider.dart';
class ProviderScope extends StatelessWidget {
final Widget child;
const ProviderScope({required this.child, Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => SettingsProvider()),
// ChangeNotifierProvider(create: (_) => UserProvider()),
// ChangeNotifierProvider(create: (_) => HospitalsProvider()),
// ChangeNotifierProvider(create: (_) => DevicesProvider()),
// ChangeNotifierProvider(create: (_) => ServiceRequestsProvider()),
// ChangeNotifierProvider(create: (_) => DepartmentsProvider()),
// ChangeNotifierProvider(create: (_) => NotificationsProvider()),
// ChangeNotifierProvider(
// create: (_) => PreventiveMaintenanceVisitsProvider()),
// ChangeNotifierProvider(create: (_) => RegularVisitsProvider()),
// ChangeNotifierProvider(create: (_) => PartsProvider()),
// ChangeNotifierProvider(create: (_) => ServiceReportReasonsProvider()),
// ChangeNotifierProvider(create: (_) => ServiceReportStatusProvider()),
// ChangeNotifierProvider(create: (_) => ServiceReportTypesProvider()),
// ChangeNotifierProvider(create: (_) => ServiceStatusProvider()),
// ChangeNotifierProvider(create: (_) => ServiceReportLastCallsProvider()),
// ChangeNotifierProvider(create: (_) => GasCylinderSizesProvider()),
// ChangeNotifierProvider(create: (_) => GasStatusProvider()),
// ChangeNotifierProvider(create: (_) => GasTypesProvider()),
// ChangeNotifierProvider(create: (_) => GasRefillProvider()),
// ChangeNotifierProvider(create: (_) => DeviceTransferProvider()),
// ChangeNotifierProvider(create: (_) => EmployeesProvider()),
// ChangeNotifierProvider(create: (_) => PentryTaskStatusProvider()),
// ChangeNotifierProvider(create: (_) => PentryVisitStatusProvider()),
// ChangeNotifierProvider(create: (_) => PentryStatusProvider()),
// ChangeNotifierProvider(create: (_) => ServiceRequestPriorityProvider()),
// ChangeNotifierProvider(
// create: (_) => ServiceRequestDefectTypesProvider()),
],
child: child,
);
}
}

@ -0,0 +1,59 @@
import 'dart:convert';
import 'package:http/http.dart' as http;
import 'package:test_sa/core/enums.dart';
class ApiClient {
final String baseUrl, endPoint;
final RequestMethod requestMethod;
ApiClient.request({
required this.baseUrl,
required this.endPoint,
required this.requestMethod,
});
Future<Map<String, dynamic>> execute({
String? token,
Map<String, String>? headers,
Map<String, dynamic>? queryParameters,
Object? body,
}) async {
final url = Uri.tryParse(baseUrl + endPoint);
if (url != null) {
late http.Response response;
switch (requestMethod) {
case RequestMethod.get:
response = await http.get(url, headers: headers);
break;
case RequestMethod.post:
response = await http.post(url, headers: headers, body: body);
break;
case RequestMethod.put:
response = await http.put(url, headers: headers, body: body);
break;
case RequestMethod.delete:
response = await http.delete(url, headers: headers, body: body);
break;
}
return await _handleResponse(response);
} else {
throw ApiExceptionsEnum.other;
}
}
Future<Map<String, dynamic>> _handleResponse(http.Response response) {
print('status code ${response.statusCode} : ${response.request?.url}');
if (response.statusCode == 200) {
return jsonDecode(response.body);
} else if (response.statusCode == 401) {
throw ApiExceptionsEnum.unauthorized;
} else if (response.statusCode == 400) {
throw ApiExceptionsEnum.badRequest;
} else if (response.statusCode == 500) {
throw ApiExceptionsEnum.internalServerError;
}
throw ApiExceptionsEnum.unknown;
}
}

@ -0,0 +1,18 @@
import 'package:test_sa/core/enums.dart';
import 'package:test_sa/data/api/api_client.dart';
import 'package:test_sa/data/models/user_model.dart';
class UserService {
static UserService instance = UserService._internal();
UserService._internal();
Future<UserModel> getUser() async {
final response = await ApiClient.request(
baseUrl: 'baseUrl',
endPoint: 'endPoint',
requestMethod: RequestMethod.get,
).execute();
return UserModel.fromJson(response);
}
}

@ -0,0 +1,7 @@
class UserModel {
UserModel();
factory UserModel.fromJson(Map<String, dynamic> json) {
return UserModel();
}
}

@ -2,169 +2,58 @@ import 'dart:io';
import 'package:firebase_core/firebase_core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:provider/provider.dart';
import 'package:test_sa/controllers/localization/localization.dart';
import 'package:test_sa/controllers/providers/api/departments_provider.dart';
import 'package:test_sa/controllers/providers/api/device_transfer_provider.dart';
import 'package:test_sa/controllers/providers/api/devices_provider.dart';
import 'package:test_sa/controllers/providers/api/gas_refill_provider.dart';
import 'package:test_sa/controllers/providers/api/hospitals_provider.dart';
import 'package:test_sa/controllers/providers/api/notifications_provider.dart';
import 'package:test_sa/controllers/providers/api/regular_visits_provider.dart';
import 'package:test_sa/controllers/providers/api/service_requests_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/employee/employee_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_cylinder_size_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_status_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/gas_refill/gas_types_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_task_status_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/pentry/pentry_visit_status_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_defect_types_provider.dart';
import 'package:test_sa/controllers/providers/api/status_drop_down/report/service_report_priority_provider.dart';
import 'package:test_sa/views/app_style/colors.dart';
import 'package:test_sa/views/pages/login.dart';
import 'package:test_sa/views/pages/register.dart';
import 'package:test_sa/views/pages/splash_screen.dart';
import 'package:test_sa/views/pages/user/gas_refill/request_gas_refill.dart';
import 'package:test_sa/views/pages/user/gas_refill/track_gas_refill.dart';
import 'package:test_sa/views/pages/user/land_page.dart';
import 'package:test_sa/views/pages/user/notifications/notifications_page.dart';
import 'package:test_sa/views/pages/user/profile_page.dart';
import 'package:test_sa/views/pages/user/report_issues_page.dart';
import 'package:test_sa/views/pages/user/requests/create_request.dart';
import 'package:test_sa/views/pages/user/requests/future_request_service_details.dart';
import 'package:test_sa/views/pages/user/requests/requests_page.dart';
import 'package:test_sa/views/pages/user/visits/preventive_maintenance_visits_page.dart';
import 'package:test_sa/views/pages/user/visits/regular_visits_page.dart';
import 'package:test_sa/views/widgets/departments/single_department_picker.dart';
import 'package:test_sa/views/widgets/equipment/single_device_picker.dart';
import 'package:test_sa/providers/settings_provider.dart';
import 'package:test_sa/screens/splash_screen/splash_screen.dart';
import 'controllers/providers/api/parts_provider.dart';
import 'controllers/providers/api/preventive_maintenance_visits_provider.dart';
import 'controllers/providers/api/status_drop_down/pentry/pentry_status_provider.dart';
import 'controllers/providers/api/status_drop_down/report/service_report_last_calls_provider.dart';
import 'controllers/providers/api/status_drop_down/report/service_report_reasons_provider.dart';
import 'controllers/providers/api/status_drop_down/report/service_report_status_provider.dart';
import 'controllers/providers/api/status_drop_down/report/service_report_types_provider.dart';
import 'controllers/providers/api/status_drop_down/report/service_types_provider.dart';
import 'controllers/providers/api/user_provider.dart';
import 'controllers/providers/settings/setting_provider.dart';
import 'views/pages/device_transfer/request_device_transfer.dart';
import 'views/pages/device_transfer/track_device_transfer.dart';
import 'views/widgets/hospitals/single_hospital_picker.dart';
import 'core/app_configs/app_localizations.dart';
import 'core/app_configs/app_routes.dart';
import 'core/app_configs/app_theme.dart';
import 'core/utils/provider_scope.dart';
void main() async {
WidgetsFlutterBinding.ensureInitialized();
if (Platform.isIOS) {
await Firebase.initializeApp(
options: const FirebaseOptions(apiKey: "AIzaSyACQkSleNwU1jzEKR5ho1uSfZERokwwAbc", appId: "1:973582662416:ios:bc4a8061444c6a08fbc395", messagingSenderId: "973582662416", projectId: "atoms-fb912"),
options: const FirebaseOptions(
apiKey: "AIzaSyACQkSleNwU1jzEKR5ho1uSfZERokwwAbc",
appId: "1:973582662416:ios:bc4a8061444c6a08fbc395",
messagingSenderId: "973582662416",
projectId: "atoms-fb912",
),
);
} else {
await Firebase.initializeApp();
}
runApp(
ChangeNotifierProvider(
create: (_) => SettingProvider(),
child: MyApp(),
)
);
runApp(const EntryPoint());
}
class MyApp extends StatelessWidget {
// This widget is the root of your application.
class EntryPoint extends StatelessWidget {
const EntryPoint({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
final _settingProvider = Provider.of<SettingProvider>(context);
return MultiProvider(
providers: [
ChangeNotifierProvider(create: (_) => UserProvider()),
ChangeNotifierProvider(create: (_) => HospitalsProvider()),
ChangeNotifierProvider(create: (_) => DevicesProvider()),
ChangeNotifierProvider(create: (_) => ServiceRequestsProvider()),
ChangeNotifierProvider(create: (_) => DepartmentsProvider()),
ChangeNotifierProvider(create: (_) => NotificationsProvider()),
ChangeNotifierProvider(create: (_) => PreventiveMaintenanceVisitsProvider()),
ChangeNotifierProvider(create: (_) => RegularVisitsProvider()),
ChangeNotifierProvider(create: (_) => PartsProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportReasonsProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportTypesProvider()),
ChangeNotifierProvider(create: (_) => ServiceStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceReportLastCallsProvider()),
ChangeNotifierProvider(create: (_) => GasCylinderSizesProvider()),
ChangeNotifierProvider(create: (_) => GasStatusProvider()),
ChangeNotifierProvider(create: (_) => GasTypesProvider()),
ChangeNotifierProvider(create: (_) => GasRefillProvider()),
ChangeNotifierProvider(create: (_) => DeviceTransferProvider()),
ChangeNotifierProvider(create: (_) => EmployeesProvider()),
ChangeNotifierProvider(create: (_) => PentryTaskStatusProvider()),
ChangeNotifierProvider(create: (_) => PentryVisitStatusProvider()),
ChangeNotifierProvider(create: (_) => PentryStatusProvider()),
ChangeNotifierProvider(create: (_) => ServiceRequestPriorityProvider()),
ChangeNotifierProvider(create: (_) => ServiceRequestDefectTypesProvider()),
],
return ProviderScope(
child: GestureDetector(
onTap: () {
FocusScopeNode currentFocus = FocusScope.of(context);
if (!currentFocus.hasPrimaryFocus) {
FocusManager.instance.primaryFocus.unfocus();
FocusManager.instance.primaryFocus?.unfocus();
}
},
child: MaterialApp(
child: Consumer<SettingsProvider>(
builder: (context, settingProvider, _) => MaterialApp(
title: 'ATOMS',
debugShowCheckedModeBanner: false,
theme: ThemeData(
fontFamily: "Poppins",
//canvasColor: AColors.primaryColor,
scaffoldBackgroundColor: AColors.scaffoldBackgroundColor,
primaryColor: AColors.primaryColor,
indicatorColor: AColors.primaryColor,
colorScheme: const ColorScheme.light(
primary: AColors.primaryColor,
onPrimary: Colors.white,
secondary: AColors.secondaryColor,
onSecondary: Colors.white
)
theme: AppTheme.theme,
localizationsDelegates: AppLocalizations.delegates,
supportedLocales: AppLocalizations.supportedLocales,
locale: settingProvider.locale,
initialRoute: SplashScreen.routeName,
routes: appRoutes,
),
localizationsDelegates: const [
// ... app-specific localization delegate[s] here
AppLocalization.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [
Locale('en'),
Locale('ar'),
],
locale: Locale(_settingProvider.language ?? 'en'),
initialRoute: SplashScreen.id,
routes: {
SplashScreen.id: (_)=> const SplashScreen(),
LandPage.id: (_)=> const LandPage(),
Login.id: (_)=> Login(),
Register.id: (_)=> Register(),
ProfilePage.id: (_)=> ProfilePage(),
ReportIssuesPage.id: (_)=> const ReportIssuesPage(),
RequestGasRefill.id: (_)=> const RequestGasRefill(),
CreateRequestPage.id: (_)=> CreateRequestPage(),
SingleHospitalPicker.id: (_)=> SingleHospitalPicker(),
SingleDevicePicker.id: (_)=> SingleDevicePicker(),
SingleDepartmentPicker.id: (_)=> SingleDepartmentPicker(),
ServiceRequestsPage.id: (_)=> ServiceRequestsPage(),
NotificationsPage.id: (_)=> NotificationsPage(),
FutureRequestServiceDetails.id: (_)=> FutureRequestServiceDetails(),
PreventiveMaintenanceVisitsPage.id: (_)=> PreventiveMaintenanceVisitsPage(),
RegularVisitsPage.id: (_)=> RegularVisitsPage(),
TrackGasRefillPage.id: (_)=> const TrackGasRefillPage(),
RequestDeviceTransfer.id: (_)=> const RequestDeviceTransfer(),
TrackDeviceTransferPage.id: (_)=> const TrackDeviceTransferPage(),
},
),
),
);
}
}

@ -0,0 +1,12 @@
import 'package:flutter/material.dart';
class SettingsProvider with ChangeNotifier {
Locale? _locale;
Locale? get locale => _locale;
set locale(Locale? value) {
_locale = value;
notifyListeners();
}
}

@ -0,0 +1,12 @@
import 'package:flutter/material.dart';
class LoginScreen extends StatelessWidget {
static const routeName = '/loginScreen';
const LoginScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return const Scaffold();
}
}

@ -0,0 +1,32 @@
import 'package:flare_flutter/flare_actor.dart';
import 'package:flutter/material.dart';
import 'package:test_sa/screens/login_screen/login_screen.dart';
class SplashScreen extends StatelessWidget {
static const routeName = "/splashScreen";
const SplashScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Center(
child: SizedBox(
width: MediaQuery.of(context).size.width / 1.1,
child: FlareActor(
"assets/rives/atoms_splash.flr",
fit: BoxFit.contain,
animation: "splash",
callback: (animation) async {
Navigator.of(context).pushNamed(LoginScreen.routeName);
// if (_settingProvider.isLoaded && _settingProvider.user != null) {
// _goToUserScreen(_settingProvider.user);
// }
},
),
),
),
);
}
}

@ -5,7 +5,7 @@ import 'package:test_sa/controllers/api_routes/urls.dart';
import 'package:test_sa/models/user.dart';
import 'package:flutter/foundation.dart';
import 'package:shared_preferences/shared_preferences.dart';
import '../settings/app_settings.dart';
import 'app_settings.dart';
class SettingProvider extends ChangeNotifier{

@ -15,19 +15,19 @@ import 'package:test_sa/views/pages/user/land_page.dart';
import 'login.dart';
class SplashScreen extends StatefulWidget {
static const String id = '/splash';
const SplashScreen({Key key}) : super(key: key);
static const String routeName = '/splashScreen';
const SplashScreen({Key? key}) : super(key: key);
@override
State<SplashScreen> createState() => _SplashScreenState();
}
class _SplashScreenState extends State<SplashScreen> {
SettingProvider _settingProvider;
UserProvider _userProvider;
_goToUserScreen(User user){
_goToUserScreen(User user) {
_userProvider.user = user;
// Navigator.of(context).pushNamed(Login.id);
Navigator.of(context).pushNamed(LandPage.id);
@ -37,31 +37,25 @@ class _SplashScreenState extends State<SplashScreen> {
void initState() {
Firebase.initializeApp();
NotificationManger.initialisation(
(notificationDetails) {
AppNotification notification = AppNotification.fromJson(json.decode(notificationDetails.payload));
if(notification.path == null || notification.path.isEmpty)
return;
Navigator.pushNamed(
context,
notification.path,
arguments: notification.requestId
);
}
, (id, title, body, payload) async {
});
NotificationManger.initialisation((notificationDetails) {
AppNotification notification =
AppNotification.fromJson(json.decode(notificationDetails.payload));
if (notification.path == null || notification.path.isEmpty) return;
Navigator.pushNamed(context, notification.path,
arguments: notification.requestId);
}, (id, title, body, payload) async {});
super.initState();
}
@override
Widget build(BuildContext context) {
_settingProvider = Provider.of<SettingProvider>(context,listen: false);
_userProvider = Provider.of<UserProvider>(context,listen: false);
_settingProvider = Provider.of<SettingProvider>(context, listen: false);
_userProvider = Provider.of<UserProvider>(context, listen: false);
return Scaffold(
backgroundColor: Colors.white,
body: Center(
child: SizedBox(
width: MediaQuery.of(context).size.width/1.1,
width: MediaQuery.of(context).size.width / 1.1,
child: FlareActor(
"assets/rives/atoms_splash.flr",
fit: BoxFit.contain,
@ -69,7 +63,7 @@ class _SplashScreenState extends State<SplashScreen> {
callback: (animation) async {
print(await FirebaseMessaging.instance.getToken());
Navigator.of(context).pushNamed(Login.id);
if(_settingProvider.isLoaded && _settingProvider.user != null){
if (_settingProvider.isLoaded && _settingProvider.user != null) {
_goToUserScreen(_settingProvider.user);
}
},

@ -41,7 +41,7 @@ import 'requests/requests_page.dart';
class LandPage extends StatefulWidget {
static const String id = "/land-page";
const LandPage({Key key}) : super(key: key);
const LandPage({Key? key}) : super(key: key);
@override
State<LandPage> createState() => _LandPageState();

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save