Flutter Developer Cheat Sheet: Essential Concepts
Widgets and UI Elements:
Widgets: In Flutter, everything is a widget. Widgets are the building blocks of the user interface, such as buttons, text, images, containers, etc.
StatelessWidget: Represents a widget that doesn't change its properties over time. It's used for static UI elements.
StatefulWidget: Represents a widget that can change its properties over time. It's used for dynamic UI elements that need to update.
Container: A widget that combines painting, positioning, and sizing widgets in a single element. It's used for layout and styling purposes.
Text: Displays simple text with various styles like font size, color, etc.
Image: Displays images from local or network sources.
Row: Arranges children widgets in a horizontal line.
Column: Arranges children widgets in a vertical line.
Stack: Overlaps widgets on top of each other, useful for creating layered UI.
ListView: Provides a scrollable list of widgets.
AppBar: A top app bar for navigation and displaying actions.
TextField: Input field for user text input.
Button: Various types of buttons like RaisedButton (elevated button), FlatButton, and IconButton (icon-based button).
State Management:
setState: A method used in StatefulWidget to update the state of the widget when needed.
Provider: A Flutter package that provides a simple way to manage state across the app, reducing boilerplate code.
Bloc: Stands for Business Logic Component, an architectural pattern for managing complex app states.
GetX: A lightweight Flutter package for state management, navigation, and more.
Riverpod: A provider-like library for managing state and dependencies.
Navigation:
Navigator: A class that manages app navigation and routing.
push: Navigates to a new screen, adding it to the navigation stack.
pop: Returns from the current screen to the previous one.
Named routes: Named routes provide a more structured way to navigate by assigning names to routes.
Networking:
http: A package for making HTTP requests to fetch data from APIs.
Dio: A more feature-rich alternative to the http package for HTTP requests.
Fetching data: Use FutureBuilder or StreamBuilder widgets to fetch and display data asynchronously.
Data Persistence:
SharedPreferences: A simple key-value store for storing small amounts of data.
SQLite: A local relational database for more complex data storage.
Hive: A lightweight NoSQL database designed for efficient data storage.
Styling and Theming:
Theme: Defines the app's overall visual style, such as colors, fonts, and typography.
Colors: Predefined color constants available for use in the app.
Fonts: Custom fonts can be added and used to style text.
MaterialApp: A widget that sets up the app's theme using ThemeData.
Animations:
Tween: An interpolation between two values over a range.
AnimatedBuilder: A widget that rebuilds the widget tree when an animation changes.
Hero: Creates hero animations between screens, enhancing the user experience.
AnimationController: A class that controls animations, specifying duration and value ranges.