返回

Flutter路由终极指南:掌握跳转、动画和传参

前端

引言:

Flutter 是构建精美、高性能移动应用程序的首选框架。其路由系统提供了强大的功能,使开发人员能够创建流畅且响应迅速的用户界面。本文将深入探讨 Flutter 路由的各个方面,包括跳转、动画和传参。

Flutter 提供了两种主要的路由跳转方式:

  • 命名路由: 使用易于记忆的字符串标识路由。虽然简单且易于系统化,但不能传参。
  • 构建路由: 以程序化方式创建路由,提供更大的灵活性,包括传参的能力。

Flutter 支持各种路由动画,为应用程序添加视觉趣味和用户参与度。以下是一些最受欢迎的选项:

  • 淡入淡出: 简单而有效的动画,新页面逐渐淡入视图,而旧页面逐渐淡出。
  • 滑动: 创建流畅的过渡,新页面从屏幕一侧滑动到另一侧。
  • 旋转: 添加动态效果,新页面旋转到视图中,而旧页面旋转退出。

传参对于在路由之间交换数据至关重要。Flutter 提供了以下方法:

  • 构造函数参数: 在构建路由时直接传递参数。
  • 路由设置: 通过 RouteSettings 对象传递参数。
  • 路由参数: 在 MaterialPageRoute 或 CupertinoPageRoute 中指定参数。

让我们考虑一个现实世界的示例,其中用户可以导航到一个产品详情页面并查看其详细信息。

跳转:

Navigator.pushNamed(context, '/product_detail', arguments: product);

动画:

PageRouteBuilder(
  transitionDuration: Duration(milliseconds: 500),
  transitionsBuilder: (context, animation, secondaryAnimation, child) {
    return SlideTransition(
      position: Tween<Offset>(
        begin: Offset(1.0, 0.0),
        end: Offset.zero,
      ).animate(animation),
      child: child,
    );
  },
  pageBuilder: (context, animation, secondaryAnimation) {
    return ProductDetailPage(product: product);
  },
);

传参:

Navigator.push(
  context,
  MaterialPageRoute(
    builder: (context) => ProductDetailPage(product: product),
  ),
);