non hmg employee cont-1

design_3.0_latest
Sikander Saleem 11 months ago
parent e6e152bfc0
commit 561881c7f2

@ -33,7 +33,8 @@ apply plugin: "com.huawei.agconnect"
android {
compileSdkVersion 34
ndkVersion flutter.ndkVersion
// ndkVersion flutter.ndkVersion
ndkVersion = "25.1.8937393"
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8

@ -37,6 +37,8 @@ class UserProvider extends ChangeNotifier {
bool get isLoading => _loading;
bool isUserConfirmSwipe = false;
set isLoading(bool isLoading) {
_loading = isLoading;
notifyListeners();

@ -91,7 +91,9 @@ class _AppTextFormFieldState extends State<AppTextFormField> {
widget.controller?.text = widget.initialValue!;
}
_focusNode = widget.node ?? FocusNode();
_initSpeech();
if(widget.showSpeechToText) {
_initSpeech();
}
super.initState();
}

@ -6,6 +6,7 @@ import 'package:shared_preferences/shared_preferences.dart';
import 'package:test_sa/controllers/providers/api/user_provider.dart';
import 'package:test_sa/controllers/providers/settings/app_settings.dart';
import 'package:test_sa/dashboard_latest/dashboard_view.dart';
import 'package:test_sa/dashboard_latest/widgets/app_bar_widget.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/int_extensions.dart';
import 'package:test_sa/extensions/string_extensions.dart';
@ -15,6 +16,7 @@ import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/common_widgets/app_filled_button.dart';
import 'package:test_sa/new_views/pages/land_page/create_request-type_bottomsheet.dart';
import 'package:test_sa/new_views/pages/land_page/my_request/my_requests_page.dart';
import 'package:test_sa/new_views/pages/land_page/non_hmg_employee_swipe_view.dart';
import 'package:test_sa/new_views/pages/settings_page.dart';
import 'package:test_sa/views/widgets/equipment/single_device_picker.dart';
@ -100,16 +102,18 @@ class _LandPageState extends State<LandPage> {
Widget build(BuildContext context) {
if (_userProvider == null) {
_userProvider = Provider.of<UserProvider>(context, listen: false);
_pages = <Widget>[
DashboardView(onDrawerPress: (() {
_scaffoldKey.currentState!.isDrawerOpen ? _scaffoldKey.currentState!.closeDrawer() : _scaffoldKey.currentState!.openDrawer();
})),
// const old_page.LandPage(),
const MyRequestsPage(),
if (_userProvider!.user!.type != UsersTypes.engineer) const SizedBox(),
// if (_userProvider!.user!.type != UsersTypes.engineer) const CalendarPage(),
const MyAssetsPage(fromBottomBar: true),
];
if (_userProvider!.isUserConfirmSwipe) {
_pages = <Widget>[
DashboardView(onDrawerPress: (() {
_scaffoldKey.currentState!.isDrawerOpen ? _scaffoldKey.currentState!.closeDrawer() : _scaffoldKey.currentState!.openDrawer();
})),
// const old_page.LandPage(),
const MyRequestsPage(),
if (_userProvider!.user!.type != UsersTypes.engineer) const SizedBox(),
// if (_userProvider!.user!.type != UsersTypes.engineer) const CalendarPage(),
const MyAssetsPage(fromBottomBar: true),
];
}
checkLocalAuth();
}
@ -129,42 +133,53 @@ class _LandPageState extends State<LandPage> {
},
child: Scaffold(
key: _scaffoldKey,
appBar: _pages.isEmpty
? PreferredSize(
preferredSize: const Size.fromHeight(kToolbarHeight),
child: AppBarWidget(
onDrawerPress: () {
_scaffoldKey.currentState!.isDrawerOpen ? _scaffoldKey.currentState!.closeDrawer() : _scaffoldKey.currentState!.openDrawer();
},
))
: null,
drawer: const AppDrawer(),
body: _pages[currentPageIndex],
bottomNavigationBar: AppBottomNavigationBar(
selectedIndex: currentPageIndex,
onPressed: (index) {
bool isEngineer = _userProvider!.user!.type == UsersTypes.engineer;
if (!isEngineer && index == 2) {
showModalBottomSheet(
context: context,
useSafeArea: true,
backgroundColor: Colors.white,
builder: (context) => const CreateRequestTypeBottomSheet(),
);
} else if (index == (!isEngineer ? 4 : 3)) {
showModalBottomSheet(
context: context,
useSafeArea: true,
backgroundColor: Colors.transparent,
builder: (context) => const ContactUsBottomSheet(),
);
} else {
setState(() {
currentPageIndex = index;
});
if (index == 1) {
setState(() {
showAppbar = false;
});
} else {
setState(() {
showAppbar = true;
});
}
}
},
),
body: _pages.isEmpty ? NonHmgEmployeeSwipeView() : _pages[currentPageIndex],
bottomNavigationBar: _pages.isEmpty
? null
: AppBottomNavigationBar(
selectedIndex: currentPageIndex,
onPressed: (index) {
bool isEngineer = _userProvider!.user!.type == UsersTypes.engineer;
if (!isEngineer && index == 2) {
showModalBottomSheet(
context: context,
useSafeArea: true,
backgroundColor: Colors.white,
builder: (context) => const CreateRequestTypeBottomSheet(),
);
} else if (index == (!isEngineer ? 4 : 3)) {
showModalBottomSheet(
context: context,
useSafeArea: true,
backgroundColor: Colors.transparent,
builder: (context) => const ContactUsBottomSheet(),
);
} else {
setState(() {
currentPageIndex = index;
});
if (index == 1) {
setState(() {
showAppbar = false;
});
} else {
setState(() {
showAppbar = true;
});
}
}
},
),
),
);
}

@ -0,0 +1,84 @@
import 'package:flutter/material.dart';
import 'package:nfc_manager/nfc_manager.dart';
import 'package:test_sa/extensions/context_extension.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
class NonHmgEmployeeSwipeView extends StatefulWidget {
NonHmgEmployeeSwipeView({Key? key}) : super(key: key);
@override
_NonHmgEmployeeSwipeViewState createState() {
return _NonHmgEmployeeSwipeViewState();
}
}
class _NonHmgEmployeeSwipeViewState extends State<NonHmgEmployeeSwipeView> {
bool isNfcEnabled = false;
@override
void initState() {
super.initState();
checkForNfcAndLocationPermission();
}
void checkForNfcAndLocationPermission() async {
isNfcEnabled = await NfcManager.instance.isAvailable();
}
@override
void dispose() {
super.dispose();
}
@override
Widget build(BuildContext context) {
return Container(
padding: const EdgeInsets.all(16),
margin: const EdgeInsets.only(top: 21),
decoration: BoxDecoration(borderRadius: BorderRadius.circular(30), color: Colors.white, border: Border.all(color: AppColor.white936.withOpacity(.05), width: 1)),
width: double.infinity,
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Text(
"Mark Attendance",
style: AppTextStyles.heading5.copyWith(color: context.isDark ? AppColor.neutral30 : AppColor.neutral50),
),
GridView(
physics: const NeverScrollableScrollPhysics(),
shrinkWrap: true,
padding: const EdgeInsets.only(bottom: 0, top: 16),
gridDelegate:
SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: (MediaQuery.of(context).size.width < 550) ? 3 : 5, childAspectRatio: 1 / 1, crossAxisSpacing: 16, mainAxisSpacing: 16),
children: <Widget>[
gridItem("Nfc", Icons.nfc, isNfcEnabled).onPress(isNfcEnabled ? () {} : null),
gridItem("Qr Scan", Icons.qr_code, true).onPress(() {}),
],
)
],
),
);
}
Widget gridItem(String label, IconData iconData, bool enable) {
return Container(
padding: const EdgeInsets.all(16),
decoration: BoxDecoration(borderRadius: BorderRadius.circular(25), color: AppColor.white30, border: Border.all(color: AppColor.white936.withOpacity(.03), width: 1)),
alignment: Alignment.center,
child: Column(
//mainAxisSize: MainAxisSize.min,
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
children: [
Icon(iconData, color: enable ? AppColor.black35 : Colors.grey),
Text(
label,
style: AppTextStyles.heading6.copyWith(color: enable ? AppColor.black35 : Colors.grey),
),
],
),
);
}
}

