Skip to content

OSKUDA/Flutter-Portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Portfolio

Hi, I am Oskar!
This repo holds Flutter applications developed by me during the course of learning & discovering flutter development.

rock_paper_scissors

Android Studio (Flutter & Dart)

Specifications

  • A simple single page app
  • Image placeholder responds to taps
  • The taps/clicks update the state of Stateful Widgets
  • Keeps track of scores

What I learned?

  • Difference between Stateless and Stateful widgets
  • Use builder methods efficiently to minimize code length
  • Use Dart functions and basic libraries such as dart:math

weatherMe

created an app to fetch and display weather data

Android Studio (Flutter & Dart)


Specifications

  • App has multiple screen (splashScreen, weatherScreen, citySelectionScreen)
  • App has two mode for weather data - location mode & city mode
  • By default, weather for user's current location is fetched
  • Users can search for specific city weather using citySelectionScreen
  • Network and GPS location errors are handled properly
  • API and GPS data calls are made in background thread
  • Uses geolocator and geocoding for fetching user location
  • Uses openweathermap api for weather data

What I learned?

  • create custom widget with dynamic properties and reuse it to reduce repetition of code
  • make use of constant.dart to store styling properties for clean code
  • use asynchronous programming to download data over internet on background thread
  • Integrate exception handling during downloads and parsing of data
  • Integrate openweathermap API and learn about API architecture overall
  • use Navigator & Routes to handle screen stack
  • pass data from from one screen to another and back
  • validate data from api before processing it further

myGroup

created an app for group chats

Android Studio (Flutter & Dart)

Specifications

  • App has multiple screen (splashScreen, authenticationScreen, dashboardScreen, messageScreen)
  • Users can register using email and password
  • Users can create or join existing group chats
  • FirebaseAuth is used for user authentication
  • Firestore is used as the backend
  • Implements MVC architecture
  • Provider is used for state management
  • Message updates on real-time
  • Only the admin of the group can delete the chat
  • Only authenticated users can read/write messages
  • Alert dialog are used to warm users of errors
  • App is scalable

What I learned?

  • Use and manage widget states using provider package
  • lifting the state up the widget tree
  • work with implenting callbacks
  • implement proper auth flow
  • write Firestore rules
  • make app scalable and moduler using MVC architecture
  • efficient data modelling for Firestore
  • go from hand drawn wireframe to full functioning application
  • minimize code repetition by modulerizing widgets

myTimer

an app to track time

(Flutter, Dart & BLoC)

Specifications

  • App has two modes: i) timer ii) stopwatch
  • Uses BLoC state management under the hood
  • Users can record lap timings
  • Implements clean architecture with minimum inter dependencies
  • App is scalable and functions are highly portable

What I learned?

  • Familiarized with BLoc state management and design pattern
  • Working of stream and subscription
  • Abstracting states and events of a feature
  • Working with Equatable for ease of comparing objects