trainlog-egu5j / lib /src /presentation /screens /workout_form_screen.dart
kuubson's picture
Zaprojektuj i wygeneruj kompletną aplikację Flutter (Dart) działającą na iOS, o nazwie TrainLog: dziennik treningu i śledzenie progresu siłowego/sylwetkowego. Aplikacja ma działać offline-first (bez b
afe1e75 verified
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:go_router/go_router.dart';
import 'package:intl/intl.dart';
import 'package:trainlog/src/data/models/exercise.dart';
import 'package:trainlog/src/data/models/set_entry.dart';
import 'package:trainlog/src/data/models/workout.dart';
import 'package:trainlog/src/data/models/workout_exercise.dart';
import 'package:trainlog/src/presentation/providers/exercise_providers.dart';
import 'package:trainlog/src/presentation/providers/isar_provider.dart';
import 'package:trainlog/src/presentation/providers/settings_provider.dart';
import 'package:trainlog/src/presentation/providers/workout_providers.dart';
class WorkoutFormScreen extends ConsumerStatefulWidget {
final int? workoutId;
const WorkoutFormScreen({super.key, this.workoutId});
@override
ConsumerState<WorkoutFormScreen> createState() => _WorkoutFormScreenState();
}
class _WorkoutFormScreenState extends ConsumerState<WorkoutFormScreen> {
final _formKey = GlobalKey<FormState>();
late DateTime _date;
late WorkoutType _type;
final _noteController = TextEditingController();
final _moodController = TextEditingController();
final _durationController = TextEditingController();
final List<_WorkoutExerciseEntry> _exercises = [];
bool _isLoading = false;
@override
void initState() {
super.initState();
_date = DateTime.now();
_type = WorkoutType.strength;
if (widget.workoutId != null) {
_loadWorkout();
}
}
Future<void> _loadWorkout() async {
setState(() => _isLoading = true);