feat: Settings page add Information and Help pages

This commit is contained in:
sBubshait 2025-08-03 10:06:53 +03:00
parent 481615260c
commit 45228099bd
5 changed files with 373 additions and 0 deletions

11
frontend/app_info.txt Normal file
View File

@ -0,0 +1,11 @@
Wesal App - Connecting Colleagues
Wesal (وصال) is a social networking mobile application designed specifically for connecting colleagues and transforming workplace social interactions. The app name is Arabic for "connection" or "union."
It is a platform that enhances communication and collaboration among division members allowing them to build deeper connections and share experiences beyond formal work-related discussions.
The app was fully developed by Saleh Bubshait within the COD/DPSD/ERP Mgmt Group. However, the app was proposed by Weed Batarfi and Insijam team.
The app is being minimally maintained but is not actively developed at the moment as the developer is currently on assignment. For any help or inquiries, please reach out to the DPSD/ERP Mgmt Group.
Thank you for using Wesal!

View File

@ -0,0 +1,16 @@
Wesal App - Connecting Colleagues
Wesal (وصال) is a social networking mobile application designed specifically for connecting colleagues and transforming workplace social interactions. The app name is Arabic for "connection" or "union."
Features:
• Social feed for sharing updates and thoughts
• Event invitations and RSVP management
• Real-time notifications for engagement
• Profile management and customization
• Secure authentication and data protection
This application was developed to foster better communication and stronger relationships among team members, making workplace collaboration more enjoyable and effective.
For technical support or account-related inquiries, please contact the ERP Management Group from your official company email address.
Thank you for using Wesal!

View File

@ -0,0 +1,181 @@
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
class InformationScreen extends StatefulWidget {
const InformationScreen({Key? key}) : super(key: key);
@override
_InformationScreenState createState() => _InformationScreenState();
}
class _InformationScreenState extends State<InformationScreen> {
String appInfo = '';
bool isLoading = true;
@override
void initState() {
super.initState();
_loadAppInfo();
}
Future<void> _loadAppInfo() async {
try {
final String info = await rootBundle.loadString('assets/app_info.txt');
setState(() {
appInfo = info;
isLoading = false;
});
} catch (e) {
print('Error loading app info: $e');
setState(() {
appInfo = 'Unable to load app information.';
isLoading = false;
});
}
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text(
'Information',
style: TextStyle(fontWeight: FontWeight.w600),
),
backgroundColor: Colors.white,
foregroundColor: Color(0xFF6A4C93),
elevation: 0,
bottom: PreferredSize(
preferredSize: Size.fromHeight(1),
child: Container(height: 1, color: Colors.grey[200]),
),
),
body: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [Color(0xFF32B0A5), Color(0xFF4600B9)],
),
),
child: SafeArea(
child: Padding(
padding: EdgeInsets.all(24),
child: Column(
children: [
Expanded(
child: SingleChildScrollView(
child: Column(
children: [
SizedBox(height: 20),
// App Logo
Container(
padding: EdgeInsets.all(24),
child: Text(
'وصال',
style: TextStyle(
fontFamily: 'Blaka',
fontSize: 80,
fontWeight: FontWeight.w200,
color: Colors.white,
shadows: [
Shadow(
offset: Offset(2, 2),
blurRadius: 4,
color: Colors.black.withOpacity(0.3),
),
],
),
),
),
SizedBox(height: 20),
// App Version
Container(
padding: EdgeInsets.symmetric(
horizontal: 20,
vertical: 8,
),
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.2),
borderRadius: BorderRadius.circular(20),
),
child: Text(
'Version 1.0.0',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w500,
color: Colors.white,
),
),
),
SizedBox(height: 40),
// App Information
Container(
padding: EdgeInsets.all(24),
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.1),
borderRadius: BorderRadius.circular(16),
border: Border.all(
color: Colors.white.withOpacity(0.3),
),
),
child: isLoading
? Center(
child: CircularProgressIndicator(
valueColor: AlwaysStoppedAnimation<Color>(
Colors.white,
),
),
)
: Text(
appInfo,
style: TextStyle(
fontSize: 16,
color: Colors.white.withOpacity(0.9),
height: 1.6,
),
textAlign: TextAlign.center,
),
),
// Additional info
],
),
),
),
SizedBox(height: 24),
Container(
width: double.infinity,
height: 56,
child: ElevatedButton(
onPressed: () => Navigator.of(context).pop(),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.white,
foregroundColor: Color(0xFF6A4C93),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
elevation: 4,
),
child: Text(
'Back to Settings',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
),
),
),
),
],
),
),
),
),
);
}
}

