# Mobile App Development with Flutter

## What is Flutter?

Flutter is Google's UI toolkit for building beautiful, natively compiled applications for mobile, web, and desktop from a single codebase.

## Key Features

- **Hot Reload**: Make changes and see them instantly
- **Native Performance**: Flutter compiles to native code
- **Rich Widget Library**: Pre-built UI components
- **Cross-Platform**: One codebase for multiple platforms

## Basic Structure of a Flutter App

```dart
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}
```

## Widgets

Everything in Flutter is a widget. Widgets can be:

- **StatelessWidget**: Immutable, cannot change their state
- **StatefulWidget**: Can change their state during the lifetime of the widget

## State Management

Flutter offers several ways to manage state:

1. **setState()**: For simple state management
2. **Provider**: For moderate complexity
3. **Bloc/Cubit**: For complex applications
4. **Redux/MobX**: Alternative approaches