Allow multiple map routes to share the Map widget and transition between each other

This commit is contained in:
2022-09-12 15:24:14 -04:00
parent c6090a307a
commit 10826e79b2
13 changed files with 715 additions and 265 deletions

View File

@@ -0,0 +1,51 @@
import 'package:flutter/material.dart';
class TranslucentRoute<T> extends TransitionRoute<T> {
final bool _opaque;
final Duration _transitionDuration;
final Widget Function(
BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child
) _transitionBuilder;
final Widget Function(BuildContext) _pageBuilder;
TranslucentRoute({
opaque = true,
transitionDuration = const Duration(milliseconds: 300),
required Widget Function(
BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child
) transitionBuilder,
required Widget Function(BuildContext) pageBuilder,
RouteSettings? settings,
}):
_opaque = opaque,
_transitionDuration = transitionDuration,
_transitionBuilder = transitionBuilder,
_pageBuilder = pageBuilder,
super(settings: settings);
@override
Iterable<OverlayEntry> createOverlayEntries() {
return <OverlayEntry>[
OverlayEntry(
builder: (context) => _transitionBuilder(
context,
animation!,
secondaryAnimation!,
_pageBuilder(context),
),
),
];
}
@override
bool get opaque => _opaque;
@override
Duration get transitionDuration => _transitionDuration;
}