mirror of
https://github.com/Iconica-Development/flutter_availability.git
synced 2025-05-19 13:13:44 +02:00
feat: add navigator userstory for availabity overview
This commit is contained in:
parent
2e99ab5cf2
commit
d52b18b9bb
2 changed files with 97 additions and 0 deletions
|
@ -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(),
|
||||||
|
),
|
||||||
|
),
|
||||||
|
);
|
|
@ -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;
|
||||||
|
}
|
Loading…
Reference in a new issue