12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- import 'package:flutter/material.dart';
- import 'package:get/get.dart';
- import 'package:vitalapp/routes/routes.dart';
- import 'package:vitalapp/routes/transition.dart';
- class FromPageNavigator extends StatelessWidget {
- const FromPageNavigator({
- super.key,
- required this.nestedKey,
- required this.initialRoute,
- });
- final int nestedKey;
- final String initialRoute;
- @override
- Widget build(BuildContext context) {
- return Navigator(
- key: Get.nestedKey(
- nestedKey,
- ),
- initialRoute: initialRoute,
- onGenerateRoute: onGenerateRoute,
- );
- }
- /// 路由生成器
- Route? onGenerateRoute(RouteSettings settings) {
- String? name = settings.name;
- if (name == null) return null;
- name = name.split("?")[0];
- if (name == "/") return null;
- final route = Routes.routes.firstWhereOrNull((e) => e.name == name);
- if (route != null) {
- return GetPageRoute(
- page: route.page,
- binding: route.binding,
- transition: Transition.rightToLeft,
- customTransition: FTransitions.sharedAxisHorizontal,
- transitionDuration: const Duration(milliseconds: 800),
- );
- } else {
- return GetPageRoute(
- page: () => Container(
- color: Colors.white,
- child: Center(
- child: Text(
- "Route: $name",
- style: const TextStyle(fontSize: 32),
- ),
- ),
- ),
- binding: BindingsBuilder(() {}),
- transition: Transition.rightToLeft,
- customTransition: FTransitions.sharedAxisHorizontal,
- transitionDuration: const Duration(milliseconds: 800),
- );
- }
- }
- }
|