Einsen 是一个优先级排序应用程序,它使用 Eisenhower 矩阵技术作为工作流来对任务列表进行优先级排序,并构建用于演示 Jetpack Compose 与现代 Android 架构组件和 MVVM 架构的使用。
内置
- Kotlin - 用于 Android 开发的一流和官方编程语言。
- Jetpack Compose - Jetpack Compose 是 Android 用于构建本地 UI 的现代工具包。
- Coroutines - Coroutine是一种并发设计模,你可以在 Android 上使用则简化了代码执行异步。
- Flow - flow 是 Sequence 的异步版本,是一种惰性生成值的集合。
- Jetpack DataStore - Jetpack DataStore 是一种数据存储解决方案,允许你使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致和事务性的方式存储数据。
-
Android 架构组件- 可帮助你设计健壮、可测试和可维护的应用程序的库集合。
- Stateflow - StateFlow 是一个状态持有者可观察流,它向其收集器发出当前和新状态更新。
- Flow - flow 是 Sequence 的异步版本,是一种惰性生成值的集合。
- ViewModel - 存储 UI 相关数据,这些数据不会因 UI 更改而被破坏。
- Jetpack Compose Navigation - Navigation 组件为 Jetpack Compose 应用程序提供支持。
- DataStore - Jetpack DataStore 是一种数据存储解决方案,允许你使用协议缓冲区存储键值对或类型化对象。DataStore 使用 Kotlin 协程和 Flow 以异步、一致和事务性的方式存储数据。
-
适用于 Android 的材料组件
- 适用于 Android 的模块化和可定制的 Material Design UI 组件。
-
Accompanist
- Jetpack Compose 的扩展库集合。
- Figma - Figma 是矢量图形编辑器和原型制作工具,主要基于 Web。
封装结构
dev.spikeysanju.einsen
├── app # Application class
├── components # All resuable components for this app
├── data # For data handling
│ ├── local # Local Persistence Database. Room (SQLite) database
│ │ ├── Dao # Data Access Object for Room
│ │ └── Database # Database Instance
│ └── datastore
│ └── ThemePref # Datastore Theme Preference
├── di # Hilt DI Modules
├── model # Model class for [Task] & [Emoji]
├── navigation # For navigation handling
│ ├── Routes # All unique navigation routes of this app
│ └── NavGraph # Single source for Navigation Routes of this app
├── repository # Used to handle all data operations
├── ui.theme # Theme setup for this app
├── utils # Extension functions
├── view # All composables screens root folder
│ ├── add # Add Task Screen
│ ├── edit_task # Edit Task Screen
│ ├── dashboard # Dashboard Screen
│ ├── all_task # All Task Screen
│ ├── task_details # Task Details Screen
│ ├── emoji # Choose Emoji Screen
│ ├── webview # WebView Screen
│ ├── animation # Animation Placeholders for State handling(Loading, Error, Empty etc.)
│ ├── about # About Screen
│ └── viewmodel # ViewModel
└── MainActivity.kt # MainActivity
架构