@ -0,0 +1,67 @@
import 'dart:async';
import 'package:flutter/material.dart';
import 'package:geolocator/geolocator.dart';
import 'package:permission_handler/permission_handler.dart';
class Location {
static void havePermission(Function(bool) callback) {
Geolocator.checkPermission().then((value) async {
if (value == LocationPermission.denied || value == LocationPermission.deniedForever) {
value = await Geolocator.requestPermission();
callback(![LocationPermission.denied, LocationPermission.deniedForever].contains(value));
} else {
callback(true);
}
});
}
static void isEnabled(Function(bool) callback) {
Geolocator.isLocationServiceEnabled().then((value) => callback(value));
}
static bool _listeningSettingChange = true;
static void listenGPS({bool change = true, Function(bool)? onChange}) async {
_listeningSettingChange = change;
if (change == false) return;
Future.doWhile(() async {
await Future.delayed(const Duration(milliseconds: 1000));
var enable = await Geolocator.isLocationServiceEnabled();
onChange!(enable);
return _listeningSettingChange;
});
}
static void locationFun(Function(bool) completion, BuildContext context) {
Permission.location.isGranted.then((isGranted) {
if (!isGranted) {
Permission.location.request().then((granted) {
completion(granted == PermissionStatus.granted);
});
}
completion(isGranted);
});
}
static void getCurrentLocation(Function(Position position, bool isMocked) callback, Function errorCallBack, BuildContext context) {
void done(Position position) {
//AppStorage.sp.saveLocation(position);
bool isMocked = position.isMocked;
callback(position, isMocked);
}
locationFun((granted) {
if (granted) {
Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.medium, timeLimit: const Duration(seconds: 5)).then((value) {
done(value);
}).catchError((err) {
errorCallBack();
});
} else {
// AppPermissions
}
}, context);
}
}

@ -949,6 +949,14 @@ packages:
url: "https://pub.dev"
source: hosted
version: "1.0.0"
nfc_manager:
dependency: "direct main"
description:
name: nfc_manager
sha256: f5be75e90f8f2bff3ee49fbd7ef65bdd4a86ee679c2412e71ab2846a8cff8c59
url: "https://pub.dev"
source: hosted
version: "3.5.0"
octo_image:
dependency: transitive
description:

@ -89,6 +89,7 @@ dependencies:
huawei_push: ^6.5.0+300
huawei_location: ^6.11.0+301
geolocator: ^9.0.2
nfc_manager: ^3.2.0
local_auth_darwin: any
dev_dependencies:

Loading…
Cancel
Save