SKP Inetrship Report
SKP Inetrship Report
Summer Internship
(3170001)
Academic Year
(2023-2024)
CERTIFICATE
This is to certify that the Internship at Techomax Solutions has been satisfactorily
course Summer Internship (3170001) work during the academic year 2023-2024.
Date: / / 2023
CERTIFICATE
This is to certify that the work embodied in this SUMMER INTERNSHIP Report entitled
Mobile Application Development has been carried out Patel Satishbhai k. (210450131503) at
Department of Computer Engineering Shri S’ad Vidya Mandal Institute of Technology,
Bharuch in partial fulfillment of the requirements for the degree of Bachelor of Engineering in
Computer Science and Engineering to be awarded by Gujarat Technological University.
Date: / / 2023
--------------------------------------------------
SUMMER INTERNSHIP (3170001)
ACKNOWLEDGEMENT
I wish to express our sincere gratitude to our External guide Ms. Nirali Patel for
continuously guiding me at the company and answering all my doubts with
patience. I would also like to thank my Internal Guide Prof. Vishal M Patel for
helping us through our internship by giving us the necessary suggestions and
advices along with their valuable co-ordination in completing this internship.
We also thank our parents, friends and all the members of the family for their precious
support and encouragement which they had provided in completion of work. In addition
to that, we would also like to mention the company personals who gave us the
permission to use and experience the valuable resources required for the internship.
Thus, in conclusion to the above said, we once again thank the staff members of
Techomax Solution for their valuable support in completion of the project.
I
SUMMER INTERNSHIP (3170001)
ABSTRACT
II
SUMMER INTERNSHIP (3170001)
TABLE OF CONTENTS
CERTIFICATE I
ACKNOWLEDGEMENT II
ABSTRACT III
LIST OF FIGURES IV
CHAPTER 1 INTRODUCTION 1
1.1 About the company 1
1.2 Aim and Objectives of the Internship 1
CONCLUSION 24
REFERENCES 25
III
SUMMER INTERNSHIP (3170001)
LIST OF FIGURES
FIGURE NO. FIGURE NAME PAGE NO.
Fig 4 Container 8
nd st
Fig 6 Back 2 Screen to 1 Screen 9
Fig 7 Stack Widget 10
Fig 8 Assets 11
Fig 9 Postman 16
IV
SUMMER INTERNSHIP (3170001)
Chapter 1: Introduction
Website: www.techomaxsolutions.com
All processes are well documented, that enable us to deliver more effective
and innovative solutions with each project we work on. Provide services that
conform to customers' requirements, at a satisfactory overall cost, having
regard to functionality, reliability, durability, usability, appearance, and safety.
There are promises and then there are deliverables; we are different because we do not
differentiate between the two. We are Website Developers who do not just deliver projects
but the core values we trust in! We customize not as an option but as our way to satisfy our
clients. We work to make businesses realize and achieve their potential and help them
reach it in order to enhance their brand value! Our strength lies in the expertise of our team
that handles projects related to Website Design and development,
210450131503 1
SUMMER INTERNSHIP (3170001)
210450131503 2
SUMMER INTERNSHIP (3170001)
210450131503 3
SUMMER INTERNSHIP (3170001)
Introduction of Flutter:
Single Codebase for Multiple Platforms: Flutter enables developers to write a
single codebase that can run on multiple platforms, including iOS, Android, web,
and desktop (Windows, macOS, Linux). This can significantly speed up
development and reduce the need for separate codebases for different platforms.
Widget-Based Architecture: Flutter uses a widget-based architecture
where everything is a widget, including the user interface elements,
layouts, and even the application itself. Widgets are highly
customizable and can be combined to create complex UIs.
Hot Reload: One of the standout features of Flutter is its "hot reload"
capability. This allows developers to see the changes they make to the
code reflected in the app almost instantly, without the need to restart the
application. This greatly speeds up the development and testing process.
Rich Set of Widgets: Flutter offers a wide range of customizable and
extensible widgets for building complex UIs. These widgets follow
Material Design (for Android) and Cupertino (for iOS) guidelines,
resulting in native-like UI experiences on both platforms.
High Performance: Flutter applications are compiled to native ARM code, ensuring
high performance and smooth animations. It also provides a 2D rendering engine
called Skia, which helps in creating visually appealing and responsive interfaces.
Dart Programming Language: Flutter uses the Dart programming language,
which is also developed by Google. Dart is known for its modern syntax,
strong typing, and features like asynchronous programming, making it
suitable for building responsive and efficient applications.
Custom UI Designs: With Flutter's flexibility and customizable
widgets, developers have the freedom to create unique and custom
UI designs that stand out from the standard platform designs.
Community and Packages: Flutter has a growing and active community, which
has led to the creation of numerous packages and plugins available through
the Flutter package repository (pub.dev). These packages cover a wide range
of functionalities, making it easier to integrate various features into your app.
Platform Integration: Flutter provides plugins and APIs to interact
with native platform features and services. This enables developers
to access device hardware, sensors, and other native capabilities.
Growing Popularity: Flutter has gained significant popularity within the
developer community due to its efficiency, cross-platform capabilities, and
developer-friendly features. It's used by various companies and start ups
to build applications across different platforms.
Web and Desktop Support: In addition to mobile platforms, Flutter has
been extended to support web and desktop application development,
allowing developers to target a broader range of devices with their apps.
State Management: Flutter offers various state management solutions to
help developers manage the state of their applications efficiently, including
built-in solutions like Provider and third-party libraries like Redux.
210450131503 4
SUMMER INTERNSHIP (3170001)
Installation of Flutter:
You can download the Flutter SDK from the official Flutter website
(https://flutter.dev/docs/get-started/install). You can choose the
appropriate download link for your operating system.
210450131503 5
SUMMER INTERNSHIP (3170001)
Run your flutter editor from the app or using the command prompt.
We can use hot reload in flutter debug mode.
Once your flutter project has been created do some changes in your
code and perform a hot reload.
In windows, you can perform a hot reload using ‘ctrl+\’ or using the hot
reload button. In Mac devices, you perform a hot reload using ‘cmd+s’. If you
are working in the command prompt using flutter run enter ‘r’ to run.
Fig:1
Hot Restart:
A hot restart has a slightly different functionality as compared to a hot reload. It is
faster as compared to the full restart function. It destroys the preserved states of our
app, and the code gets fully compiled again and starts from the default state. It takes
more time as compared to hot reload but takes less time than the full restart function.
Perform Hot Restart:
Run your flutter editor from the app or using the command prompt.
Once your flutter project has been created do some changes in your
code and perform a hot restart.
You can perform a hot restart using the hot reload button or pressing ctrl+shift+\.
Fig:2
Hide Debugging Banner:
210450131503 6
SUMMER INTERNSHIP (3170001)
Code:
class MyApp extends Statelesswidget{
@overide
Widget build (BuildContext context){
return MaterialApp(
home: Homepage(),
debugShowCheckedModeBanner: false,
);
}
}
//photo debugging[Fig:4 Hide Debugging Banner]
Wrap and Remove Widget:
Wrap widget:
Using the wrap widget option, you can add the parent widget to the current
widget. This is the opposite of (where you add child widgets). This is useful
when you want to add the widgets in between at a later stage,
for example, wrapping the widgets inside the widget after building the UI.
To wrap a widget:
1.Select the widget from the widget tree or the canvas area.
2.Right-click and select the Wrap Widget option. This will open a popup.
3.Select the widget under which you would like to wrap the current widget.
Remove Widget
Sometimes you might want to remove a specific widget and keep its
children unaffected. Or you might want to replace a widget that is not
supported by the Replace widget option. for example, replace the item
card wrapped in a Container widget with the actual Card widget.
This is different from the Delete widget option, which would delete the widget
and its children as well. To remove a widget, select the widget from the widget
tree or the canvas area, right-click, and select the Remove Widget option.
210450131503 7
SUMMER INTERNSHIP (3170001)
Fig 3
Container:
In Flutter, the Container widget is a versatile and commonly used widget that provides a
way to create a rectangular visual element. It's used for layout, positioning, styling, and
decorating child widgets within it. The Container widget can be thought of as a
lightweight wrapper that allows you to control various visual aspects of its child widget.
Here's an example of how the Container widget can be used:
Fig 4
Padding and Margin:
Padding:
The padding property is used to add space around the contents of a
widget. It defines the distance between the edges of the widget's content
and the edges of the widget itself. Padding can be applied to a wide
range of widgets, such as Container, Text, Image, and more.
You can customize the amount of padding for each side using the EdgeInsets class:
Margin:
The margin property is used to create space around a widget, affecting its positioning
within its parent widget. The margin defines the distance between the edges of the
widget and the edges of its parent container. It's useful when you want to control the
spacing between widgets in layouts.
Code:
210450131503 8
SUMMER INTERNSHIP (3170001)
Fig 5
In this example, the first Container has a bottom margin to separate it from the next widget,
and the second Container has horizontal margins to create space on both sides.
Remember that padding affects the space around the contents of a widget, while
margin affects the space around the entire widget. Both properties are crucial for
achieving balanced and visually appealing layouts in Flutter applications.
Fig 6
Stack Widget:
In Flutter, the Stack widget is used to overlay multiple widgets on top of each
other. It's commonly used to create complex layouts where you need to position
widgets at specific coordinates or stack them in layers. The Stack widget allows
you to precisely control the positioning and order of widgets within the stack.
210450131503 9
SUMMER INTERNSHIP (3170001)
Fig 7
In this example, we're using the Stack widget to create a layout where
three colored boxes are stacked on top of each other, and a text widget
is displayed at the center. We're using the Positioned widget to position
the colored boxes at specific coordinates within the stack.
alignment property of the Stack widget determines how the children are aligned
within the stack. In this case, Alignment.center centers the children.
The Positioned widget is used to position children widgets within the stack.
You can set properties like top, bottom, left, and right to control their position.
The Text widget is added as a child of the Stack and is displayed at the
center due to the Alignment.center alignment.
Using the Stack widget, you can create more complex layouts by overlaying
widgets with various alignments and positions. It's useful for building designs
that require precise control over the arrangement of UI elements.
Importing and using assets in a Flutter project involves specifying the assets' paths in the
pubspec.yaml file and then using those assets within your app. Here's how you can do it:
210450131503 10
SUMMER INTERNSHIP (3170001)
Open your pubspec.yaml file located in the root directory of your Flutter project. In
the flutter section, add an assets section to list the paths of the assets you want to
include. The assets can be images, fonts, 3D models, JSON files, and more.
yaml
Copy code
flutter:
assets:
- assets/images/
Make sure to adjust the paths based on the actual locations of your asset files.
Fig 8
By specifying assets in the pubspec.yaml and using the appropriate asset-related classes
and methods, you can seamlessly integrate various types of assets into your Flutter app.
To change the launcher icon (app icon) in a Flutter app, you need to replace the
default icon with your custom icon images. Flutter provides a convenient way
to configure launcher icons for different platforms using the
flutter_launcher_icons package. This package generates the necessary icon
files and updates the configuration files for various platforms.
Here's how you can change the launcher icon in your Flutter app:
dev_dependencies:
flutter_launcher_icons: "^0.9.2"
Run flutter pub get to install the package.
Prepare your custom icon images. You typically need icons in various
sizes for different platforms (iOS, Android) and resolutions. Common
icon sizes include 48x48, 72x72, 96x96, 144x144, and 192x192 pixels.
Configure flutter_launcher_icons:
In your pubspec.yaml, add a configuration section for the
flutter_launcher_icons package:
flutter_icons:
android: true
ios: true
image_path: "assets/icons/icon"
Set android and ios to true to generate icons for Android and iOS platforms.
image_path points to the base path and filename of your icon images
(without the file extension).
Generate Launcher Icons:
In your terminal, run the following command to generate the launcher icons:
This command will generate the necessary icon files for Android and
iOS platforms and update the respective configuration files.
flutter run
You should now see your custom launcher icon on your device or emulator.
Please note that generating launcher icons for iOS might require
additional setup in your Xcode project if you're building for iOS. The
flutter_launcher_icons package might guide you through these steps.
Remember to ensure that your icon images are well-designed and fit the guidelines
for app icons on different platforms to ensure a professional look for your app.
210450131503 12
SUMMER INTERNSHIP (3170001)
Add Dependency:
Open your pubspec.yaml file and add the package as a dependency
under the dependencies section:
dependencies:
flutter:
sdk: flutter
your_package_name: ^your_version
Replace your_package_name with the actual package name and
^your_version with the desired version or version constraint.
import 'package:your_package_name/your_library.dart';
/ Use the library's classes and functions var result = YourLibrary.someFunction(); Read the
Documentation:
Each third-party library usually comes with documentation that explains
how to use its features and functions. Refer to the documentation for
usage instructions, examples, and configuration details.
Handle Errors:
Be prepared to handle any potential errors or exceptions that might arise while using the
third-party library. Check the library's documentation for guidance on error handling.
210450131503 13
SUMMER INTERNSHIP (3170001)
Keep Up to Date:
Periodically check for updates to the third-party library. If the library has
new releases, you might want to update your app to use the latest
version to benefit from bug fixes and new features.
Contributor Guidelines:
If you encounter issues or want to contribute to the library, refer to its GitHub
repository or other sources to understand the contribution guidelines and processes.
Remember that not all third-party libraries are created equal. Some might be very well-
maintained and documented, while others might be less active. It's essential to evaluate
the library's quality, compatibility, and support before integrating it into your app.
Api call
make an API call in Flutter using the http package. Let's consider making a simple
GET request to a hypothetical API that provides information about users.
Add Dependencies:
Open your pubspec.yaml file and add the http package as a dependency:
dependencies:
flutter:
sdk: flutter
http: ^0.13.3
Run flutter pub get to install the package.
In this example, we're using the http package to fetch user information from the
JSONPlaceholder API. The fetchUsers function makes the API call and parses
the JSON response into a list of User objects. The FutureBuilder widget is used
to asynchronously display the user information in the app's UI.
Remember that in a real-world scenario, you'd need to replace the API URL with the
actual API endpoint you're working with. Additionally, error handling, loading
210450131503 14
SUMMER INTERNSHIP (3170001)
An API call, short for Application Programming Interface call, refers to a request made
by a client application to a server's API (Application Programming Interface) to retrieve,
send, or manipulate data. APIs provide a way for different software systems to
communicate and exchange information in a standardized and structured manner.
API calls are essential for enabling interactions between different software
components, services, or systems. They allow developers to access and use
functionalities provided by external services, libraries, or platforms without needing to
understand the intricate details of how those functionalities are implemented.
Client Application: The client application (e.g., a web app, mobile app, or
server) sends a request to a server's API endpoint.
API Endpoint: The API endpoint is a specific URL provided by the server that
corresponds to a particular functionality or resource. Each endpoint performs a
specific action, such as retrieving data, updating data, or performing other operations.
Request: The client application sends an HTTP request to the API endpoint.
The request can include parameters, headers, and sometimes a request body
containing data that the server needs to process the request.
Server: The server receives the request and processes it based on the
provided endpoint and data.
What is Postman?
210450131503 15
SUMMER INTERNSHIP (3170001)
Postman is an API platform for building and using APIs. Postman simplifies each step
of the API lifecycle and streamlines collaboration so you can create better APIs—faster.
Fig 9
Bottom Navigator:
Fig 9
Run Your App:
After implementing the bottom navigation bar and the corresponding
screens, run your app to see the navigation in action.
210450131503 16
SUMMER INTERNSHIP (3170001)
List View:
In Flutter, the ListView widget is used to create a scrollable list of children. It's
a powerful widget that can accommodate a large number of items efficiently by
only rendering the items that are currently visible on the screen. There are
several types of ListView widgets available in Flutter, such as ListView.builder,
ListView.separated, and ListView.custom. Here's an overview of using the
ListView widget: Basic ListView:
The basic ListView widget is created using the ListView constructor. It's
suitable when you have a small number of fixed items.
Fig 10
Remember that ListView widgets can be customized further using
properties like scrollDirection, physics, and more. Depending on your
app's requirements and the type of items you're displaying, you can
choose the appropriate ListView constructor for your use case.
Push Replacement:
import 'package:flutter/material.dart';
Navigate to the New Screen:
210450131503 17
SUMMER INTERNSHIP (3170001)
Use the Navigator.pushReplacement method to navigate to the new screen and replace
the current screen with it.
Navigator.pushReplacement(
context,
MaterialPageRoute(builder: (context) =>
NewScreen()), );
Here, replace NewScreen() with the actual widget representing the
screen you want to navigate to.
Complete the Example:
Here's an example of how to use Navigator.pushReplacement in a simple Flutter app:
Fig 11
In this example, when the button in the HomeScreen is pressed, the app navigates to the
NewScreen using Navigator.pushReplacement. As a result, the HomeScreen is removed
from the navigation stack, and the user cannot go back to it using the back button.
210450131503 18
SUMMER INTERNSHIP (3170001)
State Management:
1. Understanding and implementing effective state management can be tricky.
2. Learners might face issues related to sharing state between widgets,
managing app-wide states, and avoiding unnecessary rebuilds.
App Performance:
1. Optimizing app performance to ensure smooth animations and
fast loading times can be demanding.
2. Problems might involve identifying performance bottlenecks, optimizing
widget rebuilding, and managing resources efficiently.
Platform-Specific Integrations:
1. Integrating platform-specific features and APIs can require
learning about native code and plugin integration.
210450131503 19
SUMMER INTERNSHIP (3170001)
State Persistence:
1. Saving and restoring app state across app restarts can be challenging.
2. Issues might include implementing local storage, handling data
persistence, and managing user preferences.
210450131503 20
SUMMER INTERNSHIP (3170001)
Skills are the expertise or talent needed in order to do a task. Skills allow
you to do job and life skills help you through everyday tasks. There are
many different types of skills that can help you succeed at all aspects of
your life whether it is school, work, or even a sport or hobby.
Skills are what makes you confident and independent in life and are essential for success.
It might take determination and practice, but almost any skill can be learned or improved.
Set realistic expectations and goals, get organized and get learning.
Learn by doing
Study and then practice
Spend more time practicing things I find
difficult Taking frequent breaks
Test myself
Be curious
210450131503 21
SUMMER INTERNSHIP (3170001)
210450131503 22
SUMMER INTERNSHIP (3170001)
Conclusion
Overall, this internship was a useful experience. I have gained new knowledge,
skills in my selected domain which was Mobile Application in Android and met many
new people. I achieved several of my learning goals. I got insight into professional
practice and how work is carried out in industry. This helped me to define what skills
and knowledge I must improve in the coming time to work in industry.
210450131503 23
SUMMER INTERNSHIP (3170001)
Bibliography
https://flutter.dev
www.javatpoint.com
www.geekforgeek.com
www.tutorialspoint.com
www.ninjacode.com
www.github.com
www.youtube.com
210450131503 24