Урок 1. 00:09:21
Course Demo
Урок 2. 00:01:51
KMM vs KMP
Урок 3. 00:08:17
Getting Started with KMM
Урок 4. 00:09:46
Dependencies and BuildSrc
Урок 5. 00:09:54
Defining the Screens
Урок 6. 00:08:48
Passing Arguments when Navigating
Урок 7. 00:08:01
Why we are not sharing a ViewModel
Урок 8. 00:03:08
Why we are using Hilt for Dependency Injection
Урок 9. 00:05:14
Hilt Setup
Урок 10. 00:09:52
HiltViewModel
Урок 11. 00:09:11
Providing Dependencies (Hilt Modules)
Урок 12. 00:09:41
Ktor Setup (expect / actual)
Урок 13. 00:05:47
Ktor Demo
Урок 14. 00:04:38
Core Business Model
Урок 15. 00:06:48
Core Network Business Model
Урок 16. 00:02:55
Mapping to and from a Core Business Model
Урок 17. 00:07:12
Date Conversions
Урок 18. 00:07:05
Recipe Service
Урок 19. 00:06:12
Providing the Network Objects with Hilt
Урок 20. 00:05:08
Use-Cases Introduction
Урок 21. 00:05:44
DataState
Урок 22. 00:04:20
Provide SearchRecipes with Hilt
Урок 23. 00:06:47
GetRecipe Use-case
Урок 24. 00:15:59
SQL Delight Setup
Урок 25. 00:04:57
RecipeDatabase and expect actual
Урок 26. 00:08:24
Caching Service
Урок 27. 00:05:53
Mapping Recipe_Entity to Recipe
Урок 28. 00:01:57
Providing CacheService with Hilt
Урок 29. 00:04:19
Adding Caching to the Use-cases
Урок 30. 00:02:28
Introduction to Building the Android UI
Урок 31. 00:14:07
Theme, Colors, Fonts with Compose
Урок 32. 00:10:25
Coil for Displaying Images
Урок 33. 00:07:43
Recipe Card
Урок 34. 00:12:40
Display a List of Recipes
Урок 35. 00:06:57
Indeterminate Progress Bar
Урок 36. 00:21:59
Shimmer Animation
Урок 37. 00:12:15
Event-Driven UI
Урок 38. 00:11:40
Search Bar
Урок 39. 00:06:29
Executing a New Search
Урок 40. 00:04:36
Food Categories
Урок 41. 00:07:46
Horizontal Selectable Food Categories
Урок 42. 00:07:28
Tracking the Selected Category as State
Урок 43. 00:08:55
Recipe Detail Screen
Урок 44. 00:08:56
Recipe Detail State
Урок 45. 00:03:46
Recipe Detail Shimmer Animation
Урок 46. 00:10:39
Identifying the Problem
Урок 47. 00:04:39
Kotlin Queue
Урок 48. 00:02:40
Tracking Errors as State
Урок 49. 00:09:35
Error Dialogs
Урок 50. 00:03:48
Error Message Limitations
Урок 51. 00:08:18
Generic Message Info Builder
Урок 52. 00:06:10
GenericMessageInfo Mechanism
Урок 53. 00:03:40
Preventing Duplicate Dialogs
Урок 54. 00:07:47
Removing Dialogs from the Queue
Урок 55. 00:04:48
Updating GenericDialog
Урок 56. 00:09:28
Introduction to iOS Client
Урок 57. 00:07:35
xCode and SwiftUI
Урок 58. 00:09:05
Manual Dependency Injection
Урок 59. 00:06:45
Recipe List Screen Arguments
Урок 60. 00:07:46
Observable Objects in SwiftUI
Урок 61. 00:07:43
Updating State in Observable Objects
Урок 62. 00:02:26
Triggering Events in RecipeListViewModel
Урок 63. 00:16:24
Collecting a Flow on iOS
Урок 64. 00:05:34
Appending Recipes to State
Урок 65. 00:12:46
SwiftUI Pagination
Урок 66. 00:08:21
Capturing Input on iOS
Урок 67. 00:10:33
Update Query and Execute Search
Урок 68. 00:04:52
Food Category Chip on iOS
Урок 69. 00:04:20
Horizontal Scrollable List on iOS
Урок 70. 00:05:56
Selecting a Food Category
Урок 71. 00:09:18
Display Images Asynchronously in SwiftUI with SDWebImage
Урок 72. 00:03:01
Recipe Card on SwiftUI
Урок 73. 00:06:09
Navigation Link
Урок 74. 00:02:32
Navigation Link Work-around
Урок 75. 00:01:40
Progress View
Урок 76. 00:06:14
Recipe Detail ViewModel on iOS
Урок 77. 00:05:47
Get Recipe Use-case on iOS
Урок 78. 00:07:55
Recipe Detail View on iOS
Урок 79. 00:04:07
Custom Fonts with SwiftUI
Урок 80. 00:05:08
Using the Custom Font
Урок 81. 00:06:12
0 Alerts
Урок 82. 00:10:41
1 Handling Errors in Recipe List Screen
Урок 83. 00:12:03
2 Handling Errors in Recipe Detail Screen