View File

@ -0,0 +1,163 @@
import 'package:flutter/material.dart';
class SupportScreen extends StatelessWidget {
const SupportScreen({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Support', style: TextStyle(fontWeight: FontWeight.w600)),
backgroundColor: Colors.white,
foregroundColor: Color(0xFF6A4C93),
elevation: 0,
bottom: PreferredSize(
preferredSize: Size.fromHeight(1),
child: Container(height: 1, color: Colors.grey[200]),
),
),
body: Container(
decoration: BoxDecoration(
gradient: LinearGradient(
begin: Alignment.topCenter,
end: Alignment.bottomCenter,
colors: [
Color(0xFF32B0A5),
Color(0xFF4600B9),
],
),
),
child: SafeArea(
child: Padding(
padding: EdgeInsets.all(24),
child: Column(
children: [
Expanded(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Container(
width: 120,
height: 120,
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.2),
shape: BoxShape.circle,
),
child: Icon(
Icons.contact_support,
size: 60,
color: Colors.white,
),
),
SizedBox(height: 40),
Text(
'Need Help?',
style: TextStyle(
fontSize: 32,
fontWeight: FontWeight.bold,
color: Colors.white,
),
),
SizedBox(height: 16),
Text(
'We\'re here to help you!',
style: TextStyle(
fontSize: 18,
color: Colors.white.withOpacity(0.9),
),
),
SizedBox(height: 40),
Container(
padding: EdgeInsets.all(24),
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.1),
borderRadius: BorderRadius.circular(16),
border: Border.all(
color: Colors.white.withOpacity(0.3),
),
),
child: Column(
children: [
Icon(
Icons.email_outlined,
size: 40,
color: Colors.white,
),
SizedBox(height: 16),
Text(
'Contact Support',
style: TextStyle(
fontSize: 20,
fontWeight: FontWeight.w600,
color: Colors.white,
),
),
SizedBox(height: 12),
Text(
'For account creation, password reset, or any other assistance, please contact ERP Management Group from your official company email address.',
textAlign: TextAlign.center,
style: TextStyle(
fontSize: 16,
color: Colors.white.withOpacity(0.9),
height: 1.4,
),
),
SizedBox(height: 20),
Container(
padding: EdgeInsets.symmetric(horizontal: 16, vertical: 8),
decoration: BoxDecoration(
color: Colors.white.withOpacity(0.2),
borderRadius: BorderRadius.circular(8),
),
child: Text(
'ERP Management Group',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
color: Colors.white,
),
),
),
],
),
),
],
),
),
Container(
width: double.infinity,
height: 56,
child: ElevatedButton(
onPressed: () => Navigator.of(context).pop(),
style: ElevatedButton.styleFrom(
backgroundColor: Colors.white,
foregroundColor: Color(0xFF6A4C93),
shape: RoundedRectangleBorder(
borderRadius: BorderRadius.circular(12),
),
elevation: 4,
),
child: Text(
'Back to Settings',
style: TextStyle(
fontSize: 16,
fontWeight: FontWeight.w600,
),
),
),
),
],
),
),
),
),
);
}
}

View File

@ -25,6 +25,8 @@ dev_dependencies:
flutter:
uses-material-design: true
assets:
- assets/app_info.txt
fonts:
- family: Blaka
fonts: