Wrapped Offices and Services dropdown with consumer to watch if they are already available
This commit is contained in:
@@ -175,10 +175,10 @@ class _OfficesScreenState extends ConsumerState<OfficesScreen> {
|
||||
await showDialog<void>(
|
||||
context: context,
|
||||
builder: (dialogContext) {
|
||||
final servicesAsync = ref.watch(servicesOnceProvider);
|
||||
bool saving = false;
|
||||
return StatefulBuilder(
|
||||
builder: (context, setState) {
|
||||
final servicesAsync = ref.watch(servicesOnceProvider);
|
||||
return AlertDialog(
|
||||
shape: AppSurfaces.of(context).dialogShape,
|
||||
title: Text(office == null ? 'Create Office' : 'Edit Office'),
|
||||
@@ -194,35 +194,43 @@ class _OfficesScreenState extends ConsumerState<OfficesScreen> {
|
||||
enabled: !saving,
|
||||
),
|
||||
const SizedBox(height: 12),
|
||||
servicesAsync.when(
|
||||
data: (services) {
|
||||
return DropdownButtonFormField<String?>(
|
||||
initialValue: selectedServiceId,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Service',
|
||||
),
|
||||
items: [
|
||||
const DropdownMenuItem<String?>(
|
||||
value: null,
|
||||
child: Text('None'),
|
||||
),
|
||||
...services.map(
|
||||
(s) => DropdownMenuItem<String?>(
|
||||
value: s.id,
|
||||
child: Text(s.name),
|
||||
Consumer(
|
||||
builder: (ctx, dialogRef, _) {
|
||||
final servicesAsync = dialogRef.watch(
|
||||
servicesOnceProvider,
|
||||
);
|
||||
return servicesAsync.when(
|
||||
data: (services) {
|
||||
return DropdownButtonFormField<String?>(
|
||||
initialValue: selectedServiceId,
|
||||
decoration: const InputDecoration(
|
||||
labelText: 'Service',
|
||||
),
|
||||
),
|
||||
],
|
||||
onChanged: saving
|
||||
? null
|
||||
: (v) => setState(() => selectedServiceId = v),
|
||||
items: [
|
||||
const DropdownMenuItem<String?>(
|
||||
value: null,
|
||||
child: Text('None'),
|
||||
),
|
||||
...services.map(
|
||||
(s) => DropdownMenuItem<String?>(
|
||||
value: s.id,
|
||||
child: Text(s.name),
|
||||
),
|
||||
),
|
||||
],
|
||||
onChanged: saving
|
||||
? null
|
||||
: (v) =>
|
||||
setState(() => selectedServiceId = v),
|
||||
);
|
||||
},
|
||||
loading: () => const Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: LinearProgressIndicator(),
|
||||
),
|
||||
error: (e, _) => Text('Failed to load services: $e'),
|
||||
);
|
||||
},
|
||||
loading: () => const Padding(
|
||||
padding: EdgeInsets.symmetric(vertical: 8.0),
|
||||
child: LinearProgressIndicator(),
|
||||
),
|
||||
error: (e, _) => Text('Failed to load services: $e'),
|
||||
),
|
||||
],
|
||||
),
|
||||
|
||||
Reference in New Issue
Block a user