Skip to main content

🌀 Flutter App Lifecycle – Easy Way to Understand

 

When you build an app in Flutter, it goes through different states depending on how the user interacts with it (open, minimize, back button, etc).

Think of it like a human day cycleWake up → Active → Sleep → Wake again.


🌱 1. main() – Birth of the App

Every Flutter app starts from the main() function.

void main() { runApp(MyApp()); }

👉 This is like turning ON the lights – your app is born.


🏗 2. Widgets Lifecycle

In Flutter, everything is a Widget.
There are two main types:

  • StatelessWidget → UI that doesn’t change.

  • StatefulWidget → UI that changes with user interaction.

For StatefulWidget, the lifecycle looks like this:

🔹 When Widget is created

  1. createState() → Creates a State object (like preparing memory).

  2. initState() → First time setup (like waking up, stretching, preparing breakfast).

    • Best place for API calls, animation controllers, initial values.

🔹 When Widget builds

  1. build() → Renders UI (like dressing up for the day).

    • Called multiple times whenever setState() is triggered.

🔹 When Widget updates

  1. didUpdateWidget() → Called when parent widget changes (like when your boss gives new instructions but you’re the same person).

🔹 When Widget is removed

  1. dispose() → Cleanup (like going to sleep, turning off lights).

    • Best place to close streams, dispose controllers.


📱 3. App Lifecycle (whole app, not just widget)

Flutter gives AppLifecycleState inside WidgetsBindingObserver.
The states are:

  • resumed → App is in foreground (visible, active).

  • inactive → App is in foreground but not interactive (e.g. phone call overlay).

  • paused → App is in background (user minimized or switched apps).

  • detached → App is about to be killed (rare on Android, more common on iOS).

👉 Example:

class MyApp extends StatefulWidget { @override _MyAppState createState() => _MyAppState(); } class _MyAppState extends State<MyApp> with WidgetsBindingObserver { @override void initState() { super.initState(); WidgetsBinding.instance.addObserver(this); } @override void didChangeAppLifecycleState(AppLifecycleState state) { print("App state: $state"); } @override void dispose() { WidgetsBinding.instance.removeObserver(this); super.dispose(); } @override Widget build(BuildContext context) { return MaterialApp(home: Scaffold(body: Center(child: Text("Lifecycle Demo")))); } }

🧠 Easy Analogy

  • initState() → Wake up, get ready.

  • build() → Show yourself to the world.

  • setState() → Change clothes/mood anytime.

  • dispose() → Go to bed.

  • AppLifecycleState.paused → You’re on a tea break.

  • AppLifecycleState.resumed → Back to work.

Comments

Your Complete Flutter Roadmap: From Beginner to Pro

📱 Flutter ListTile and ListView: Explained with Easy Examples

Flutter ListTile and ListView: When you start learning Flutter, two widgets often confuse beginners: ListTile  &  ListView . Both are used to display items in a list, but their purpose is different. Let’s break them down in a simple way. 🔹 What is ListTile in Flutter? ListTile is a ready-made widget used to show a single row (one item). It usually contains: title (main text) subtitle (small text under the title) leading (icon/image on the left) trailing (icon/text on the right) 👉 Think of ListTile as a single row card inside a list. ✅ Example of ListTile: import 'package:flutter/material.dart'; void main() { runApp(const MyApp()); } class MyApp extends StatelessWidget { const MyApp({super.key}); @override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar(title: const Text("Flutter ListTile Example")), body: const ListTile( leading:...

Text Widget In Flutter

  The Text widget in Flutter is used to display text on the screen. It's one of the most fundamental widgets and supports a wide range of customizations to style, align, and manage text. Here’s a detailed overview: Basic Syntax dart Copy code Text( 'Hello, Flutter!', style: TextStyle(fontSize: 24, color: Colors.blue), textAlign: TextAlign.center, ) Key Properties data : The text string to display. Example: 'Hello, World!' . style : Defines the appearance of the text. Uses the TextStyle class for customization. Example : dart Copy code Text( 'Styled Text', style: TextStyle( fontSize: 20, fontWeight: FontWeight.bold, color: Colors.red, fontStyle: FontStyle.italic, letterSpacing: 2.0, wordSpacing: 5.0, decoration: TextDecoration.underline, ), ) textAlign : Aligns the text horizontally. Values: TextAlign.left , TextAlign.right , TextAlign.center , TextAlign.justify , etc. Example: dart Copy code textAlign: TextAlign.cente...