App Development
App Development
USING FLUTTER
This presentation covers a summer internship focused on
developing four diverse mobile applications using Flutter. The
project demonstrated Flutter's capabilities for cross-platform
development with native-like performance.
by Kota Om Srikar(Y22CS094)
CONTENTS:
1. Abstract
2. Introduction to Flutter
3. Flutter Architecture
4. Widget-Based UI
5. App Architecture and Workflow
6. Comparison with other platforms
7. Key Algorithms and Data Management
8. Performance Results
9. Cross-Platform Consistency
10.Conclusion
Abstract
4
Flutter Architecture
Flutter's architecture consists of the Dart framework, Flutter engine, and
platform-specific embedders. This layered approach allows for efficient
rendering and platform integration.
1 Dart Framework
Provides the foundation for building Flutter apps using Dart
language.
2 Flutter Engine
Handles low-level rendering using Skia graphics library and
interfaces with platform SDKs.
3 Platform Embedders
Integrate Flutter with specific platforms like Android, iOS, and
web.
Widget-Based UI
Flutter uses a widget-based approach for building UIs. Everything in Flutter is a widget, from layout elements to
styling and animations. This consistent model simplifies development and customization.
Immutable widgets that describe part of the user Mutable widgets that can change dynamically. Maintain
interface. Rebuild when configuration changes. state separately from the widget configuration.
6
App Architecture and Workflow
The apps followed a common architecture with presentation, business logic, and data layers.
Workflows varied by app complexity, from simple state updates to multi-step processes with
data persistence.
User Input
User interacts with the app interface.
State Update
App state is updated based on user actions.
UI Refresh
Interface is redrawn to reflect new state.
Data Persistence
Changes are saved locally or to remote storage.
1.React Native
React Native allows native applications to be built using
JavaScript. The actual controls the application uses are native
platform controls, so the end user gets the feel of a native app.
For apps that require customization beyond what React Native’s
abstraction provides, native development could still be needed.
In cases where the amount of customization required is
substantial, the benefit of working within React Native’s
abstraction layer lessens to the point where in some cases
developing the app natively would be more beneficial.
2.Xamarin
There are two different approaches that need to be evaluated.
For their most cross-platform approach, there is
Xamarin.Forms. Although the technology is very different to
React Native, conceptually it offers a similar approach in that it
abstracts native controls. Likewise, it has similar downsides
with regard to customization.
Unlike these alternatives, Flutter attempts to give developers a
more complete cross-platform solution, with code reuse, high-
performance, fluid user interfaces, and excellent tooling.
Task Sorting Algorithm (To-Do List App):
dart
List<Task> sortTasks(List<Task> tasks) {
return tasks.sort((a, b) {
dart
Expense Summarization Map<String, double> summarizeExpenses(List<Expense> expenses,
DateTime start, DateTime end) {
Summarizes expenses by return expenses
.where((e) => e.date.isAfter(start) && e.date.isBefore(end))
category within a date range. .fold<Map<String, double>>({}, (sum, e) {
sum[e.category] = (sum[e.category] ?? 0) + e.amount;
return sum;
});
}
Performance Results
The apps demonstrated excellent performance across various
metrics. Startup times ranged from 0.8 to 2.5 seconds, with
consistent 60fps rendering. Memory usage varied by app
complexity, from 30MB for the counter to 100MB for the music
player.
App Startup Time Memory Usage
3 Future Enhancements
Potential for cloud features, animations, and expansion to
web/desktop platforms.