iq/lib/app/modules/drawerSide/views/drawer_side_view.dart

288 lines
12 KiB
Dart

import 'dart:io';
import 'package:flutter/material.dart';
import 'package:flutter_svg/flutter_svg.dart';
import 'package:get/get.dart';
import 'package:IQ/app/global/static_informs.dart';
import 'package:IQ/app/global/text_widget.dart';
import 'package:IQ/app/modules/login/bindings/login_binding.dart';
import 'package:IQ/app/modules/login/views/login_view.dart';
import 'package:IQ/app/routes/app_pages.dart';
import 'package:IQ/main.dart';
class DrawerSideView extends StatefulWidget {
const DrawerSideView({Key? key}) : super(key: key);
@override
State<DrawerSideView> createState() => _DrawerSideViewState();
}
class _DrawerSideViewState extends State<DrawerSideView>
with WidgetsBindingObserver {
final List<String> itemsStrings = [
'drawer_home'.tr,
'drawer_dataUsage'.tr,
// 'drawer_dataStream'.tr,
'drawer_availablePackages'.tr,
'drawer_wifi_test'.tr,
'drawer_notifications'.tr,
'drawer_logout'.tr,
'drawer_support'.tr,
'drawer_aboutApp'.tr,
];
final List<String> itemsIcons = [
'assets/drawer icons/icon1.svg',
'assets/drawer icons/icon2.svg',
// 'assets/dataflow.svg',
'assets/drawer icons/icon3.svg',
'assets/drawer icons/icon2.svg',
'assets/drawer icons/icon6.svg',
'assets/drawer icons/icon7.svg',
'assets/drawer icons/icon5.svg',
'assets/drawer icons/icon8.svg',
];
AlignmentGeometry alignment =
defaultLocale == "en" ? Alignment.centerLeft : Alignment.centerRight;
EdgeInsetsGeometry? marginAbout = defaultLocale == "en"
? const EdgeInsets.only(
left: 60.0,
)
: const EdgeInsets.only(
right: 80.0,
);
EdgeInsetsGeometry? marginOthers = defaultLocale == "en"
? const EdgeInsets.only(left: 60.0, top: 5)
: const EdgeInsets.only(right: 80.0, top: 5);
@override
void didChangeAppLifecycleState(AppLifecycleState state) {
super.didChangeAppLifecycleState(state);
if (state == AppLifecycleState.inactive ||
state == AppLifecycleState.detached ||
state == AppLifecycleState.paused) return;
if (state == AppLifecycleState.resumed) {
defaultLocale = Platform.localeName.split('_')[0];
alignment =
defaultLocale == "en" ? Alignment.centerLeft : Alignment.centerRight;
marginOthers = defaultLocale == "en"
? const EdgeInsets.only(left: 60.0, top: 5)
: const EdgeInsets.only(right: 80.0, top: 5);
}
}
@override
void initState() {
super.initState();
WidgetsBinding.instance.addObserver(this);
}
@override
void dispose() {
super.dispose();
WidgetsBinding.instance.removeObserver(this);
}
@override
Widget build(BuildContext context) {
return SizedBox(
width: widthSize(context) * 0.8,
child: Drawer(
backgroundColor: Colors.white,
child: Stack(
children: [
SingleChildScrollView(
child: Column(
children: [
const SizedBox(height: 250),
...itemsStrings.map(
(item) {
return Container(
margin: const EdgeInsets.symmetric(vertical: 8.0),
child: TextButton(
onPressed: () {
if (item == 'drawer_logout'.tr) {
Get.back();
storage.remove('token');
isExpired = false;
token = null;
setState(() {});
Get.offAll(
() => LoginView(),
binding: LoginBinding(),
);
} else if (item == 'drawer_dataUsage'.tr) {
Get.back();
Future.delayed(
const Duration(milliseconds: 300),
() => Get.offNamed(Routes.DATA_USAGE),
);
}
// else if (item == 'drawer_dataStream'.tr) {
// Get.back();
// Future.delayed(
// const Duration(milliseconds: 300),
// () => Get.offNamed(Routes.LIVE_DATA),
// );
// }
else if (item == 'drawer_availablePackages'.tr) {
Get.back();
Future.delayed(
const Duration(milliseconds: 300),
() => Get.offNamed(Routes.AVAILABLE_PACKAGES),
);
} else if (item == 'drawer_wifi_test'.tr) {
Get.back();
Future.delayed(
const Duration(milliseconds: 300),
() => Get.offNamed(Routes.WIFI_TEST),
);
} else if (item == 'drawer_notifications'.tr) {
Get.back();
Future.delayed(
const Duration(milliseconds: 300),
() => Get.offNamed(Routes.NOTIFICATIONS_SCREEN),
);
} else if (item == 'drawer_support'.tr) {
Get.back();
Future.delayed(
const Duration(milliseconds: 300),
() => Get.offNamed(Routes.CONTACT_US),
);
} else if (item == 'drawer_aboutApp'.tr) {
Get.back();
Future.delayed(
const Duration(milliseconds: 300),
() => Get.offNamed(Routes.ABOUT),
);
} else {
Get.back();
Future.delayed(
const Duration(milliseconds: 300),
() => Get.offNamed(Routes.HOME),
);
}
},
child: item != "drawer_aboutApp".tr
? Stack(
alignment: const Alignment(0, -2.5),
children: [
if (item == "drawer_support".tr)
Align(
child: Container(
margin: const EdgeInsets.only(
right: 10,
left: 10,
),
child: const Divider(),
),
),
Container(
margin: marginOthers,
child: Align(
alignment: alignment,
child: TextWidget(
color: Colors.black87,
fontSize: 18,
text: item,
fontWeight: FontWeight.normal,
textAlign: TextAlign.right,
),
),
),
Container(
margin:
const EdgeInsets.only(right: 25.0),
child: Align(
alignment: alignment,
child: item != 'drawer_dataStream'.tr
? SvgPicture.asset(
itemsIcons[
itemsStrings.indexOf(item)],
color: Colors.black,
width: 33,
height: 33,
)
: SvgPicture.asset(
itemsIcons[
itemsStrings.indexOf(item)],
color: Colors.black,
width: 25,
height: 25,
),
),
),
],
)
: Stack(
children: [
Container(
margin: marginAbout,
child: Align(
alignment: defaultLocale == "en"
? Alignment.centerLeft
: Alignment.centerRight,
child: TextWidget(
color: Colors.black87,
fontSize: 18,
text: item,
fontWeight: FontWeight.normal,
textAlign: TextAlign.right,
),
),
),
Container(
margin:
const EdgeInsets.only(right: 25.0),
child: Align(
alignment: defaultLocale == "en"
? Alignment.centerLeft
: Alignment.centerRight,
child: SvgPicture.asset(
itemsIcons[
itemsStrings.indexOf(item)],
color: Colors.black,
width: 33,
height: 33,
),
),
),
],
),
),
);
},
)
],
),
),
Container(
height: 250,
width: widthSize(context),
decoration: BoxDecoration(
color: brandColor,
image: const DecorationImage(
image: AssetImage('assets/background.png'),
fit: BoxFit.fill,
),
),
),
Container(
margin: const EdgeInsets.only(top: 80),
child: Align(
alignment: Alignment.topCenter,
child: SvgPicture.asset(
'assets/2/icon.svg',
height: 60,
width: 60,
),
),
),
],
),
),
);
}
}