Errata for Flutter Apprentice 2nd Edition

@drizla yes that is expected. If you follow the rest of the instructions it should prompt you to add a new page as you build up the navigator stack.

Firebase Cloud Firestore

  • Also has a free plan, but charges for storage used, not for queries made, past the limit.
  • Extremely low latency.
  • Easy to store simple data using JSON.
  • Available for mobile only.

And web app ? So we could use it to create flutter web app ?

Chapter 10: Please what does it mean , when they said we should make sure our installed flutter is set to a path that points to it, because i added my installed flutter to the starter folder, the command isn’t running

I forget the section I first noticed this in, but grep all code examples for “TODO;” (TODO followed by semicolon.)

While I suspect colon vs. semicolon doesn’t matter much here - I don’t know if parsers are looking for anything but “TODO” in comments - this was an inconsistency in grammar that popped out at me. You used colon most of the time.

Chapter 12. Under “Handling recipe results”, comment 3 says the Error class is for modelling errors such as incorrect credentials.

  1. Created the Error class to extend Result and hold an exception. This will model errors that occur during an HTTP call, like using the wrong credentials or trying to fetch data without authorization.

However, when the app is run with incorrect credentials, it crashes on line 219 of recipe_list.dart with the following message:

_CastError (type 'Null' is not a subtype of type 'Success<dynamic>' in type cast)

It looks like the Error check isn’t working.

@jomoka @funkyboy i need your help here :sob: :sob:

That output means that the command is running correctly.
The issue is related to the formatting of pubspec.yaml

Entries should be indented like this flta-materials/pubspec.yaml at editions/2.0 · raywenderlich/flta-materials · GitHub

Thanks so much @funkyboy it has worked, but there are still red squiggles in my recipe_model.dart

By placing cursor on red line you will see error type to help you

Thanks guys @olivaxa @funkyboy, I restarted my Android studio and the red squiggles went out :rofl::rofl::rofl::rofl:

I think there may be minor errors in the followings
Example on p53
Should the SafeArea wrap the Scaffold instead of just the body of the Scaffold so that the AppBar is also inside the SafeArea.
Example on p88
Text inside the AppBar should be wrapped by Center to match the illustrations in the book.
Example on p173, p186
import ‘…/components/components.dart’ should be ‘components.dart’ since they are in the same folder.
Example on p175
No need for top:0, - only need to specify non zero parameters.
Appendix B
A simpler solution is
const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 1),

Chapter 12/ Decoding JSON:

small typo: overwrite → override

Section 0: An omission
Under the Before You Begin → Introduction → How to read this book
There is no reference to the contents of Section VI and the last paragraph talks of five instead of six chapters in the sentence “Here’s a breakdown of these five main sections of the book:”
The breakdown of chapters also excludes Section VI

Thanks for reporting to this.
It’s been fixed and will be included in the upcoming release.

1 Like

Chapter 13: This what I get when I search for chicken in the search box, after hot reloading my app.


@jomoka @funkyboy

1 Like

Chapter 13 → Finding stored recipes and ingredients
In findRecipeIngredients() why do we need to find the recipe first by its id then use that recipe.id to find the ingredients, while we have the recipeId in the first place?
Do I miss something?

Are credentials correctly set?

Yes, you are right. I am also confused as you are. An ingredient has recipe.id so why do we need to find the recipe? :thinking:

1 Like

I think the ‘s’ here should be subscription

1 Like