Flutter Tech Assessment
- Flutter SDK
- Docker
- Microsoft Dynamics 365
- Web (Preferrably Google Chrome)
- Android 4 (KITKAT) and above
- IOS 10 and above
- Microsoft Dynamics 365 Cloud Data fetch
- Main Page
- List of All Accounts
- Searchbar for filtering (Dynamically filter all letters write & delete)
- Filtering option based on State Code and StateOrProvince variable
- UI View Change based on selection from grid or list (default list)
- Detail Page
- Detail informations consists of selected Account
- Animations and UI Designing
- provider: ^6.0.3 (State Management)
- http: any (REST API Calls)
- nb_utils: ^4.4.6 (Additional Needs for UI/Data)
- flutter_vector_icons: ^1.0.0 (Icon Usage esp. for Feather)
- intl: any (Format Change)
- flutter_test
- integration_test
- flutter_lints: ^1.0.0
- mocktail: ^0.2.0
-
Blocs --> Change Notifiers
- account_bloc
- theme_bloc
-
Models --> Object Models
- account_model
- theme_model
-
Screens
- account_screen (and its components)
- account_detail_screen (and its components)
-
Services
- account_service
-
Utilities
- constants
-
Get Ready Data Environments
- After adjust the Environment on powerplatform
- Connect Power Apps
- Login Azure Portal and adjust credentials
-
Data Fetch
- Create an endpoint (for this purpose) for getting access token
- Create for Account list fetch endpoint
- Test these via POSTMAN
-
Flutter Part
-
Above mentioned structure designed & start developing
-
Coming Data for Account list as json convert to account_model objects
-
Provider package used for this lists
-
State Code and StateOrProvince variables stored in a list which fetched from this account list (uniquely stored/avoid from duplication) [_stateFilterList]
-
This async action created for network get & post request/response time. This actions stored in bool value and state listening this data changes [_isReady]
-
There is also list created for showing filtered actions _accountSearchList
-
Service part is only used by send & get requests from REST API (account_service)
-
For UI actions Elements designed based on MediaQuery variables for being responsive for web & mobil (for many type UI sizes)
-
List & Grid Types are two types of list supported by same list but ui is different.
-
Page elements divided by components in order to fill the clean code principles
-
App is designed and developed with possible future update infrastructure
- Multiprovider (For more type of data fetch and differentiate between them)
- Theme Bloc (Dark & Light Theme)
-
-
Testing
-
For Unit testing is the logic test. For this project account_bloc tested.
- Initial values accuracy
- Created Mock Service and Mock Data
- Simulating the Data Fetch process
- isReady false
- await data fecth
- check mock data
- isReady true check
-
For widget testing
- Check Displayed widgets such as AppBar
- Check CupertinoActivityIndicator
- Wait Async Data fetch
- Checking fetched Account Card Widgets from Mock Service
-
For Integrated Testing
- Simulate the Main Screen Creation
- Navigation test for specific Mock data object form Account list Page to this Account detail Page
-
-
Docker Part
- Create Dockerfile
- Prepare the server.sh (which includes build script)
- "docker build . -t flutter_docker" run
- "docker run -i -p 8080:5000 -td flutter_docker" run img container
- Screen Captures
- Web
- Android
- IOS (Apple) included
- Test Results
- Unit Test
unittest.mov
+ Widget Test
widgettest.mov
+ Integration Test