Download as pdf or txt
Download as pdf or txt
You are on page 1of 44

A PROJECT REPORT ON

“FireBox-App”

SUBMITTED TO JAI NARAIN VYAS UNIVERSITY,

JODHPUR

IN PARTIAL FULFILLMENT FOR AWARD OF DEGREE

OF

BACHELOR’S IN COMPUTER APPLICATIONS

(BATCH 2021-2024)

SUBMITTED BY

MALIK KHAN

SADIK

RAVI KUMAR

UNDER THE GUIDANCE OF

Mrs.SWETA BOHRA

(ASSISTANCT PROFESSOR)
LUCKY INSTITUTE OF PROFESSIONAL STUDIES

Affiliated to

JAI NARAIN VYAS UNIVERSITY, JODHPUR

Faculty of Information Technology


Lucky Institute of Professional Studies

Jodhpur

CERTIFICATE

This is to certify that the Project entitled


FireBox-APP
Has been prepared by

MALIK KHAN

SADIK

RAVI KUMAR

in partial fulfillment of the degree of BCA III year Examination 2024, under my
supervision and guidance.
Mrs.SWETA BOHRA
Assistant Professor
Faculty of Information Technology

Date: _________________
ACKNOWLEDGMENT
The success and outcome of this Project report required a lot of guidance and assistance
from many people, and we are extremely privileged to have got this all along the
completion of the report. All that we have done is only due to such supervision and
assistance and we would not forget to thank them.

We are grateful to the mentor Mrs.SWETA BOHRA for giving guidelines to make
the report successful. The interest and attention which has shown so graciously lavished
upon this work.

We extend our thanks to Dr. Saurabh Khatri (HOD, IT) for his cooperation, guidance,
encouragement, inspiration, support, and attention led to complete this report.

We would like to give sincere thanks to Dr. Manish Kachhawaha (Director) and Mr.
Arjun Singh Sankhala (Principal) for providing cordial environment to exhibit my
abilities to the fullest.

Yours Sincerely,

SADIK

MALIK KHAN

RAVI KUMAR
DECLARATION

We SADIK MALIK and RAVI, hereby declare that this Project “FireBox APP” is a
record of original work done by me under the supervision and guidance of Mrs.SWETA
BOHRA.(Asst.Prof.).

We further certify that this report work has not formed the basis for the award of the
Degree/Diploma or similar work to any candidate of any university and no part of this
report is reproduced as it is from any source without seeking permission.

Date: __________ RAVI KUMAR

SADIK

MALIK KHAN
ABSTRACT

FireBox-APPFireBox -APP is a comprehensive chatting application tailored specifically for college


communities, facilitating seamless communication and collaboration among students, faculty, and staff.
Developed with the aim of enhancing campus connectivity and fostering a sense of community, FireBox
-APP offers a wide range of features designed to streamline communication within the college
environment.

Key features of FireBox -APP include real-time messaging, group chats, announcements boards. These
features enable users to engage in meaningful conversations, coordinate group projects, and stay informed
about campus events.

The user interface of FireBox -APP is intuitive and user-friendly, ensuring ease of navigation for users of
all technical backgrounds. Customizable profiles allow users to personalize their accounts.

By fostering communication and collaboration, FireBox -APP contributes to a more connected and
cohesive college community. Whether used for academic purposes, extracurricular activities, or
administrative announcements, FireBox -APP serves as a central hub for college communication,
bringing students, faculty, and staff closer together.

In conclusion, FireBox -APP represents a valuable tool for college communities seeking to enhance
communication and collaboration among their members. With its user-friendly interface, comprehensive
features, and emphasis on security and privacy.
INDEX
S.NO TITLE PAGE NO

1 INTRODUCTION. 1

2 SYSTEM ANALYSIS 2

2.1 Existing System 2

2.2 Proposed System: 3

3 FEASIBILITY STUDY 4

3.1 Economic Feasibility 5

3.2 Technical Feasibility 5

3.3 Operational Feasibility 6

4 SYSTEM REQUIREMENT SPEC 7

4.1 Hardware Requirement Server 7

4.2 Software Requirement 7

5 SYSTEM DESIGN 8

5.1 Data Flow Diagram 9

5.2 E–R Diagram 12

5.3 Database Structure 14

6 PROJECT DESIGN 16

6.1 Screen Shots 16

6.2 Coding 19

7 TESTING 32

