Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 23

A REPORT OF SIX WEEKS OF INDUSTRIAL TRAINING

At

ThinkNext Technologies pvt. Ltd.

SUBMITTED IN PARTIAL FULFILMENT OF THE REQUIREMENT FOR THE AWARD OF

THE DEGREE OF

BACHELOR OF ENGINEERING

(Computer Science and Engineering)

JUNE-JULY 2022

SUBMITTED BY:

NAME: RISHABH RAJ


REGISTRATION NO.: 2030484

DEPARTMENT OF COMPUTER SCIENCE ENGINEERING

SANT LONGOWAL INSTITUTE OF ENGINEERING AND TECHNOLOGY


CONTENTS

Topic Page no.

Certificate by Company/Industry/Institute i

Candidate’s Declaration ii

Abstract iii

Acknowledgment iv

1. Introduction
 Introduction to Organisation 7
 What ThinkNext Technologies do 8
2. Software Training work undertaken
 Technologies 9
 Tools used 9
 Language used 9
3. Android Overview
 Android Application Fundamental 10
 Android Application Components 10
 Activities 10-13
 Fragments 13
4. Setting up Android Environment 14
5. Run Android Application 15-17
6. Flutter overview 17-21
7. Result and Discussion 21
8. Conclusion and Future Scope 21

9
Certificate

10
CANDIDATE’S DECLARATION

I , RISHABH RAJ, hereby declare that I have undertaken 6 weeks Industrial Training at ThinkNext
Technologies pvt. Ltd. during a period from 6th June 2022 to 22nd July 2022 in partial fulfilment of
requirements for the award of degree of B.E.(Computer Science and Engineering) at SANT
LONGOWAL INSTITUTE OF ENGINEERING AND TECHNOLOGY, LONGOWAL,PUNJAB.
The work which is being presented in the training report submitted to Department of Computer
Science and Engineering at SANT LONGOWAL INSTITUTE OF ENGINEERING AND
TECHNOLOGY, LONGOWAL is an authentic record of training work.

Signature of student

The industrial training Viva-voce Examination of ______________________ has been held on


________________ and accepted.

11
ABSTRACT

This Report presents the experience and skills gained during 6 weeks of industrial training
undertaken at ThinkNext Technologies.

My Training was on the Flutter App development, During this period, I acquired practical knowledge
and skills required to make an a mobile based application in flutter. By the end of my training I was
able to build the front end of an android application in flutter.

This report discusses the skills gained and experience gathered during the period of training,
justifying the relevance of the scheme in equipping students with needed technical competence to
thrive in the real world.

12
ACKNOWLEDGEMENT

I would like to extend my sincere gratitude and appreciation to all those who joined all their efforts

in making my industrial training successful.

Special thanks goes to my academic supervisors for their excellent work done during my industrial

training.

This industrial training was quite a learning experience for me at each and every step. At the same

time it has given me confidence to work in professional setup. I feel the experience gained during the

training will lead me to gain the bright prospect in the future. First of all I would like to thank Head

of T&P Department, R K Mishra sir, for giving me the opportunity to work in this esteemed

organization, which not only has increased our awareness about latest fields. With deep sense of

gratitude, I express my sincere thanks to Dr. Manminder Singh Sir, for his active support and

continuous guidance without which it would have been difficult for me to complete this industrial

training. I will like to thanks the teacher and staff of ThinkNext Tchnologies for taking keen interest

in our training and for giving valuable suggestions throughout the industrial training period and also

I would like to thank those one who helped me directly and indirectly to complete this industrial

training successfully.

Rishabh Raj
B.E(CSE)

13
CHAPTER 1.1

INTRODUCTION TO ORGANISATION

ThinkNext Technologies: ThinkNext Technologies is a leading IT services, consulting and


business solution provider company that provides the complete IT solutions for the business.

The company harness the power of

• web development

• Android application development

• IOS application development

• Software support

• digital marketing

• Database handling and optimization

• Cloud

• Machine learning

14
CHAPTER 1.2

What ThinkNext Technologies do?

