3.5 KiB
3.5 KiB
meta archietecture
- MVVM
- Data layer
- View ⇆ ViewModel ⇆ Repository ⇆ Service
- Model is used across.
- View ⇆ ViewModel ⇆ Repository ⇆ Service
- Data layer
Package structure
The repo structure follows official Package structure.
lib
├─┬─ ui
│ ├─┬─ core
│ │ ├─┬─ ui
│ │ │ └─── <shared widgets>
│ │ └─── themes
│ └─┬─ <FEATURE NAME>
│ ├─┬─ view_model
│ │ └─── <view_model class>.dart
│ └─┬─ widgets
│ ├── <feature name>_screen.dart
│ └── <other widgets>
├─┬─ domain
│ └─┬─ models
│ └─── <model name>.dart
├─┬─ data
│ ├─┬─ repositories
│ │ └─── <repository class>.dart
│ ├─┬─ services
│ │ └─── <service class>.dart
│ └─┬─ model
│ └─── <api model class>.dart
├─── config
├─── utils
├─── routing
├─── main_staging.dart
├─── main_development.dart
└─── main.dart
// The test folder contains unit and widget tests
test
├─── data
├─── domain
├─── ui
└─── utils
// The testing folder contains mocks other classes need to execute tests
testing
├─── fakes
└─── models
But with slight modifications.
- put each
<FEATURE NAME>/
s infeatures/
sub-directory underui/
. test/features/
contains BDD unit tests for each feature. It focuses on pure logic, therefore will not accessView
butViewModel
andModel
.test/widget/
contains UI widget(component) tests which focus onView
from MVVM of each component.integration_test/
for integration tests. They should be volatile to follow UI layout changes.
Some rule of thumb:
<object>Provider
only placed at/lib/data/repositories/
or/lib/data/services/
to provide data source.
Abstraction
terminology
signature asset
- image file of a signature, stored in the device or cloud storage
- can drawing from canvas
- image file of a signature, stored in the device or cloud storage
signature card
- template of signature placement
- It will include modifications such as brightness, contrast, background removal, rotation of the signature asset.
signature placement
- placed modified signature asset from signature card on a specific position on a specific page of a specific PDF document
document
- PDF document to be signed
key dependencies
- pdfrx
- packages/pdfrx/example/viewer/lib/main.dart
- When using pdfrx, developers should control view function e.g. zoom, scroll... by component of pdfrx e.g.
PdfViewer
, rather than introduce additional view. - So does overlay some widgets, they should be placed using the provided overlay builder.
- Viewer Customization using Widget Overlay
- Per-page Customization using Widget Overlay
pageOverlaysBuilder