8 FUTURE ENHANCEMENT 34

9 CONCLUSION 35
---- REFERENCES 36
CHAPTER 1-INTRODUCTION

In today's digitally connected world, communication plays a pivotal role in both personal and professional
spheres. Mobile applications have become indispensable tools for facilitating instant communication and
collaboration among individuals and groups. Chat applications have gained widespread popularity due to
their ability to enable real-time messaging, file sharing, and multimedia communication.

This report presents an analysis of the "Chat-Box app," a chat application developed using Flutter, a
versatile and rapidly growing framework for building cross-platform mobile applications. Flutter offers
developers a comprehensive toolkit for creating rich, interactive user interfaces and seamless user
experiences across Android, iOS, and web platforms. Leveraging Flutter's capabilities, the Chat-Box app
aims to provide users with a reliable and feature-rich messaging platform that fosters communication and
collaboration.

1
CHAPTER 2-System Analysis

2.1 Existing System


ChatBox stands as a feature-rich communication application ,crafted with Flutter and seamlessly
integrated with Firebase,offering users to chat in realtime and efficient solution for talk with other users .
This existing system showcases a user-friendly interface.

Key Features
 Real-Time Messaging: Facilitates instant communication between users with minimal latency.
 Contact Management: Enables users to manage their contacts list, add new contacts, and block
or remove existing ones.
 Group Chats: Supports the creation and participation in group conversations with multiple users.
 Emojis : Enhances communication by offering a wide range of emojis.
 Status Updates: Allows users to set and view status updates to inform their contacts about their
availability or mood

Technology Stack
 Flutter: Developed using Flutter, a versatile UI toolkit for building natively compiled
applications for mobile, web, and desktop from a single codebase

 Firebase: Firebase Realtime Database ensures real-time data synchronization for a seamless user
experience. Firebase Authentication provides secure login processes, prioritizing user privacy.
Firebase Cloud Storage securely stores multimedia content associated with tasks.

2.2 Proposed System:


 The Proposed system which will allow the user to quickly and easily search an event
service for selling or buying.
 The register user can look for services as per needs.
 The system is design and developed in such a way that it tries to overcome all the pre
describe problems.
 This system being an online system will give accurate information regarding the services
which helps to view all the service information directly from anywhere.
 Proposed system is flexible and user friendly.
 Designing of site should be such that easy access of the information.
 If member avail the access of site they should register.
2
 Member should be able to change their password and able to change their account details.
 Member should be able to view overall services available in city.
 Member should be able to remove services.
 Administrator can only be able to make changes on the site.

3
CHAPTER 3-FEASIBILITY STUDY
Feasibility study is the most important step in system analysis. It is the determination of whether the
project is feasible or not. Once it has been determined that a project is feasible, the analyst can go ahead
and prepare the project specification which finalizes project requirement.
It provides data about user requirements and a full identification of system objectives. A feasibility study
is carried out to select the best system that meets performance standards.

Any system performance is judged under 3 steps:

 Statement of constraints: Encompassing all the factors that limit the solution of the problem.
 Identification of specific system objectives.
 Description of outputs as required by the users.

Eight steps involved in the feasibility analysis are:

 Form a project team and appoint a project leader.


 Prepare system flowcharts.
 Enumerate potential proposed system.
 Define and identify characteristics of proposed system.
 Determine and evaluate performance and cost effective of each proposed system.
 Weight system performance and cost data.
 Select the best-proposed system.
 Prepare and report final project directive to management.

There are 3 types of feasibility considerations:

• Economic feasibility
• Technical feasibility
• Operational feasibility

3.1 Economical Feasibility


Economic Feasibility deals about the economic impact faced by the organization to implement a new
system. Financial benefits must equal or exceed the costs. The cost of conducting a full system, including

4
software and hardware cost for the class of application being considered should be evaluated. By
implementing the computerized management software in our WedMart, we are able to store our record
electronically which replace the storage area, with this we are able to keep a backup of all our records.
This again helps in reducing the cost of stationery using earlier system and making our system
electronically better.
Economic analysis is the most frequently used method for evaluating the effectiveness of a new system.
More commonly known as cost/benefit analysis, the procedure is to determine the benefits and savings
that are expected from a candidate system and compare them with costs. If benefits outweigh costs, then
the decision is made to design and implement the system. An entrepreneur must accurately weight the
cost versus benefits before taking an action.
Economic Feasibility in this project:

 The cost to conduct a full system investigation is possible.


 There is no additional cost involved in maintaining the proposed system.

