Summary
In this chapter, we learned how internationalization and localization work in Flutter and we also used some custom fonts from Google Fonts. Thanks to the intl
package, we can, for example, format currencies and dates based on the device’s locale.
The race standings app is responsive because it dynamically rearranges the UI elements based on the viewport’s sizes. Thanks to breakpoints and the LayoutBuilder
widget, we were able to easily handle the screen size changes.
The builder()
and separated()
constructors of ListViews are very efficient when it comes to painting a fixed series of widgets since they lazily load children.
We also used both PNG and SVG image assets. To render more complex widgets, such as the circular progress indicator, we used CustomPainter
to go a bit more low level.
In the next chapter, we’re going to cover Flutter’s built-in state management solution: InheritedWidget
. We will also use the popular provider
package, which is a wrapper of InheritedWidget
that’s easier to use and test.