Course Demo
updated Aug. 2, 2021
Lectures
-
Course Demo
-
Part 1: Project Setup
-
KMM vs KMP
-
Getting Started with KMM
-
Dependencies and BuildSrc
-
Part 2: Navigation with Jetpack Compose
-
Defining the Screens
-
Passing Arguments when Navigating
-
Part 3: Hilt + ViewModels
-
Why we are not sharing a ViewModel
-
Why we are using Hilt for Dependency Injection
-
Hilt Setup
-
HiltViewModel
-
Providing Dependencies (Hilt Modules)
-
Part 4: Ktor Network Client
-
Ktor Setup (expect / actual)
-
Ktor Demo
-
Core Business Model
-
Core Network Business Model
-
Mapping to and from a Core Business Model
-
Date Conversions
-
Recipe Service
-
Providing the Network Objects with Hilt
-
Part 5: Use Cases
-
Use-Cases Introduction
-
DataState
-
Provide SearchRecipes with Hilt
-
GetRecipe Use-case
-
Part 6: Caching
-
SQL Delight Setup
-
RecipeDatabase and expect actual
-
Caching Service
-
Mapping Recipe_Entity to Recipe
-
Providing CacheService with Hilt
-
Adding Caching to the Use-cases
-
Part 7: Android UI
-
Introduction to Building the Android UI
-
Theme, Colors, Fonts with Compose
-
Coil for Displaying Images
-
Recipe Card
-
Display a List of Recipes
-
Indeterminate Progress Bar
-
Shimmer Animation
-
Event-Driven UI
-
Search Bar
-
Executing a New Search
-
Food Categories
-
Horizontal Selectable Food Categories
-
Tracking the Selected Category as State
-
Recipe Detail Screen
-
Recipe Detail State
-
Recipe Detail Shimmer Animation
-
Part 8: Errors and Dialogs
-
Identifying the Problem
-
Kotlin Queue
-
Tracking Errors as State
-
Error Dialogs
-
Error Message Limitations
-
Generic Message Info Builder
-
GenericMessageInfo Mechanism
-
Preventing Duplicate Dialogs
-
Removing Dialogs from the Queue
-
Updating GenericDialog
-
Part 9: iOS Client
-
Introduction to iOS Client
-
xCode and SwiftUI
-
Manual Dependency Injection
-
Recipe List Screen Arguments
-
Observable Objects in SwiftUI
-
Updating State in Observable Objects
-
Triggering Events in RecipeListViewModel
-
Collecting a Flow on iOS
-
Appending Recipes to State
-
SwiftUI Pagination
-
Capturing Input on iOS
-
Update Query and Execute Search
-
Food Category Chip on iOS
-
Horizontal Scrollable List on iOS
-
Selecting a Food Category
-
Display Images Asynchronously in SwiftUI with SDWebImage
-
Recipe Card on SwiftUI
-
Navigation Link
-
Navigation Link Work-around
-
Progress View
-
Recipe Detail ViewModel on iOS
-
Get Recipe Use-case on iOS
-
Recipe Detail View on iOS
-
Custom Fonts with SwiftUI
-
Using the Custom Font
-
0 Alerts
-
1 Handling Errors in Recipe List Screen
-
2 Handling Errors in Recipe Detail Screen
Comments
Lectures
-
Course Demo
-
Part 1: Project Setup
-
KMM vs KMP
-
Getting Started with KMM
-
Dependencies and BuildSrc
-
Part 2: Navigation with Jetpack Compose
-
Defining the Screens
-
Passing Arguments when Navigating
-
Part 3: Hilt + ViewModels
-
Why we are not sharing a ViewModel
-
Why we are using Hilt for Dependency Injection
-
Hilt Setup
-
HiltViewModel
-
Providing Dependencies (Hilt Modules)
-
Part 4: Ktor Network Client
-
Ktor Setup (expect / actual)
-
Ktor Demo
-
Core Business Model
-
Core Network Business Model
-
Mapping to and from a Core Business Model
-
Date Conversions
-
Recipe Service
-
Providing the Network Objects with Hilt
-
Part 5: Use Cases
-
Use-Cases Introduction
-
DataState
-
Provide SearchRecipes with Hilt
-
GetRecipe Use-case
-
Part 6: Caching
-
SQL Delight Setup
-
RecipeDatabase and expect actual
-
Caching Service
-
Mapping Recipe_Entity to Recipe
-
Providing CacheService with Hilt
-
Adding Caching to the Use-cases
-
Part 7: Android UI
-
Introduction to Building the Android UI
-
Theme, Colors, Fonts with Compose
-
Coil for Displaying Images
-
Recipe Card
-
Display a List of Recipes
-
Indeterminate Progress Bar
-
Shimmer Animation
-
Event-Driven UI
-
Search Bar
-
Executing a New Search
-
Food Categories
-
Horizontal Selectable Food Categories
-
Tracking the Selected Category as State
-
Recipe Detail Screen
-
Recipe Detail State
-
Recipe Detail Shimmer Animation
-
Part 8: Errors and Dialogs
-
Identifying the Problem
-
Kotlin Queue
-
Tracking Errors as State
-
Error Dialogs
-
Error Message Limitations
-
Generic Message Info Builder
-
GenericMessageInfo Mechanism
-
Preventing Duplicate Dialogs
-
Removing Dialogs from the Queue
-
Updating GenericDialog
-
Part 9: iOS Client
-
Introduction to iOS Client
-
xCode and SwiftUI
-
Manual Dependency Injection
-
Recipe List Screen Arguments
-
Observable Objects in SwiftUI
-
Updating State in Observable Objects
-
Triggering Events in RecipeListViewModel
-
Collecting a Flow on iOS
-
Appending Recipes to State
-
SwiftUI Pagination
-
Capturing Input on iOS
-
Update Query and Execute Search
-
Food Category Chip on iOS
-
Horizontal Scrollable List on iOS
-
Selecting a Food Category
-
Display Images Asynchronously in SwiftUI with SDWebImage
-
Recipe Card on SwiftUI
-
Navigation Link
-
Navigation Link Work-around
-
Progress View
-
Recipe Detail ViewModel on iOS
-
Get Recipe Use-case on iOS
-
Recipe Detail View on iOS
-
Custom Fonts with SwiftUI
-
Using the Custom Font
-
0 Alerts
-
1 Handling Errors in Recipe List Screen
-
2 Handling Errors in Recipe Detail Screen