3.2 Technical Feasibility


This is concerned with specifying equipment and software that will successfully satisfy the user
requirement. The technical needs of the system may vary considerably, but it may centre on the following
situations:
 Whether the current/existing manual process of the system is compatible enough to accommodate
technical enhancements accommodated by the proposed candidate system.
 Hardware or software repairs and availability and maintenance in case of damage or wear-tear.
 The facility to produce outputs in a given time.
 Response time under certain conditions.
 Ability to process a certain value of transaction at a particular speed.
 The examining technical feasibility configuration of the system is given more importance than the
actual makes of hardware. The configuration should give the complete picture about the system’s
requirement. The existing computer system property supports this software. Hence it can be
concluded that the proposed system is technically feasible.

3.3 Operational Feasibility


This system can be implemented anywhere, as there is an adequate support for the user. With minimum
training the user can get familiar with it and can get better results. The system is easy to operate so it is
operationally feasible. This feasibility test asks if the system will work when it is developed and
installed. Operational feasibility in this project:

5
 The proposed system offers greater level of user-friendliness.
 The proposed system produces best results and gives high performance.
 Implemented easily. So, this project is operationally feasible.

6
CHAPTER 4-SYSTEM REQUIREMENT SPECIFICATIONS
1. 4.1 Hardware Requirements:
· RAM: Minimum 2GB (4GB recommended)
· Storage: Minimum 100MB available disk space
· Network: Stable internet connection for real-time messaging
· Display: Minimum resolution of 540x960 pixels
2. 4.2 Software Requirements:
· Operating System:
· Android: Android 6.0 (Marshmallow) or later
· iOS: iOS 11 or later
· Development Environment:
· Flutter SDK: Latest stable version installed
· Integrated Development Environment (IDE):
· Android Studio with Flutter plugin
· Visual Studio Code with Flutter extension
· Backend Services:
· Firebase: Used for backend services including authentication, real-time database,
and cloud storage
· Third-Party Integrations:
· APIs for multimedia services (e.g., cloud storage APIs for multimedia sharing)
· OAuth for third-party authentication (if required)
· Testing Tools:
· Emulators: Android Emulator, iOS Simulator for local testing
· Real Devices: Testing on actual Android and iOS devices
· Firebase Test Lab for automated testing on real devices (optional)
· Version Control:
· Git for version control and collaboration

· GitHub, GitLab, or Bitbucket for code repository management

7
CHAPTER 5-SYSTEM DESIGN

System Design is the most creative and challenging phase in the system life cycle. Design is the first step
into the development phase for any engineered product or system. Design is a creative process. A good
design is the key to effective system. System design is a solution how to approach the creation of a new
system. System design transforms a logic representation of what is required to do into the physical
specification. The specification is converted into physical reality during development.
 In the existing Wedding Planner system, users need to waste a lot of time and physical effort in
finding the place for the event and no proper information is provided to the user regarding the
event details like food, decoration, and budget.
 All the information is maintained in records which are difficult to view or modify.
 Sometimes the users themselves are not able to make the selection according to their own choices,
but in this application the user will directly make all the choices to their likings and no mediator
will be placed between the vendor and the user.
 The user will always stay in their budget and all his/her choices will be maintained neatly.
 Includes the design of application, network, databases, user interfaces, and system interfaces

Logical Design
The logical flow defines the functionality of a system. It includes the following steps:

 Reviews the current physical system – its data flows, file content, volumes, frequencies etc.
 Prepares output specifications – that is, determines the format, content and frequency of reports.
 Prepares input specifications – format, content and most of the input functions.
 Prepares edit, security and control specifications.
 Specifies the implementation plan.
 Prepares a logical design walk through of the information flow, output, input, controls, and
implementation plan.
 Reviews benefits, costs, target dates and system constraints.

Physical Design
Physical system produces the working systems by define the design specifications that tell the
programmers exactly what the candidate system must do. It includes the following steps:
 Design the physical system.
 Specify input and output media.
 Design the database and specify backup procedures.
 Design physical information flow through the system and a physical design Walk through.
8
 Plan system implementation.
 Prepare a conversion schedule and target date.
 Determine training procedures, courses and timetable.
 Devise a test and implementation plan and specify any new hardware/software.
 Update benefits, costs, and conversion date and system constraints.

