feat: add navigator userstory for availabity overview

This commit is contained in:
Freek van de Ven 2024-07-04 09:43:27 +02:00 committed by FlutterJoey
parent 2e99ab5cf2
commit d52b18b9bb
2 changed files with 97 additions and 0 deletions

View file

@ -0,0 +1,75 @@
import "package:flutter/material.dart";
import "package:flutter_availability/src/screens/availability_day_overview.dart";
import "package:flutter_availability/src/screens/availability_overview.dart";
import "package:flutter_availability/src/service/local_service.dart";
import "package:flutter_availability/src/userstory/userstory_configuration.dart";
import "package:flutter_availability_data_interface/flutter_availability_data_interface.dart";
///
Widget availabilityNavigatorUserStory(
BuildContext context, {
AvailabiltyUserstoryConfiguration? configuration,
}) =>
_availabiltyScreenRoute(
context,
configuration ??
AvailabiltyUserstoryConfiguration(
service: LocalAvailabilityDataInterface(),
getUserId: (_) => "no-user",
),
);
Widget _availabiltyScreenRoute(
BuildContext context,
AvailabiltyUserstoryConfiguration configuration,
) =>
SafeArea(
child: Scaffold(
body: AvailabilityOverview(
service: configuration.service,
options: configuration.options,
userId: configuration.getUserId(context),
onDayClicked: (date) async => Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => _avaibiltyDayOverviewRoute(
context,
configuration,
date,
null,
),
),
),
onAvailabilityClicked: (availability) async =>
Navigator.of(context).push(
MaterialPageRoute(
builder: (context) => _avaibiltyDayOverviewRoute(
context,
configuration,
availability.startDate,
availability,
),
),
),
),
),
);
Widget _avaibiltyDayOverviewRoute(
BuildContext context,
AvailabiltyUserstoryConfiguration configuration,
DateTime date,
AvailabilityModel? availability,
) =>
SafeArea(
child: Scaffold(
appBar: AppBar(),
body: AvailabilityDayOverview(
service: configuration.service,
options: configuration.options,
userId: configuration.getUserId(context),
date: date,
initialAvailability: availability,
onAvailabilitySaved: () => Navigator.of(context).pop(),
),
),
);

View file

@ -0,0 +1,22 @@
import "package:flutter/material.dart";
import "package:flutter_availability/src/config/availability_options.dart";
import "package:flutter_availability_data_interface/flutter_availability_data_interface.dart";
///
class AvailabiltyUserstoryConfiguration {
///
const AvailabiltyUserstoryConfiguration({
required this.service,
required this.getUserId,
this.options = const AvailabilityOptions(),
});
///
final AvailabilityOptions options;
///
final AvailabilityDataInterface service;
///
final Function(BuildContext context) getUserId;
}