diff --git a/assets/images/star_empty.svg b/assets/images/star_empty.svg
new file mode 100644
index 00000000..03cb916c
--- /dev/null
+++ b/assets/images/star_empty.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/images/star_filled.svg b/assets/images/star_filled.svg
new file mode 100644
index 00000000..16abaa52
--- /dev/null
+++ b/assets/images/star_filled.svg
@@ -0,0 +1,3 @@
+
diff --git a/lib/extensions/context_extension.dart b/lib/extensions/context_extension.dart
index 85299f73..82960243 100644
--- a/lib/extensions/context_extension.dart
+++ b/lib/extensions/context_extension.dart
@@ -19,6 +19,7 @@ extension BuildContextExtension on BuildContext {
SettingProvider get settingProvider => Provider.of(this, listen: false);
UserProvider get userProvider => Provider.of(this, listen: false);
+
bool isTablet() {
final mediaQueryData = MediaQuery.of(this);
final double screenWidth = mediaQueryData.size.width;
@@ -27,6 +28,9 @@ extension BuildContextExtension on BuildContext {
bool isTablet = (devicePixelRatio < 2 && (screenWidth >= 700 || screenHeight >= 700)) || (devicePixelRatio >= 2 && (screenWidth >= 1000 || screenHeight >= 1000));
return isTablet;
}
+
+
+
void showConfirmDialog(String message, {String? title, VoidCallback? onTap}) => showDialog(
context: this,
builder: (BuildContext cxt) => ConfirmDialog(message: message, onTap: onTap, title: title),
diff --git a/lib/modules/cx_module/chat/chat_page.dart b/lib/modules/cx_module/chat/chat_page.dart
new file mode 100644
index 00000000..64b1f626
--- /dev/null
+++ b/lib/modules/cx_module/chat/chat_page.dart
@@ -0,0 +1,36 @@
+import 'package:flutter/material.dart';
+import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
+
+class ChatPage extends StatefulWidget {
+ ChatPage({Key? key}) : super(key: key);
+
+ @override
+ _ChatPageState createState() {
+ return _ChatPageState();
+ }
+}
+
+class _ChatPageState extends State {
+ @override
+ void initState() {
+ super.initState();
+ }
+
+ @override
+ void dispose() {
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: const DefaultAppBar(title: "Req No. 343443"),
+ body: Column(
+ children: [
+
+
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/modules/cx_module/chat/chat_rooms_page.dart b/lib/modules/cx_module/chat/chat_rooms_page.dart
new file mode 100644
index 00000000..70883f80
--- /dev/null
+++ b/lib/modules/cx_module/chat/chat_rooms_page.dart
@@ -0,0 +1,92 @@
+import 'package:flutter/cupertino.dart';
+import 'package:flutter/material.dart';
+import 'package:test_sa/extensions/context_extension.dart';
+import 'package:test_sa/extensions/int_extensions.dart';
+import 'package:test_sa/extensions/text_extensions.dart';
+import 'package:test_sa/extensions/widget_extensions.dart';
+import 'package:test_sa/modules/cx_module/chat/chat_page.dart';
+import 'package:test_sa/new_views/app_style/app_color.dart';
+import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
+
+class ChatRoomsPage extends StatefulWidget {
+ ChatRoomsPage({Key? key}) : super(key: key);
+
+ @override
+ _ChatPageState createState() {
+ return _ChatPageState();
+ }
+}
+
+class _ChatPageState extends State {
+ @override
+ void initState() {
+ super.initState();
+ }
+
+ @override
+ void dispose() {
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: const DefaultAppBar(title: "Chats"),
+ body: SingleChildScrollView(
+ padding: const EdgeInsets.all(16),
+ child: ListView.separated(
+ shrinkWrap: true,
+ physics: const NeverScrollableScrollPhysics(),
+ padding: EdgeInsets.zero,
+ itemBuilder: (cxt, index) => Row(
+ children: [
+ Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ "Request No. : 432212",
+ maxLines: 1,
+ overflow: TextOverflow.ellipsis,
+ style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50, fontWeight: FontWeight.w600),
+ ),
+ Text(
+ "Request No. : 432212",
+ maxLines: 1,
+ overflow: TextOverflow.ellipsis,
+ style: AppTextStyles.bodyText2.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral120),
+ ),
+ ],
+ ).expanded,
+ getStatus(),
+ 8.width,
+ const Icon(
+ Icons.arrow_forward_ios_rounded,
+ size: 12,
+ color: AppColor.black20,
+ ),
+ ],
+ ).paddingOnly(top: 4, bottom: 4).onPress(() {
+ Navigator.push(context, CupertinoPageRoute(builder: (context) => ChatPage()));
+ return;
+ }),
+ separatorBuilder: (cxt, index) => const Divider().defaultStyle(context),
+ itemCount: 10)
+ .toShadowContainer(context, borderRadius: 20, showShadow: false, padding: 12)));
+ }
+
+ Widget getStatus() {
+ Color color = const Color(0xff3B755C);
+ return Container(
+ padding: const EdgeInsets.symmetric(vertical: 4, horizontal: 8),
+ decoration: BoxDecoration(
+ color: const Color(0xff62BE96).withOpacity(.6),
+ borderRadius: BorderRadius.circular(4),
+ ),
+ child: Text(
+ "In Progress",
+ maxLines: 1,
+ style: AppTextStyles.tinyFont2.copyWith(color: color),
+ ),
+ );
+ }
+}
diff --git a/lib/modules/cx_module/survey_page.dart b/lib/modules/cx_module/survey_page.dart
new file mode 100644
index 00000000..08c00de0
--- /dev/null
+++ b/lib/modules/cx_module/survey_page.dart
@@ -0,0 +1,137 @@
+import 'package:flutter/material.dart';
+import 'package:flutter/rendering.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';
+import 'package:test_sa/extensions/text_extensions.dart';
+import 'package:test_sa/extensions/widget_extensions.dart';
+import 'package:test_sa/modules/cm_module/views/components/action_button/footer_action_button.dart';
+import 'package:test_sa/modules/cx_module/chat/chat_rooms_page.dart';
+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/common_widgets/app_text_form_field.dart';
+import 'package:test_sa/new_views/common_widgets/default_app_bar.dart';
+
+class SurveyPage extends StatefulWidget {
+ SurveyPage({Key? key}) : super(key: key);
+
+ @override
+ _SurveyPageState createState() {
+ return _SurveyPageState();
+ }
+}
+
+class _SurveyPageState extends State {
+ int serviceSatisfiedRating = -1;
+ int serviceProvidedRating = -1;
+ String comments = "";
+
+ @override
+ void initState() {
+ super.initState();
+ }
+
+ @override
+ void dispose() {
+ super.dispose();
+ }
+
+ @override
+ Widget build(BuildContext context) {
+ return Scaffold(
+ appBar: const DefaultAppBar(title: "Survey"),
+ body: Column(
+ children: [
+ SingleChildScrollView(
+ padding: const EdgeInsets.all(16),
+ child: Column(
+ crossAxisAlignment: CrossAxisAlignment.start,
+ children: [
+ Text(
+ "How satisfied are you with our services?",
+ style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),
+ ),
+ 12.height,
+ SizedBox(
+ height: 32,
+ child: ListView.separated(
+ itemBuilder: (cxt, index) => (serviceSatisfiedRating >= index ? 'star_filled'.toSvgAsset() : 'star_empty'.toSvgAsset()).onPress(() {
+ setState(() {
+ serviceSatisfiedRating = index;
+ });
+ }),
+ shrinkWrap: true,
+ physics: const NeverScrollableScrollPhysics(),
+ separatorBuilder: (cxt, index) => 8.width,
+ itemCount: 5,
+ scrollDirection: Axis.horizontal,
+ ),
+ ),
+ 16.height,
+ Text(
+ "Was the service provided promptly by our engineer?",
+ style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),
+ ),
+ 12.height,
+ SizedBox(
+ height: 32,
+ child: ListView.separated(
+ itemBuilder: (cxt, index) => (serviceProvidedRating >= index ? 'star_filled'.toSvgAsset() : 'star_empty'.toSvgAsset()).onPress(() {
+ setState(() {
+ serviceProvidedRating = index;
+ });
+ }),
+ shrinkWrap: true,
+ physics: const NeverScrollableScrollPhysics(),
+ separatorBuilder: (cxt, index) => 8.width,
+ itemCount: 5,
+ scrollDirection: Axis.horizontal,
+ ),
+ ),
+ 16.height,
+ Text(
+ "Request Type",
+ style: AppTextStyles.bodyText.copyWith(color: context.isDark ? AppColor.neutral10 : AppColor.neutral50),
+ ),
+ 16.height,
+ AppTextFormField(
+ initialValue: "",
+ textInputType: TextInputType.multiline,
+ alignLabelWithHint: true,
+ labelText: "Additional Comments",
+ backgroundColor: AppColor.fieldBgColor(context),
+ style: TextStyle(fontWeight: FontWeight.w500, fontSize: context.isTablet() ? 16 : 12, color: context.isDark ? Colors.white : const Color(0xff3B3D4A)),
+ labelStyle: TextStyle(fontWeight: FontWeight.w500, fontSize: context.isTablet() ? 16 : 12, color: context.isDark ? Colors.white : const Color(0xff767676)),
+ floatingLabelStyle: TextStyle(fontWeight: FontWeight.w500, fontSize: context.isTablet() ? 16 : 12, color: context.isDark ? Colors.white : const Color(0xff3B3D4A)),
+ showShadow: false,
+ onChange: (value) {
+ comments = value;
+ },
+ ),
+ ],
+ ).toShadowContainer(context, borderRadius: 20, showShadow: false))
+ .expanded,
+ FooterActionButton.footerContainer(
+ context: context,
+ child: AppFilledButton(
+ label: context.translation.submit,
+ buttonColor: AppColor.primary10,
+ onPressed: () {
+ Navigator.push(context, MaterialPageRoute(builder: (context) => ChatRoomsPage()));
+ return;
+ if (serviceSatisfiedRating < 0) {
+ "Provide rate services satisfaction".showToast;
+ return;
+ }
+ if (serviceProvidedRating < 0) {
+ "Provide rate services provided by engineer".showToast;
+ return;
+ }
+ },
+ ),
+ ),
+ ],
+ ),
+ );
+ }
+}
diff --git a/lib/new_views/pages/login_page.dart b/lib/new_views/pages/login_page.dart
index 8c54e927..61760688 100644
--- a/lib/new_views/pages/login_page.dart
+++ b/lib/new_views/pages/login_page.dart
@@ -12,6 +12,7 @@ import 'package:test_sa/extensions/string_extensions.dart';
import 'package:test_sa/extensions/text_extensions.dart';
import 'package:test_sa/extensions/widget_extensions.dart';
import 'package:test_sa/models/new_models/general_response_model.dart';
+import 'package:test_sa/modules/cx_module/survey_page.dart';
import 'package:test_sa/new_views/app_style/app_color.dart';
import 'package:test_sa/new_views/forget_password_module/forget_passwod_verify_otp.dart';
import 'package:test_sa/new_views/pages/land_page/land_page.dart';
@@ -225,6 +226,9 @@ class _LoginPageState extends State {
}
Future _login() async {
+ // Navigator.push(context, MaterialPageRoute(builder: (context) => SurveyPage()));
+ //
+ // return;
if (!_formKey.currentState!.validate()) return;
if (privacyPolicyChecked == false) {