5.1 Data Flow Diagram

Zero Level DFD - FireBox-App

Chat History
Management

Chat Chat Profile


Management
Management

FirBox-app

Chat User System User


Management Management

Login
Management

9
First Level DFD - FireBox-App

Chat Management Genrate Chat Report

Chat User Generate Chat User


Manegment Report

Chat Profiile Generate Chat Profile


Management Report

FirBox-app

Chat History Generate Chat History


Report

Login Management Check User Login


Details

System User Genetate System User


Management Report

10
Second Level DFD - FireBox-App

Admin Login Check


ToSys rolls for Manage Chat Details
access

Forget Manage Chat Profile Details

Passwor Check Manage


d Crede Module
Manage Chat History Details
ntials

Send Manage Chat User Details


Email To
User
Manage Smiley Chat Details

Manage Chat Group Details

Manage System Manage Roles OF Manage User Manage Report


Admins User Permissions

11
5.2 E-R Diagrams

Email Mobile LastMassa ID


no ge
LastMass
Count agetime
User has ChatRoom

UserId
Passwo ProfileP has ReceiverID
rd ic
UserNa SenderID
Massages
me ReadTime

MsgID

SendTime ReadTime

Table Name:-User

Primerykey :User_Id

Email User Mobil


eNo

Unread LastMassag
Count eTime

UserId LastMassag
e
ProfilePi
Passwor
c
d
UserNam
e

12
Table Name:-Massages

Primerykey :Massage_Id

SendTime ReadTime
Massages

MassageTim ReceiverID
e

Massage SenderID

Table Name:Chat_Room

Primery_key:ID

Chat_Room

ID

13
5.3 Database Structure
TableName user

Primery Key:UserId

Attributes DataTypes Size


UserId String 25
Email String 15
Password String 15
UserName String 10
UnreadCount Int 25
LastMassage String 20
LastMsgTime Int 20
Mobile String 10
ProfilePic String 35

TableName :Chat_Room

Primerykey:ID

Attributes DataTypes Size


ID String 50

14
TableName :Massages
Primery Key:MassageID

Attributes DataTypes Size


MassageID String 20
SendTime String 20
ReadTime String 20
Massage String DependOnInput/max
SenderID String 25
ReceiverId String 25

15
CHAPTER 6-PROJECT DESIGN

6.1 Screen Shot

16
17
18
6.2

6.2 Coding
Firebase.dart

import 'dart:async';
import 'package:chat_app/pref/shafed_pref.dart';
import 'package:chat_app/screens/onbording_screen/sign_in.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';

import '../bottom_nav_page.dart';

class Splash extends StatefulWidget {


const Splash({super.key});

19
@override
State<Splash> createState() => _SplashState();
}

class _SplashState extends State<Splash> {


@override
void initState() {
whereToGo();
super.initState();
}
whereToGo(){
Timer(const Duration(seconds: 3),() async {
await Pref.getPref('userId')=='' || await Pref.getPref('userId')== null ?
Navigator.pushReplacement(context, MaterialPageRoute(builder: (context)=>const SignIn()))
:Navigator.pushReplacement(context, MaterialPageRoute(builder: (context)=>const
BottomNave()));
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: SizedBox(
height: double.infinity,
width: double.infinity,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.center
,
children: [
Image.asset('assets/images/fireLogo.png',height: 200.h,width: 200.w,),
SizedBox(height:50.h),
SizedBox(width:50.w,child: const LinearProgressIndicator(color: Colors.red,minHeight: 5,)),
],
)),
);

20
}
}

Sign_in.dart
import 'package:chat_app/firebase/firebase.dart';
import 'package:chat_app/screens/onbording_screen/sign_up.dart';
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';

class SignIn extends StatefulWidget {


const SignIn({super.key});

@override
State<SignIn> createState() => _SignInState();
}

