This commit is contained in:
@@ -12,7 +12,7 @@ A POS (Point of Sale) application for business owners, built with Flutter. The p
|
||||
- Architecture Overview
|
||||
- Project Structure
|
||||
- Key Dependencies & Purpose
|
||||
- Code Generation
|
||||
- Code Generation (see docs/codegen.md)
|
||||
- Internationalization (i18n)
|
||||
- Theming & Assets
|
||||
- Environment Configuration (`env.dart`)
|
||||
@@ -40,6 +40,7 @@ A POS (Point of Sale) application for business owners, built with Flutter. The p
|
||||
|
||||
- Flutter SDK installed as per the official guide (`https://flutter.dev/docs/get-started/install`)
|
||||
- Dart version per constraint: ^3.8.1
|
||||
- For code generation only: FVM + Flutter 3.41.9 (`dart pub global activate fvm && fvm install 3.41.9`) — see [docs/codegen.md](docs/codegen.md)
|
||||
|
||||
### Installation
|
||||
|
||||
@@ -51,8 +52,16 @@ flutter pub get
|
||||
|
||||
### Code generation (required after clone or when annotations change)
|
||||
|
||||
```bash
|
||||
flutter pub run build_runner build --delete-conflicting-outputs
|
||||
> **Do not run codegen with Flutter 3.47 / Dart 3.13** — every builder crashes with
|
||||
> `Missing implementation of visitDotShorthandPropertyAccess`. Codegen must run on Flutter 3.41.9
|
||||
> (Dart 3.11.5) via FVM. Full setup, commands, and troubleshooting: **[docs/codegen.md](docs/codegen.md)**.
|
||||
|
||||
```powershell
|
||||
$FVM = "$env:USERPROFILE\fvm\versions\3.41.9\bin"
|
||||
|
||||
& "$FVM\flutter.bat" pub get
|
||||
& "$FVM\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||
flutter pub get # restore lockfile resolution for the global SDK
|
||||
```
|
||||
|
||||
> Re-run whenever you change files using `@RoutePage()`, `@injectable`, `@freezed`, or `@JsonSerializable`.
|
||||
@@ -179,14 +188,27 @@ Refer to `pubspec.yaml` for full version constraints.
|
||||
|
||||
## Code Generation
|
||||
|
||||
**Full guide: [docs/codegen.md](docs/codegen.md)** — read it before your first codegen run.
|
||||
|
||||
Codegen runs on a pinned SDK (Flutter 3.41.9 / Dart 3.11.5 via FVM), not on the global Flutter 3.47:
|
||||
`freezed 2.5.8` caps `analyzer` below 8.0.0, and analyzer 7.7.1 crashes on the dot-shorthand syntax
|
||||
used by Dart 3.13 sources. The app itself still runs and builds with the global SDK.
|
||||
|
||||
Common commands:
|
||||
|
||||
```bash
|
||||
flutter pub run build_runner build --delete-conflicting-outputs
|
||||
```powershell
|
||||
$FVM = "$env:USERPROFILE\fvm\versions\3.41.9\bin"
|
||||
|
||||
& "$FVM\flutter.bat" pub get
|
||||
& "$FVM\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||
# or watch
|
||||
flutter pub run build_runner watch --delete-conflicting-outputs
|
||||
& "$FVM\dart.bat" run build_runner watch --delete-conflicting-outputs
|
||||
flutter pub get # restore lockfile resolution for the global SDK
|
||||
```
|
||||
|
||||
> `--delete-conflicting-outputs` wipes every generated file first. If you cancel the build midway,
|
||||
> restore them with `git checkout` — see the troubleshooting table in [docs/codegen.md](docs/codegen.md).
|
||||
|
||||
### Asset generation (flutter_gen_runner)
|
||||
|
||||
`flutter_gen_runner` is integrated with `build_runner`. Running the commands above will also generate typed accessors for assets based on the `flutter_gen` section in `pubspec.yaml`:
|
||||
@@ -255,15 +277,20 @@ flutter pub get
|
||||
flutter format .
|
||||
flutter analyze
|
||||
|
||||
# Code generation (single run / watch)
|
||||
flutter pub run build_runner build --delete-conflicting-outputs
|
||||
flutter pub run build_runner watch --delete-conflicting-outputs
|
||||
# Localization (safe on the global SDK)
|
||||
flutter gen-l10n
|
||||
|
||||
# Run by device
|
||||
flutter devices
|
||||
flutter run -d <device-id>
|
||||
```
|
||||
|
||||
Code generation uses the pinned FVM SDK — see [docs/codegen.md](docs/codegen.md):
|
||||
|
||||
```powershell
|
||||
& "$env:USERPROFILE\fvm\versions\3.41.9\bin\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Additional Notes
|
||||
@@ -316,7 +343,7 @@ Aplikasi Point of Sale (POS) untuk pemilik usaha, dibangun dengan Flutter. Proye
|
||||
- Arsitektur & Alur
|
||||
- Struktur Proyek
|
||||
- Dependensi Utama & Fungsinya
|
||||
- Code Generation
|
||||
- Code Generation (lihat docs/codegen.md)
|
||||
- Internationalization (i18n)
|
||||
- Theming & Assets
|
||||
- Konfigurasi Lingkungan (`env.dart`)
|
||||
@@ -344,6 +371,7 @@ Aplikasi Point of Sale (POS) untuk pemilik usaha, dibangun dengan Flutter. Proye
|
||||
|
||||
- Flutter SDK terpasang sesuai panduan resmi (`https://flutter.dev/docs/get-started/install`)
|
||||
- Versi Dart sesuai constraint: ^3.8.1
|
||||
- Khusus untuk code generation: FVM + Flutter 3.41.9 (`dart pub global activate fvm && fvm install 3.41.9`) — lihat [docs/codegen.md](docs/codegen.md)
|
||||
|
||||
### Instalasi
|
||||
|
||||
@@ -355,8 +383,16 @@ flutter pub get
|
||||
|
||||
### Generate kode (wajib setelah clone atau mengubah anotasi)
|
||||
|
||||
```bash
|
||||
flutter pub run build_runner build --delete-conflicting-outputs
|
||||
> **Jangan jalankan codegen dengan Flutter 3.47 / Dart 3.13** — semua builder crash dengan
|
||||
> `Missing implementation of visitDotShorthandPropertyAccess`. Codegen harus memakai Flutter 3.41.9
|
||||
> (Dart 3.11.5) via FVM. Setup, perintah, dan troubleshooting lengkap: **[docs/codegen.md](docs/codegen.md)**.
|
||||
|
||||
```powershell
|
||||
$FVM = "$env:USERPROFILE\fvm\versions\3.41.9\bin"
|
||||
|
||||
& "$FVM\flutter.bat" pub get
|
||||
& "$FVM\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||
flutter pub get # kembalikan resolusi lockfile ke SDK global
|
||||
```
|
||||
|
||||
> Jalankan ulang perintah di atas setiap kali Anda mengubah file yang menggunakan anotasi `@RoutePage()`, `@injectable`, `@freezed`, atau `@JsonSerializable`.
|
||||
@@ -472,14 +508,27 @@ Catatan versi lengkap tersedia di `pubspec.yaml`.
|
||||
|
||||
## Code Generation
|
||||
|
||||
**Panduan lengkap: [docs/codegen.md](docs/codegen.md)** — baca dulu sebelum codegen pertama kali.
|
||||
|
||||
Codegen dijalankan dengan SDK terpisah (Flutter 3.41.9 / Dart 3.11.5 via FVM), bukan Flutter global 3.47:
|
||||
`freezed 2.5.8` mengunci `analyzer` di bawah 8.0.0, dan analyzer 7.7.1 crash pada sintaks *dot-shorthand*
|
||||
milik Dart 3.13. Aplikasinya sendiri tetap di-`run`/`build` dengan SDK global.
|
||||
|
||||
Perintah umum:
|
||||
|
||||
```bash
|
||||
flutter pub run build_runner build --delete-conflicting-outputs
|
||||
```powershell
|
||||
$FVM = "$env:USERPROFILE\fvm\versions\3.41.9\bin"
|
||||
|
||||
& "$FVM\flutter.bat" pub get
|
||||
& "$FVM\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||
# atau untuk watch
|
||||
flutter pub run build_runner watch --delete-conflicting-outputs
|
||||
& "$FVM\dart.bat" run build_runner watch --delete-conflicting-outputs
|
||||
flutter pub get # kembalikan resolusi lockfile ke SDK global
|
||||
```
|
||||
|
||||
> `--delete-conflicting-outputs` menghapus semua file generated lebih dulu. Kalau build dibatalkan di
|
||||
> tengah jalan, pulihkan dengan `git checkout` — lihat tabel troubleshooting di [docs/codegen.md](docs/codegen.md).
|
||||
|
||||
Generator yang digunakan:
|
||||
|
||||
- AutoRoute: menghasilkan deklarasi router & route.
|
||||
@@ -533,15 +582,20 @@ flutter pub get
|
||||
flutter format .
|
||||
flutter analyze
|
||||
|
||||
# Code generation (sekali jalan / watch)
|
||||
flutter pub run build_runner build --delete-conflicting-outputs
|
||||
flutter pub run build_runner watch --delete-conflicting-outputs
|
||||
# Localization (aman dengan SDK global)
|
||||
flutter gen-l10n
|
||||
|
||||
# Run by device
|
||||
flutter devices
|
||||
flutter run -d <device-id>
|
||||
```
|
||||
|
||||
Code generation memakai SDK FVM yang di-pin — lihat [docs/codegen.md](docs/codegen.md):
|
||||
|
||||
```powershell
|
||||
& "$env:USERPROFILE\fvm\versions\3.41.9\bin\dart.bat" run build_runner build --delete-conflicting-outputs
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Catatan Tambahan
|
||||
|
||||
Reference in New Issue
Block a user