# 1. Sklonuj i przejdź do projektu
git clone <repo-url>
cd fit26
# 2. Uruchom w trybie development
./dev.shSkrypt dev.sh automatycznie:
- Zainstaluje zależności
- Wygeneruje kod (build_runner)
- Uruchomi aplikację z hot reload
# Podłącz telefon przez USB, włącz USB Debugging
# Debug build (szybki, z debugowaniem)
./deploy_android.sh
# Release build (zoptymalizowany, bez debugowania)
./deploy_android.sh -r
# Clean + Release (gdy masz problemy z cache)
./deploy_android.sh -c -r# Utwórz nowy branch
git checkout -b feature/nazwa-funkcji
# Pracuj z hot reload
./dev.sh
# Naciśnij 'r' dla hot reload podczas pracyGdy dodajesz/modyfikujesz:
- Modele z
@freezed - Providery z
@riverpod - Tabele Drift
Uruchom:
dart run build_runner build --delete-conflicting-outputsLub w tle podczas developmentu:
dart run build_runner watch --delete-conflicting-outputs# Wszystkie testy
flutter test
# Pojedynczy plik
flutter test test/widget_test.dart
# Z coverage
flutter test --coverage# Sprawdź błędy i warningi
flutter analyze
# Formatowanie kodu
dart format lib/
# Napraw automatyczne problemy
dart fix --applylib/domain/models/
└── nazwa_modelu.dart # @freezed + toJson/fromJson
lib/domain/services/
└── nazwa_service.dart # @riverpod
lib/features/nazwa_ekranu/
├── nazwa_screen.dart # ConsumerWidget
├── providers/
│ └── nazwa_provider.dart # @riverpod state
└── widgets/
├── nazwa_form.dart
└── nazwa_list.dart
lib/data/db/
└── database.dart # Dodaj klasę extends Table
Potem:
dart run build_runner build -dlib/shared/widgets/
└── nazwa_widget.dart
- Otwórz projekt w VS Code
- F5 lub Run > Start Debugging
- Ustaw breakpointy klikając na marginesie
- Otwórz projekt
- Shift+F10 (Run) lub Shift+F9 (Debug)
# W terminalu gdzie działa flutter run
# Naciśnij 'v' aby otworzyć DevTools w przeglądarceflutter pub getdart run build_runner build --delete-conflicting-outputscd android
./gradlew clean
cd ..
flutter clean
flutter pub get# Sprawdź czy ADB widzi telefon
adb devices
# Jeśli nie:
# 1. Włącz USB Debugging na telefonie
# 2. Odłącz i podłącz ponownie
# 3. Zaakceptuj prompt na telefonie# W terminalu gdzie działa flutter run
# Naciśnij 'R' (capital R) dla hot restart// 1. Dart/Flutter core
import 'package:flutter/material.dart';
// 2. External packages (pub.dev)
import 'package:riverpod_annotation/riverpod_annotation.dart';
// 3. Własne pliki
import '../../domain/models/entry.dart';
// 4. Generated
part 'filename.g.dart';- Klasy:
PascalCase(np.TodayScreen) - Pliki:
snake_case(np.today_screen.dart) - Zmienne/funkcje:
camelCase(np.totalDuration) - Prywatne:
_leading_underscore(np._buildCard) - Stałe:
lowerCamelCase(np.defaultPadding)
- Preferuj
constkonstruktory - Rozdzielaj duże widgety na mniejsze metody/klasy
- Używaj
ConsumerWidgetdla Riverpod - Spacing: używaj
Gap*zamiastSizedBox
// ✅ Dobrze - Notifier pattern
@riverpod
class TodosNotifier extends _$TodosNotifier {
@override
Future<List<Todo>> build() async {
// load data
}
}
// ❌ Źle - zwykły provider dla mutowalnego stanu
@riverpod
List<Todo> todos(TodosRef ref) {
return []; // Don't do this for mutable state
}- Używaj const widgets:
const Text('Hello') - Selektory:
ref.watch(provider.select((s) => s.field)) - Keys dla list:
ValueKey(item.id) - Lazy loading:
ListView.builderzamiastListView - Cache images: użyj
CachedNetworkImagejeśli dodasz obrazy
# Nowa funkcja
git checkout -b feature/nazwa
# ... zmiany ...
git add .
git commit -m "feat: opis funkcji"
git push origin feature/nazwa
# Fix
git checkout -b fix/nazwa
# ... zmiany ...
git commit -m "fix: opis poprawki"
# Commit messages:
# feat: nowa funkcja
# fix: poprawka błędu
# refactor: refaktoryzacja kodu
# docs: dokumentacja
# test: testy
# style: formatowanie# 1. Formatowanie
dart format lib/
# 2. Analiza
flutter analyze
# 3. Testy
flutter test
# 4. Build test
flutter build apk --debug
# Jeśli wszystko OK - create PR!# Flutter doctor - sprawdź setup
flutter doctor -v
# Lista urządzeń
flutter devices
# Logi w czasie rzeczywistym
adb logcat | grep flutter
# Wielkość APK
flutter build apk --release --analyze-size
# Zrzut ekranu z aplikacji (gdy działa)
flutter screenshot
# Czyszczenie cache
flutter clean
flutter pub cache repairMasz pytania? Sprawdź:
README.md- podstawowe info o projekcie- Ten plik - development workflow
- Kod w
lib/- przykłady implementacji