class _SignInState extends State<SignIn> {


bool mObscureText=false;
TextEditingController emailController=TextEditingController();
TextEditingController passController=TextEditingController();
@override
Widget build(BuildContext context) {
Size mq=MediaQuery.of(context).size;
return Scaffold(
body:SingleChildScrollView(
child: Column(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Align(
alignment: Alignment.topCenter,
child: SizedBox(
height:mq.height/1.8,
width: mq.width,
21
child: Stack(
children: [
ClipPath(
clipper:MyClipPath(),
child: Container(
height:mq.height/1.8,
width: mq.width,
color: Colors.red.shade100,
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Icon(FluentIcons.fire_20_filled,size: 150.sp,color: Colors.red,)
],
),
),
),
Align(
alignment: Alignment.bottomCenter,
child: Row(
mainAxisAlignment: MainAxisAlignment.center,
children: [
Text('Fire',style: TextStyle(fontSize: 50.sp,color: Colors.red.shade600),),
Text('Box',style: TextStyle(fontSize: 50.sp,color: Colors.grey.shade300),),
],
))
],
),
),
),
mTextField(widthByMQ: MediaQuery.of(context).size.width*0.7, textFiledHeading: 'Email',
hintText: 'Enter your email..',controller: emailController),
mTextField(widthByMQ: MediaQuery.of(context).size.width*0.7, textFiledHeading: 'Password',
hintText: 'Enter your password',isTherePassword: true,controller: passController),
SizedBox(
height: 55.h,

22
width:MediaQuery.of(context).size.width*0.7,
child: ElevatedButton(
onPressed: () {
FirebaseFeatures().firebaseAuthSignIn(emailController.text, passController.text, context);
},
style: ButtonStyle(backgroundColor:MaterialStateProperty.all(Colors.red) ),
child:Text('Sign In',style: TextStyle(fontSize: 25.sp,color: Colors.white),) ,
),
),
SizedBox(height: 10.h,),
Row(
mainAxisAlignment: MainAxisAlignment.center,
crossAxisAlignment: CrossAxisAlignment.end,
children: [
Text('Don\'t have account ? ',style: TextStyle(fontSize: 13.sp,color: Colors.red.shade600),),
InkWell(
onTap: (){
Navigator.push(context, MaterialPageRoute(builder: (context)=>const SignUp()));
},
child: Text('SignUp Now',style: TextStyle(fontSize: 13.sp,color: Colors.black),)),
],
),
],
),
),
);
}

Widget mTextField(
{
required double widthByMQ,
required String textFiledHeading,
required String hintText, bool isTherePassword=false,required TextEditingController controller
}){
return Container(

23
height: 100.h,
width: widthByMQ,
decoration: BoxDecoration(
borderRadius: BorderRadius.circular(22.5.sp),
// color: Colors.red.shade50
),
child: Center(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(textFiledHeading,style: TextStyle(fontSize: 15.sp,fontWeight: FontWeight.w400),),
SizedBox(
height: 55.h,
width: widthByMQ,
child: TextField(
obscureText: isTherePassword?mObscureText:false,
controller: controller,
decoration: InputDecoration(
hintText: hintText,
suffixIcon:isTherePassword!=false? InkWell(
onTap: (){
setState(() {
mObscureText=!mObscureText;
});
},
child: Icon(mObscureText?FluentIcons.eye_20_filled:FluentIcons.eye_20_regular)):null,
hintStyle: TextStyle(
color: Colors.red.shade400,
fontSize: 15.sp,
fontWeight: FontWeight.w300),
filled: true,
fillColor: Colors.red.shade50,
focusedBorder: OutlineInputBorder(
borderRadius:
BorderRadius.all(Radius.circular(22.5.sp)),

24
borderSide: const BorderSide(
color: Colors.red,
width: 1,
style: BorderStyle.solid)),
border: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(22.5.sp))),
),
),
],
),
)
);
}
}
class MyClipPath extends CustomClipper<Path>{
@override
Path getClip(Size size) {
double w=size.width;
double h=size.height;
Path mPath=Path();
mPath.lineTo(0,h);
mPath.quadraticBezierTo(w*0.1,h-100,w*5,h);
//mPath.lineTo(w,h);
mPath.lineTo(w,0);
// mPath.lineTo(,size.height);
mPath.close();
return mPath;
}

@override
bool shouldReclip(covariant CustomClipper<Path> oldClipper) {
return true;
}
}

25
Sign_up.dart

import 'package:chat_app/custom_widget/custom_widget.dart';
import 'package:chat_app/firebase/firebase.dart';
import 'package:fluentui_system_icons/fluentui_system_icons.dart';
import 'package:flutter/material.dart';
import 'package:flutter_screenutil/flutter_screenutil.dart';

class SignUp extends StatefulWidget {


const SignUp({Key? key}) : super(key: key);

@override
State<SignUp> createState() => _SignUpState();
}

