Skip to content

Latest commit

 

History

History
75 lines (64 loc) · 3.2 KB

README.md

File metadata and controls

75 lines (64 loc) · 3.2 KB

KerahBiru Flutter Prototype

A Linkedin-like app.

Features:

  • state management
  • fake api
  • form
  • animations : Hero, container transformation, axis transition

Demo:

Demo

Architecture guideline

Convention and Pattern

Approach to REST

  • semi-optimistic approach A
    • consider two pages: main, ephemeral
    • main pages fetch data from repo, stores it in local.
    • ephemeral pages use local data. any rest interaction here is assumed successful and modifies local data.
    • in main page, do reload to refetch data from API
    • requires back intercept positioning
  Profile -> sends a copy of experience list to -> Edit Profile -> opens a -> New Profile

  new Profile -> sends an REST patch, adds an item of list in -> Edit Profile Screen -> triggers reload in -> Profile
  • semi-optimistic approach B
    • upload object with pending id
    • object is assumed live in app
    • on API callback, remove or preserve
  • date in repo is stored as second, currently working date is stored as Integer.MAX
  • reload page depending on new updates
    • updating state object in State (ChangeNotifier) triggers any Selector that monitors it
    • use WillPopScope to intercept device's back button
  • pages that depend on same inheritance object should be generalized (see CommonItem)

Notes

  • stateful widget : widget that changes on UI state, read this
    • setState will trigger rebuild on any widget that holds reference to the data.
    • parent-child relations : parent cannot call child but triggers change due to child using parent (widget.) read

Todo

  • theme
  • locale
  • global keys
  • global formats (date, currency, etc)
  • onboarding user registration with stepper
  • complete prototype of approach A (Experience item)
    • complete ir for the rest of the items
  • reload if new updates
  • page animation proto (profile -> edit)
  • page animation (edit -> new)
  • page animation (edit -> form)
  • refactor edit returned models
  • refactor extract views
  • date picker for exp end date
    • has upper limit(a month before now) and lower limit
    • "currently working" checkbox will disable End Date and its date picker
    • validates start date < end date
  • splash screen