4. Covers a broad base of Use cases. 5. Dart helps manage the number of states more predictably. Therefore it helps manage complexity better for really large scale applications. The yield is rather low for simple applications.
The Bad: 1. Does not provide comparative or historical perspective. 2. Makes me wonder if it is a programmatic way of designing interfaces. 3. Dart is more focused/biased towards programming than designing. So a programming language background like java is really really recommended. If you are new to programming there would be expectation mismatch.
The Ugly: 1. This is a rapidly changing field with many confusing alternatives. While helping one stay on top of changes, this book may become outdated as usual.