class _SignUpState extends State<SignUp> {


String errorMessage = 'no error';
bool obscureText = true;
bool isThereSignInError=false;
final TextEditingController nameController = TextEditingController();
final TextEditingController numberController = TextEditingController();
final TextEditingController emailController = TextEditingController();
final TextEditingController passController = TextEditingController();
final TextEditingController checkPassController = TextEditingController();

@override
Widget build(BuildContext context) {
final Size size = MediaQuery.of(context).size;

return Scaffold(
backgroundColor: Colors.red.shade100,
body: SingleChildScrollView(
child: SafeArea(
child: Column(
mainAxisAlignment: MainAxisAlignment.center,
26
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Text(
'Sign Up Now!',
style: TextStyle(
color: Colors.white,
fontSize: 35.sp,
fontWeight: FontWeight.w800,
),
),
Container(
height: size.height * 0.7,
width: size.width,
margin: EdgeInsets.all(15.sp),
padding: EdgeInsets.all(15.sp),
decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(15.sp),
),
child: Column(
mainAxisAlignment: MainAxisAlignment.spaceEvenly,
crossAxisAlignment: CrossAxisAlignment.start,
children: [
_buildNameNumberRow(size),
_buildTextField(size, "Email", "Enter your email", emailController, isPassword: false),
_buildTextField(size, "Password", "Enter your password", passController, isPassword: true),
_buildTextField(size, "ReCheck", "Check your Password", checkPassController, isPassword:
true),
],
),
),
SizedBox(
height: 55.h,
width: size.width * 0.9,
child: ElevatedButton(

27
onPressed: () => _signUpButtonPressed(),
style: ButtonStyle(
backgroundColor: MaterialStateProperty.all(Colors.red),
),
child: Center(
child: Text(
'Create Account',
style: TextStyle(fontSize: 25.sp, color: Colors.white),
),
),
),
),
],
),
),
),
);
}

Widget _buildNameNumberRow(Size size) {


return Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
_buildTextField(size * 0.4, "Name", "Enter Name", nameController, isPassword: false),
_buildTextField(size * 0.4, "Mobil No.", "Enter Number", numberController, keyboardType:
TextInputType.number, isPassword: false),
],
);
}

Widget _buildTextField(Size size, String heading, String hintText, TextEditingController controller,


{required bool isPassword, TextInputType keyboardType = TextInputType.text}) {
return SizedBox(
height: 100.h,
width: size.width,

28
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
heading,
style: TextStyle(fontSize: 15.sp, fontWeight: FontWeight.w400),
),
SizedBox(
height: 55.h,
width: size.width,
child: TextField(
obscureText: isPassword?obscureText:false,
onChanged: (value) => _handleTextChanged(value),
keyboardType: keyboardType,
controller: controller,
decoration: _buildInputDecoration(hintText, isPassword),
),
),
],
),
);
}

InputDecoration _buildInputDecoration(String hintText, bool isPassword) {


return InputDecoration(
hintText: hintText,
suffixIcon: isPassword
? InkWell(
onTap: _togglePasswordVisibility,
child: Icon(obscureText ? FluentIcons.eye_20_filled : FluentIcons.eye_20_regular),
)
: null,
hintStyle: TextStyle(color: Colors.red.shade400, fontSize: 15.sp, fontWeight: FontWeight.w300),
filled: true,
fillColor: Colors.red.shade50,

29
focusedBorder: OutlineInputBorder(
borderRadius: BorderRadius.all(Radius.circular(22.5.sp)),
borderSide: const BorderSide(color: Colors.red, width: 1, style: BorderStyle.solid),
),
border: OutlineInputBorder(
borderSide: BorderSide.none,
borderRadius: BorderRadius.circular(22.5.sp),
),
);
}

void _handleTextChanged(String value) {


if (errorMessage != 'no error' && errorMessage != 'email matched') {
errorMessage = 'no error';
setState(() {});
}
}

void _togglePasswordVisibility() {
setState(() {
obscureText = !obscureText;
});
}

Future<void> _signUpButtonPressed() async {


await textFieldValidation();
String? signUpError = await FirebaseFeatures().firebaseAuthSignUp(
emailId: emailController.text,
password: passController.text,
mobilNo: numberController.text,
context: context,
userName: nameController.text, isThereError:isThereSignInError,
);
if (errorMessage == 'no error' || errorMessage == 'email matched'&&signUpError==null) {
await AppWidget.errorBox(errorMessage, context);

30
Navigator.pop(context);
} else {
// Display the sign-up error if there is one
if (signUpError != null) {
AppWidget.errorBox(signUpError, context);
} else {
AppWidget.errorBox(errorMessage, context);
}
}
}

