to static method

Future to(
  1. BuildContext context,
  2. Widget destination, {
  3. WeeNavigateStyle style = WeeNavigateStyle.auto,
  4. bool maintainState = true,
  5. bool fullscreenDialog = false,
  6. bool removeUntil = false,
  7. bool replace = false,
  8. RouteSettings? settings,
})

Implementation

static Future<dynamic> to(
  BuildContext context,
  Widget destination, {
  WeeNavigateStyle style = WeeNavigateStyle.auto,
  bool maintainState = true,
  bool fullscreenDialog = false,
  bool removeUntil = false,
  bool replace = false,
  RouteSettings? settings,
}) {
  late Route route;

  if (style == WeeNavigateStyle.auto) {
    if (kIsWeb) {
      route = PageRouteBuilder(
        transitionDuration: Duration(milliseconds: 200),
        reverseTransitionDuration: Duration(milliseconds: 200),
        settings: settings,
        pageBuilder: (context, _, __) {
          return destination;
        },
        transitionsBuilder: (BuildContext context, Animation<double> animation, _, Widget child) {
          return FadeTransition(opacity: animation, child: child);
        },
      );
    } else if (Platform.isIOS) {
      route = CupertinoPageRoute(
        builder: (_) => destination,
        maintainState: maintainState,
        settings: settings,
        fullscreenDialog: fullscreenDialog,
      );
    } else {
      route = MaterialPageRoute(
        builder: (_) => destination,
        maintainState: maintainState,
        settings: settings,
        fullscreenDialog: fullscreenDialog,
      );
    }
  }

  if (style == WeeNavigateStyle.material) {
    route = MaterialPageRoute(
      builder: (_) => destination,
      maintainState: maintainState,
      settings: settings,
      fullscreenDialog: fullscreenDialog,
    );
  }

  if (style == WeeNavigateStyle.cupertino) {
    route = CupertinoPageRoute(
      builder: (_) => destination,
      maintainState: maintainState,
      settings: settings,
      fullscreenDialog: fullscreenDialog,
    );
  }

  if (removeUntil && replace) {
    throw "removeUntil and replace can\'t be same value";
  }

  if (removeUntil) {
    return Navigator.pushAndRemoveUntil(context, route, (Route<dynamic> r) => false);
  } else if (replace) {
    return Navigator.pushReplacement(context, route);
  } else {
    return Navigator.push(context, route);
  }
}