added about dialog

This commit is contained in:
Fabian Freund
2024-05-17 14:06:59 +02:00
parent 416fee9d77
commit 2d2b1a72b3
12 changed files with 178 additions and 1 deletions
+40
View File
@@ -0,0 +1,40 @@
import 'package:flutter/material.dart';
/// A dialog page with Material entrance and exit animations, modal barrier color,
/// and modal barrier behavior (dialog is dismissible with a tap on the barrier).
class DialogPage<T> extends Page<T> {
final Offset? anchorPoint;
final Color? barrierColor;
final bool barrierDismissible;
final String? barrierLabel;
final bool useSafeArea;
final CapturedThemes? themes;
final WidgetBuilder builder;
const DialogPage({
required this.builder,
this.anchorPoint,
this.barrierColor = Colors.black54,
this.barrierDismissible = true,
this.barrierLabel,
this.useSafeArea = true,
this.themes,
super.key,
super.name,
super.arguments,
super.restorationId,
});
@override
Route<T> createRoute(BuildContext context) => DialogRoute<T>(
context: context,
settings: this,
builder: builder,
anchorPoint: anchorPoint,
barrierColor: barrierColor,
barrierDismissible: barrierDismissible,
barrierLabel: barrierLabel,
useSafeArea: useSafeArea,
themes: themes,
);
}
+14
View File
@@ -1,3 +1,5 @@
import 'package:bang_navigator/core/routing/dialog_page.dart';
import 'package:bang_navigator/features/about/presentation/screens/about.dart';
import 'package:bang_navigator/features/search_browser/presentation/screens/browser.dart';
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:bang_navigator/features/settings/presentation/screens/settings.dart';
@@ -9,6 +11,11 @@ part 'routes.g.dart';
@TypedGoRoute<KagiRoute>(
path: '/',
routes: [
TypedGoRoute<AboutRoute>(
path: 'about',
),
],
)
class KagiRoute extends GoRouteData {
KagiRoute();
@@ -41,3 +48,10 @@ class SettingsRoute extends GoRouteData {
return const SettingsScreen();
}
}
class AboutRoute extends GoRouteData {
@override
Page<void> buildPage(BuildContext context, GoRouterState state) {
return DialogPage(builder: (_) => const AboutDialogScreen());
}
}
+23
View File
@@ -14,6 +14,12 @@ List<RouteBase> get $appRoutes => [
RouteBase get $kagiRoute => GoRouteData.$route(
path: '/',
factory: $KagiRouteExtension._fromState,
routes: [
GoRouteData.$route(
path: 'about',
factory: $AboutRouteExtension._fromState,
),
],
);
extension $KagiRouteExtension on KagiRoute {
@@ -33,6 +39,23 @@ extension $KagiRouteExtension on KagiRoute {
void replace(BuildContext context) => context.replace(location);
}
extension $AboutRouteExtension on AboutRoute {
static AboutRoute _fromState(GoRouterState state) => AboutRoute();
String get location => GoRouteData.$location(
'/about',
);
void go(BuildContext context) => context.go(location);
Future<T?> push<T>(BuildContext context) => context.push<T>(location);
void pushReplacement(BuildContext context) =>
context.pushReplacement(location);
void replace(BuildContext context) => context.replace(location);
}
RouteBase get $settingsRoute => GoRouteData.$route(
path: '/settings',
factory: $SettingsRouteExtension._fromState,