Enhanced signature step and adjusted note bloc

This commit is contained in:
Dennis Nemec
2026-01-07 16:07:24 +01:00
parent 622967e5c1
commit 6a53d2d716
4 changed files with 81 additions and 61 deletions

View File

@ -7,10 +7,13 @@ import 'package:hl_lieferservice/feature/delivery/detail/bloc/note_bloc.dart';
import 'package:hl_lieferservice/feature/delivery/detail/bloc/note_event.dart';
import 'package:hl_lieferservice/feature/delivery/detail/presentation/delivery_sign.dart';
import 'package:hl_lieferservice/feature/delivery/detail/presentation/steps/step.dart';
import 'package:hl_lieferservice/feature/delivery/detail/repository/note_repository.dart';
import 'package:hl_lieferservice/feature/delivery/detail/service/notes_service.dart';
import 'package:hl_lieferservice/feature/delivery/overview/bloc/tour_bloc.dart';
import 'package:hl_lieferservice/feature/delivery/overview/bloc/tour_event.dart';
import 'package:hl_lieferservice/feature/delivery/overview/bloc/tour_state.dart';
import 'package:hl_lieferservice/model/delivery.dart';
import 'package:hl_lieferservice/widget/operations/bloc/operation_bloc.dart';
class DeliveryDetail extends StatefulWidget {
final String deliveryId;
@ -118,9 +121,17 @@ class _DeliveryDetailState extends State<DeliveryDetail> {
void _openSignatureView(Delivery delivery) {
Navigator.of(context).push(
MaterialPageRoute(
builder:
(context) =>
SignatureView(onSigned: _onSign, delivery: delivery),
builder: (context) {
return BlocProvider(
create:
(context) => NoteBloc(
repository: NoteRepository(service: NoteService()),
opBloc: context.read<OperationBloc>(),
deliveryId: delivery.id,
),
child: SignatureView(onSigned: _onSign, delivery: delivery),
);
},
),
);
}
@ -150,9 +161,10 @@ class _DeliveryDetailState extends State<DeliveryDetail> {
padding: const EdgeInsets.only(left: 20),
child: FilledButton(
onPressed:
() => _step == _steps.length - 1
? _openSignatureView(delivery)
: _clickForward,
() =>
_step == _steps.length - 1
? _openSignatureView(delivery)
: _clickForward,
child:
_step == _steps.length - 1
? const Text("Unterschreiben")
@ -168,27 +180,31 @@ class _DeliveryDetailState extends State<DeliveryDetail> {
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text("Auslieferungsdetails")),
body: BlocBuilder<TourBloc, TourState>(builder: (context, state) {
final currentState = state;
body: BlocBuilder<TourBloc, TourState>(
builder: (context, state) {
final currentState = state;
if (currentState is TourLoaded) {
Delivery delivery = currentState.tour.deliveries.firstWhere((delivery) => delivery.id == widget.deliveryId);
return Column(
children: [
_stepInfo(),
const Divider(),
Expanded(
child:
StepFactory().make(_step, delivery) ??
_stepMissingWarning(),
),
_stepsNavigation(delivery),
],
);
}
if (currentState is TourLoaded) {
Delivery delivery = currentState.tour.deliveries.firstWhere(
(delivery) => delivery.id == widget.deliveryId,
);
return Column(
children: [
_stepInfo(),
const Divider(),
Expanded(
child:
StepFactory().make(_step, delivery) ??
_stepMissingWarning(),
),
_stepsNavigation(delivery),
],
);
}
return const Center(child: CircularProgressIndicator(),);
}),
return const Center(child: CircularProgressIndicator());
},
),
);
}
}

View File

@ -1,3 +1,4 @@
import 'dart:io';
import 'dart:typed_data';
import 'package:flutter_bloc/flutter_bloc.dart';
@ -71,11 +72,7 @@ class _SignatureViewState extends State<SignatureView> {
}
});
// only load notes if they are not already loaded
final noteState = context.read<NoteBloc>().state;
if (noteState is NoteInitial) {
context.read<NoteBloc>().add(LoadNote(delivery: widget.delivery));
}
context.read<NoteBloc>().add(LoadNote(delivery: widget.delivery));
}
@override
@ -122,7 +119,7 @@ class _SignatureViewState extends State<SignatureView> {
builder: (context, state) {
final current = state;
if (current is NoteLoadedBase) {
if (current is NoteLoaded) {
if (current.notes.isEmpty) {
return const SizedBox(
width: double.infinity,