• Development: Render all kind of development and designing services such as website
designing , web development, internet marketing, phone application development, ERP
Packages, Software testing, Machine learning and much more.

• Training: They have been providing training of Development all kinds of programs, apps,
digital marketing to thousands of students already.
• Consultancy: They provide reliable project consultancy services in the industry of
Information and Technology, providing information to millions of
Industrialists and Entrepreneurs to jump-start their careers, start business, learn technologies,
help reduce risk and give high return.

15
2. SOFTWARE TRAINING WORK UNDERTAKEN

2.1 Technologies : In order to complete this project, I have utilised android studio as it is an
application that I have become familiar with during my coursework. During my coursework, I
have used android studio in the creation of numerous projects, and thus, have used this knowledge
to create the classes and GUI elements of this one. I also used two different android devices with
different operating systems, one being a Samsung Galaxy s4 on Android
4.2.2 Jelly Bean and the other being an Acer iconia one 8 on Android 5.0 Lollipop. These
would prove useful during the testing of the application.

2.2 Tools used:

• Android Studio: Android Studio is the official integrated development environment for
Google's Android operating system, built on JetBrains' IntelliJ IDEA software and
designed specifically for Android development. It is available for download on Windows,
macOS and Linux based operating systems.
• Flutter: Flutter is an open-source UI software development kit created by Google. It is
used to develop applications for Android, iOS, Windows, Mac, Linux, Google Fuchsia
and the web. The first version of Flutter was known as codename "Sky" and ran on the
Android operating system.

2.3 Language used:

• Dart: Dart is a client-optimized programming language for apps on multiple platforms. It


is developed by Google and is used to build mobile, desktop, server, and web
applications. Dart is an object-oriented, class-based, garbage-collected language with
Cstyle syntax. Dart can compile to either native code or JavaScript.

16
3. ANDROID OVERVIEW

3.1 Android Application Fundamental


Android is an open source operating system which can be used to build mobile or other small
devices applications and Android applications coded in the JAVA programming language.
Android Studio is used for developing Android applications. It supports all the Android SDK
tools needed to build, design, maintains, test, debug and publish any Android applications. The
Android application compiles into a set of files known as .apk files which hold the information
used to run the application on any device or even on the android emulator the .apk file is used
to run the application.

3.2 Android Application Components


Android application components are the basic building blocks of any Android applications. In
the Manifest file [3] of Android application, all the critical components are present to facilitate
the application. The points below describe additional components of the development of the
Android application.

3.3 Activities
Activities are used to interact with the users through the user interface of the Android
application. A single application can hold multiple activities which represent different
functionalities of an application. To access these activities, one needs to define them in the
Android Manifest file. The Manifest file contains tags to identify various activities. The

<application> tag is used to define the name, log, version, etc. of the Android application.

The <activity> tag is a child tag inside the

<application> tag which is used to declare an activity element in the manifest file. The
Application's user interface can be defined using an XML layout file and later bound
with its activity to make the particular UI to work.

17
The main activity starts when the application launched. An Android application’s activity has a
series of the life cycles that define its activity class in the Java file. There are also callbacks
methods which help the activity navigate between different activity stages [3]. Figure 1 shows
the activity lifecycle of the Android development.

onCreate(): During the creation of first activity, the OnCreate() method invoked. This

method manages the data binding process, background initializations and receiving of
bundle objects which contains the previous state’s instances [3]. This method followed
by the onStart() method in the activity lifecycle.

onStart(): This method helps the activity to enter the start stage which makes the
particular activity visible to the user. This method helps the activity to run in the
foreground process as well as interact with the users. Once this method ends, it's always
followed by the onResume() method which is activated when the activity returned to
the background. Otherwise, it will be followed by the onStop() method if the activity is
hidden.

18
Figure 1: Activity Life Cycle
• OnResume(): This method is called when the activity enters in the resumed state, in
other words, it will be called once the user returns to the activity. Additionally, this
method helps the activity start the interaction between the user and the application. If
the activity encounters any interruption during the process, at that time the activity will
enter the paused state by calling the onPause() method [3]. The activity will resume
when the onResume() method calls again.

