Show Menu

Mobile Application 2 Cheat Sheet (DRAFT) by [deleted]


This is a draft cheat sheet. It is a work in progress and is not finished yet.


Flutter has Stateful and Stateless Widgets. Stateful widgets (Checkbox, Slider) can display a state, Stateless widgets (Text, IconBu­tton) can't.

Override build method in state

//override build method to return an IconButton which displays different icons based on _isFavorited, and a Text which displays _favoriteCount
  Widget build(BuildContext context) {
    return Row(
      mainAxisSize: MainAxisSize.min,
      children: [
          padding: EdgeInsets.all(0),
          child: IconButton(
            icon: (_isFavorited ? Icon( : Icon(Icons.star_border)),
            onPressed: _toggleFavorite,
          width: 18,
          child: Container(
            child: Text('$_favoriteCount'),

Creating a stateful widget

When createState() is called (which is overridden from StatefulWidget, a new _FavoriteWidgetState is created.

class FavoriteWidget extends StatefulWidget {
  _FavoriteWidgetState createState() => _FavoriteWidgetState();

Add toggle method

//sets the state when _toggleFavorite is invoked so the widget refreshes; Increase favorite count
void _toggleFavorite() {
  setState(() {
    if (_isFavorited) {
      _favoriteCount -= 1;
      _isFavorited = false;
    } else {
      _favoriteCount += 1;
      _isFavorited = true;

Create state

Create _FavoriteWidgetState which holds properties like isFavorited and favoriteCount

class _FavoriteWidgetState extends State<FavoriteWidget> {
  bool _isFavorited = true;
  int _favoriteCount = 41;

Types of state managment

Widget manages its own state
Sometimes it makes sense to manage state intern­ally. ListView scrolls automa­tically if content exceeds render box, this is managed internally so the developer doesnt have to handle it
Parent widget manages the widget’s state
Parent manages state of children and tells child widget when to update.
Mix-an­d-match approach
Some of the state is managed by the widget, some of it is managed by the parent widget.