textFieldValidation() {
if (nameController.text.isEmpty || emailController.text.isEmpty) {
errorMessage = emailController.text.isEmpty ? 'Email field is required' : 'Name should be entered';
} else if (numberController.text.isEmpty || numberController.text.length != 10) {
errorMessage = 'Please enter a valid mobile number!';
} else if (passController.text.length < 8) {
errorMessage = 'Password length should be greater than or equal to 8!';
} else if (passController.text != checkPassController.text) {
errorMessage = 'Passwords do not match!';
isThereSignInError=true;
} else if (passController.text == checkPassController.text) {
isThereSignInError=false;
}else if (RegExp(r'^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$').hasMatch(emailController.text)) {
errorMessage = 'email matched';
} else {
errorMessage = 'Please enter a valid email format';
}
setState(() {});
}
}

31
CHAPTER 7- TESTING
Testing plays a vital role in the success of the system. Once program code has been developed, testing
begins. The testing process focuses on the logical internals of the software, ensuring that all statements
have been tested, and on the functional externals, that is conducted tests to uncover errors and ensure that
defined input will produce actual results that agree with requires results. Testing is a process of executing
a program with the intent of finding the error.

Sr. Testing Action Expected Actual Testing


No. Module Result Result Result

1.0 Login Clicked on Login Home Page Home page is Success


Button should be open opening

1.1 (if username and Validation After checking Error


password Empty) should be validation show message
Clicked on login check for message “Please show
button of login page username and Enter username (Success)
password and password”

1.2 Fill username and Check redirect to home Success


password then username and page
clicked on password if
login button valid

1.3 Fill username and Check Show message Error


password then username and “Username and Message
clicked on password if password Show
login button invalid
Invalid” (Success)

1.4 Click on Sign up link Home page Redirect to Sign Success


should be up page
closed and sign
up
page should be
opened

32
2.0 Register/s Clicked on Register Sign up Sign up page is Success
ig n up Button of Home Page window opening

Menu should be open

2.1 If empty input box Validation Validation Error


than click on Register should be message show Message
button check for all Show
input box
(Success)

2.2 After fill Data, Click Validation If Validation Success


on Register button should be Performed
check for Successfully
email ,
username
,confirm
password and
image

3.1 View After Login View Should be After Login It’s Success
Profile should be showing after showing
profile
show login

3.2 Click on Profile page View profile Redirect to Success


page should be View profile
opened page

3.3 Click on log out User Should It’s Performed Success


button of profile be Logout
page

4.0 Logout After Login , Logout Logout option It’s Showing Success
button should be should be
show showing after

Login

4.1 Click on Logout User Should It’s Performed Success


Button be Logout

33
CHAPTER 8-FUTURE ENHANCEMENT

We want to list some future enhancements for app-


 Voice calling feature for app
 Online Video calling feature
 Provide feature of sharing Images and document
 Adding GIF pictures
 Give access of app on PC
 Otp verification

34
CHAPTER 9-CONCLUSION

In conclusion, the future enhancements for the "Fire-Box App" aim to make chatting safer, more
enjoyable, and accessible to everyone. By adding features like advanced reporting, sentiment analysis,
and improved privacy options, we're committed to creating a platform where users feel comfortable and
respected. we're striving to foster a welcoming community where users can connect seamlessly and
engage in meaningful conversations.

In summary, the enhancements planned for the "Fire-Box App" promise to elevate the chatting experience
for users. By introducing features like advanced reporting and sentiment analysis, we're prioritizing safety
and positivity within our community. Additionally, improvements in privacy settings and accessibility
will ensure that all users feel comfortable and included. With these updates, we're dedicated to building a
vibrant and engaging platform where everyone can connect easily and enjoy meaningful conversations.

35
REFERENCES

1. FLUTTER Development Overview : https://flutter.dev/


2. FIRBASE Database : https://firebase.google.com/docs/database/
3. Overflow for Doubts: https://stackoverflow.com/questions/tagged/flutter
4. YOUTUBE for Ideas : https://www.youtube.com/

36

You might also like