19
• onPause(): When the user first leaves the current activity to start some other application
or the user is interrupted by a phone call, the onPause() method evoked. This method
will temporarily hold all the operations of the running activity until the interruption is
over. The Android system release all the substantial resources that might consume the
device battery life during the pause state such as broadcast receivers or sensors like
GPS. The activity will remain in the pause state until the system calls the onResume()
method to start the activity again.

• onStop(): An activity enters in the stopped state when it is not visible to the user any
longer. During this call, the application will start releasing all the resources that are no
longer required by the application.

• onDestroy(): This method is called after the onStop() method, as it is the final call that
activity can make before the destruction of activity. This method is called in two cases;
one is when the application has destroyed the activity to save some space and when the
activity is already finished running. This method also releases all the resources which
unreleased during the onStop() method.
3.4 Fragments

Fragments are the subcomponent of the Activity. They are associated with an activity and
interacted via fragment manager . The lifecycle of the fragment(see figure 3) depends on the
lifecycle of the Activity as shown in figure 1.
 onAttach() – called when the fragment associated with the activity.
 onCreateView() – called when the fragment draws its user interface for the first time.
 onActivityCreated() – called when the host activity is created and after onCreateView()
is called.

 onDestroyView() – called when the hierarchy associated with the fragments destroyed.

 onDetach() - called when the fragment disassociated from the activity.

20
4. Setting up Android Environment
Android application development requires an ADT (Android Development Tools) bundle. This
bundle provides all the tools to develop the features of an Android app. This ADT also includes
a version of Android Studio. SDK tools downloaded from the SDK manager option of the
Android Studio. These SDK tools provide basic functionality to start the code for the
application. Main components required in the development of an Android application.
 Java
 XML
 Android Studio

Fig 2: Fragment Life Cycle

21
5. Running Android Application
There are two ways to run the Android Application – On an Android Device or using an
Emulator.
 On the Device:
To run an application on the Android device, Developer options should enable the
Settings as shown in Figure 8. The Android device then needs to be connected to
the laptop with USB cable. After connecting the device, the USB debugging
requires an enabling on the device.

Figure 3: Developers options

After successful connection to the device, click on the Run icon in the Android
Studio. The Device Chooser will appear as shown below. The application will
install on the machine after selecting the correct device.

22
 Using Android Emulator:
To use an emulator to run an app on Android, the user will have to create
an Android Virtual Device (AVD) using Android Studio.

 Clicking on the AVD icon opens the Android Virtual Device as shown in Figure
4. It shows all the existing/available AVDs. To create a new one, the user must
click on the Create Virtual Device.

Fig 4: Android Virtual Device Screen

 On the Android Device Configuration window, as shown in Figure 5, the user


must select an AVD name, the category of the device (phone, tablet, TV, etc.)

23
Fig 5: Android Virtual Device Screen Manager

6. Flutter Overview

 What is Flutter:
Flutter is an app SDK for building high-performance, high-fidelity apps for iOS,
Android, web (beta), and desktop (technical preview) from a single codebase.
The goal is to enable developers to deliver high-performance apps that feel
natural on different platforms. We embrace differences in scrolling behaviors,
typography, icons, and more.

No mobile development experience is required to get started. Apps are written in


Dart, which looks familiar if you’ve used a language like Java or JavaScript.
Experience with objectoriented languages is definitely helpful, but even non-
programmers have made Flutter apps!
 Why we use Flutter

• Be highly productive

• Develop for iOS and Android from a single codebase

• Do more with less code, even on a single OS, with a modern, expressive language and a
declarative approach
• Prototype and iterate easily

• Experiment by changing code and reloading as your app runs (with hot reload)

24
• Fix crashes and continue debugging from where the app left off

• Create beautiful, highly-customized user experiences

• Benefit from a rich set of Material Design and Cupertino (iOS -flavor) widgets built
using Flutter’s own framework

• Realize custom, beautiful, brand-driven designs, without the limitations of OEM widget
sets
 Core Principles:
Flutter includes a modern react-style framework, a 2D rendering engine, ready-made
widgets, and development tools. These components work together to help you design,
build, test, and debug apps. Everything is organized around a few core principles.
 Everthing is a widget
