First App

Use the official installer for your machine, then create the smallest app that can run on one target.

flutter doctor
flutter create expense_notes
cd expense_notes
flutter run

This proves the SDK, editor/device toolchain, and one target are wired. It does not prove app architecture, release readiness, or cross-platform support.

First Edit

Replace the generated counter with one screen and one extracted widget:

import 'package:flutter/material.dart';

void main() => runApp(const ExpenseNotesApp());

class ExpenseNotesApp extends StatelessWidget {
  const ExpenseNotesApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(home: ExpenseHome());
  }
}

class ExpenseHome extends StatelessWidget {
  const ExpenseHome({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Expense Notes')),
      body: const Center(child: Text('No expenses yet')),
    );
  }
}

First Validation

dart format lib test
flutter analyze
flutter test
flutter run -d <device-id>

Use flutter devices to list available devices. Pick one target and write it down in the project notes.

Gotcha: If flutter doctor reports missing Android, iOS, or desktop tooling, fix the target you actually need first. Do not spend hours making every target green before the product has a target matrix.