Allow multiple map routes to share the Map widget and transition between each other
This commit is contained in:
51
lib/src/utils/translucent_route.dart
Normal file
51
lib/src/utils/translucent_route.dart
Normal 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;
|
||||
}
|
Reference in New Issue
Block a user