Widgets are the basic building blocks of a Flutter app’s user interface. Each widget
is an immutable declaration of part of the user interface. Unlike other frameworks
that separate views, view controllers, layouts, and other properties, Flutter has a
consistent, unified object model: the widget.
A widget can define:
 a structural element (like a button or menu).
 an aspect of layout (like
padding)
Widgets form a hierarchy based on composition. Each widget nests inside, and inherits
properties from, its parent. There is no separate “application” object. Instead, the root
widget serves this role.
You can respond to events, like user interaction, by telling the framework to replace
a widget in the hierarchy with another widget. The framework then compares the
new and old widgets and efficiently updates the user interface.
 Composition > Inheritance:
Widgets are themselves often composed of many small, single-purpose widgets
that combine to produce powerful effects. For example, Container, a commonly-
used widget, is made up of several widgets responsible for layout, painting,
positioning, and sizing. Specifically, Container is made up of LimitedBox,

25
ConstrainedBox, Align, Padding, DecoratedBox, and Transform widgets. Rather
than sub classing Container to produce a customized effect, you can compose
these, and other, simple widgets in noval ways.

Figure 6
The class hierarchy is shallow and broad to maximize the possible number of
combinations.

You can also control the layout of a widget by composing it with other widgets. For
example, to center a widget, you wrap it in a Center widget. There are widgets for
padding, alignment, row, columns, and grids. These layout widgets do not have a
visual representation of their own. Instead, their sole purpose is to control some
aspect of another widget’s layout. To understand why a widget renders in a certain
way, it’s often helpful to inspect the neighbouring widgets.
 Building widgets
You define the unique characteristics of a widget by implementing a build()
function that returns a tree (or hierarchy) of widgets. This tree represents the
widget’s part of the user interface in more concrete terms. For example, a toolbar
widget might have a build function that returns a horizontal layout of some text
and various buttons. The framework then recursively asks each of these widgets to
build until the process bottoms out in fully concrete widgets, which the framework
then stitches together into a tree.

26
A widget’s build function should be free of side effects. Whenever it is asked to
build, the widget should return a new tree of widgets regardless of what the widget
previously returned. The framework does the heavy lifting of comparing the
previous build with the current build and determining what modifications need to
be made to the user interface.
This automated comparison is quite effective, enabling high-performance, interactive
apps. And the design of the build function simplifies your code by focusing on
declaring what a widget is made of, rather than the complexities of updating the user
interface from one state to another.
 Handling user interaction
If the unique characteristics of a widget need to change based on user interaction or
other factors, that widget is stateful. For example, if a widget has a counter that
increments whenever the user taps a button, the value of the counter is the state for
that widget. When that value changes, the widget needs to be rebuilt to update the
UI.
These widgets subclass Stateful Widget (rather than Stateless Widget) and
store their mutable state in a subclass of State.

Figure 7

27
Whenever you mutate a State object (for example, by incrementing the counter), you
must call set State() to signal the framework to update the user interface by calling
the Having separate state and widget objects lets other widgets treat stateless and
stateful widgets in the same way, without being concerned about losing state. Rather
than needing to hold on to a child to preserve its state, the parent is free to create a
new instance of the child without losing the child’s persistent state. The framework
does all the work of finding and reusing existing state objects when appropriate.

7. Results and Discussion


In the journey of developing this Flutter based application, I got an opportunity to
learn the detail process of developing Android applications with the help of material
design concepts to built beautiful yet elegant user interface. In this process I also
able to learn how to develop and use a RESTful API from scratch with the help of
PHP. Moreover, I even get a chance to learn how to use different Android libraries
such as MP Android Chart, Zxing, FitChart and so on.

All the things like using different pub packages and traversing, understanding the
android stack and all, these all were very interesting part and I will further continue to
explore more and more on these projects.

8.Conclussion and Future Scope

It is still the UI and in this process of six weeks I have learnt how to build the static
applications.
I will continue my learning of app development and will build the backend of all these
applications with different databases and make them available for use.

28
29
30

You might also like