for Reactive Programming\
0:33 Introducing RxDart
4:46 More on RxDart
10:39 The CombineLatest Function
20:45 CombineLatest in Action
27:24 More on StreamBuilder
31:03 Interpreting Stream Values
37:00 Broadcast Streams
41:42 Disabled by Default
44:55 Replacing Controllers with Subjects
53:16 Review of BLOCs
Delightful Animations\
56:39 App Overview
59:32 Animation Library Classes
1:10:10 App Boilerplate
1:12:57 StatefulWidgets for Animations
1:17:17 Widget Structure
1:19:43 Displaying a Cat
1:23:27 The InitState Method
1:27:22 Declaring the TickerProvider
1:33:08 Tweens with Curves
1:38:51 Performance Savings with AnimatedBuilder
1:43:54 Nature of Animation
1:50:55 Starting the Animation
1:52:43 Watching for Taps with GestureDetector
1:57:42 Reversing Animation States
2:04:17 Building the Box
2:07:44 Layouts with the Stack Widget
2:10:27 Order of Drawing Widgets
2:13:19 Add Center Widget
2:16:52 Positioned Widgets
2:27:58 Expanding Stack Dimensions
2:34:56 Three Reasons for Strange Layouts
2:42:13 Positioned Constraints
2:46:11 Negative Offsets
2:50:07 Stack Clip Settings
2:53:53 Adjusting Tween Ranges
2:56:12 Adding Box Flaps
2:59:41 Rotating Widgets
3:05:54 Rotation by Radians
3:12:09 Changing Rotation Point
3:15:47 A Touch of Positioning
3:21:05 BoxAnimation Controller
3:28:05 Adding Animated Builders
3:34:33 Resetting Animations
3:38:42 Constraining Animation Range
3:43:02 Adding the Right Flap
3:46:17 Negative Rotation Values
3:50:22 Toggling Animation State
3:52:59 Animation Wrapup
Data Fetching\
3:55:48 App Overview
3:58:57 Hacker News API
4:07:48 More API Challenges
4:15:52 API Performance Strategy
4:24:20 Creating the ItemModel Class
4:32:58 A Few More ItemModel Properties
4:38:23 API Provider Implementation
4:45:09 Fetching Individual Items
with Flutter and Dart\
4:53:42 Testing with Dart
4:58:25 A Few Imports
5:03:35 Writing Expectations
5:08:57 Mocking HTTP Requests
5:14:50 Returning JSON
5:20:33 Testing FetchItem
Data Storage\
5:25:50 SQLite DB Provider
5:29:54 Database Imports
5:34:21 Async Constructors
5:36:43 Creating a DB Connection
5:41:52 Creating Tables with SQLite
5:45:34 Adding Table Columns
5:49:56 Issuing Queries
5:57:52 Multiple Named Constructors
6:02:24 Massaging DB Return Maps
6:06:55 Turning Class Instances to Maps
6:15:36 Implementing the Repository
6:19:41 More on the Repository
6:26:50 Type Annotations
6:33:02 Casting Lists
Design\
6:36:34 More on the Repository
6:39:20 Abstract Classes
6:46:22 The Need for Abstract Classes
6:50:50 Why Abstract Classes
6:58:25 More on Abstract Classes
7:05:27 Repository Interface Design
7:12:44 Defining the Source
7:18:37 Cache Definitions
7:20:45 Lists of Sources and Caches
7:24:16 Ultimate Reusability
7:28:21 Quick Gotcha
7:30:40 Another Quick Gotcha!
7:31:47 FetchTopIds Implementation
Demand Widget Rendering\
7:34:16 App Setup
7:37:01 A Touch of Boilerplate
7:39:47 Data Fetching Concerns
7:50:00 Solution Outline
7:53:22 FutureBuilder in Action
8:05:26 The Stories Provider
8:11:29 Bloc Design
8:18:18 Exposing Bloc Getters
8:21:51 Wiring up the Stories Provider
8:25:11 Bloc Testing
8:33:02 Type Annotations Solve Problems
8:36:26 Circular Progress Indicator
8:39:46 Item Fetching Architecture
8:46:47 Giant Gotcha with StreamBuilder
8:55:21 Giant Gotcha Solution
9:02:37 Implementing ScanStreamTransformer
9:08:16 Finishing the ScanStreamTransformer
9:10:43 Adding the Items Controller
9:14:33 A Gotcha Around Streams Impossible!
9:18:02 Single Transformer Application
9:21:49 The ListView Tile
9:25:56 StreamBuilder Setup
9:29:23 Wrapping Up the FutureBuilder
9:33:20 Double Gotcha!
9:37:17 Stream Subscriptions
9:47:19 Stream Subscription Fix
9:48:32 Additional Streams
9:51:10 A Laborious Refactor
9:59:52 Result of Refactor
10:02:21 Quick Debug Session
10:06:18 Resolving Database Conflicts
10:15:18 Building Story Tiles
10:20:36 Comments Icon
10:25:20 Applying Dividers with Height
10:30:56 Loading Container Stand-in
10:34:20 Building the Loading Container
10:38:41 Showing the Loading Container
10:41:37 Long-Lived Cache Values
10:44:12 Swipe to Refresh Indicator
10:47:07 Implementing a Refresh Widget
10:51:40 Clearing Database Tables
10:59:31 Communicating a Future to onRefresh
with Flutter\
11:07:54 Navigation in Flutter
11:12:00 Map Based Routing
11:17:57 OnGenerateRoute-Based Navigation
11:21:36 OnGenerateRoute Implementation
11:28:11 Navigating in Style!
11:38:16 A PageRoute for NewsDetail
11:45:41 A Scaffold in NewsDetail
11:49:23 Parsing Route Settings
11:54:06 The Comments Bloc Provider