Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 61 additions & 23 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,46 +1,84 @@
# FlutterTools 🛠️

**FlutterTools** is a small CLI app with a growing set of helpful utilities for working with large-scale Flutter projects.

> ⚠️ This is a work-in-progress project. New features are added as they're needed in my primary development workflow.
**FlutterTools** is a .NET-based CLI utility designed to streamline the management of large-scale, multi-package Flutter projects. It automates repetitive tasks such as running `pub get` across multiple modules and helps maintain architectural integrity by identifying missing dependencies in `pubspec.yaml` based on Dart imports.

---

## 🚀 Features

- **Multi-package `pub get`**
Easily run `pub get` across multiple packages or modules — no more switching folders manually.
- **Multi-package `pub get`**
Automatically runs `flutter pub get` across all packages located in `modules/` and `packages/` directories.
- **Cross-module Dependency Analysis**
Analyzes Dart files in your modules to ensure that all internal package imports are correctly declared in their respective `pubspec.yaml` files.
- **Dependency Visualization**
Generates and opens an interactive HTML dependency graph using `pubviz`.
- **Flutter Environment Check**
Quickly run `flutter doctor` directly from the tool.
- **Project Information**
Displays current project path and Flutter SDK information.
- **Dependency Listing**
Runs `flutter pub deps` for the main application to show a full dependency tree.

---

- **Cross-module import checker** *(fixing coming soon)*
Identify problematic imports between packages that can cause issues when:
- Building in Linux containers
- Using IntelliSense in Android Studio
## 📂 Expected Project Structure

- **Flutter environment check**
Run `flutter doctor` and get a quick overview of your Flutter/Dart setup.
FlutterTools is optimized for projects following this structure:

- **HTML import visualization**
Generate an interactive HTML file to visualize your project's import structure.
```
my_flutter_project/
├── application/ # The main Flutter application
├── modules/ # Directory containing internal modules/packages
│ ├── module_a/
│ └── module_b/
└── packages/ # Directory containing additional internal packages
├── package_x/
└── package_y/
```

---

## 📝 TODO
## 🛠️ Prerequisites

- [ ] Add lowercase normalization for import paths
- [ ] Add command-line import visualization (graph view)
- [.NET SDK 8.0+](https://dotnet.microsoft.com/download)
- [Flutter SDK](https://docs.flutter.dev/get-started/install)

---

## 💡 Why?
## 📦 Installation & Usage

Managing a growing Flutter codebase across multiple packages can get messy. This tool aims to automate the boring parts, spot hidden issues, and make dev life just a bit smoother.
### From Source

---
1. Clone the repository:
```bash
git clone https://github.com/[your-username]/fluttertools.git
cd fluttertools
```

## 📦 Installation
2. Run the application using the .NET CLI:
```bash
dotnet run --project FlutterTools/FlutterTools.csproj
```

### Building the Executable

To build a standalone executable:
```bash
git clone https://github.com/yourusername/fluttertools.git
cd fluttertools
dart run
dotnet build --configuration Release
```
The executable will be located in `FlutterTools/bin/Release/net8.0/`.

---

## 📝 TODO

- [ ] Add lowercase normalization for import paths.
- [ ] Add command-line import visualization (graph view).
- [ ] Support custom folder structures.
- [ ] Improve error handling for missing Flutter SDK.

---

## 💡 Why?

Managing a growing Flutter codebase across dozens of packages can be challenging. FlutterTools aims to automate the "boring parts," detect hidden dependency issues early, and provide better visibility into your project's structure.
Loading