首页 > 其他分享 >Flutter路由插件fluro详解

Flutter路由插件fluro详解

时间:2023-09-23 18:33:06浏览次数:38  
标签:插件 parameters Flutter context fluro router id 路由

fluro的使用

fluro的介绍

fluro是一个流行的Flutter插件,用于实现高级路由管理。它提供了灵活的路由配置和导航功能,支持命名路由、参数传递、路由拦截、动画效果等,使得在Flutter应用程序中管理页面导航变得更加简单和可扩展。下面是对fluro插件的详细介绍:

安装和导入:

您可以通过在pubspec.yaml文件中添加fluro依赖项来安装fluro插件。然后,在需要使用fluro的文件中,通过import 'package:fluro/fluro.dart';导入库。

路由配置:

使用fluro,您可以通过创建FluroRouter实例来配置路由。通过调用define方法,您可以为每个页面指定一个唯一的路由名称,并关联一个处理程序(Handler)。

final router = FluroRouter();
router.define('/home', handler: Handler(handlerFunc: (context, parameters) => HomeScreen()));
router.define('/profile/:id', handler: Handler(handlerFunc: (context, parameters) {
  final id = parameters['id']?.first;
  return ProfileScreen(userId: id);
}));

上面的示例代码演示了如何使用define方法为HomeScreenProfileScreen页面配置路由。在第二个路由中,:id表示一个参数,可以在路由中传递并在处理程序中使用。

导航到路由: 使用fluro,您可以使用router.navigateTo方法导航到已配置的命名路由。您可以在导航时传递参数,并指定导航的转场动画。

router.navigateTo(context, '/home');
router.navigateTo(context, '/profile/123', transition: TransitionType.fadeIn);

在上面的示例中,我们分别导航到/home/profile/123的命名路由。TransitionType.fadeIn指定了导航时的转场动画效果。

参数传递: fluro支持在路由中传递参数,参数可以在处理程序中获取并使用。您可以使用RouteParams类来访问路由参数。

router.define('/profile/:id', handler: Handler(handlerFunc: (context, parameters) {
  final id = parameters['id']?.first;
  return ProfileScreen(userId: id);
}));

在上面的示例中,:id表示一个参数,可以在路由中传递。在处理程序中,我们使用parameters参数来获取路由参数,并将其传递给ProfileScreen

路由拦截: fluro允许您添加路由拦截器,以在导航到特定路由之前执行一些操作。拦截器可以用于身份验证、权限检查等。

final authMiddleware = FluroMiddleware();
authMiddleware.handler = (context, parameters) async {
  if (!AuthService.isLoggedIn) {
    router.navigateTo(context, '/login', replace: true);
  }
};

router.define('/profile/:id', handler: Handler(handlerFunc: (context, parameters) {
  final id = parameters['id']?.first;
  return ProfileScreen(userId: id);
}), middleware: [authMiddleware]);

在上面的示例中,我们创建了一个路由拦截器,并将其应用于/profile/:id的路由。如果用户未登录,则拦截器会导航到登录页面。

动画效果: fluro支持在路由导航时应用自定义的转场动画效果。您可以使用TransitionType枚举提供的各种转场动画效果,如TransitionType.fadeIn、TransitionType.cupertino等。

router.navigateTo(context, '/profile/123', transition: TransitionType.fadeIn);

在上面的示例中,我们将导航到`/profile/123路由,并指定了转场动画效果为淡入(fadeIn)。 通过使用fluro插件,您可以更轻松地配置和管理Flutter应用程序中的路由。它提供了灵活的路由配置方式、参数传递、路由拦截和动画效果等功能,使得应用程序的导航管理变得更加简单和可扩展。无论是构建中小型应用程序还是大型应用程序,fluro都是一个强大而受欢迎的选择。

标签:插件,parameters,Flutter,context,fluro,router,id,路由
From: https://blog.51cto.com/u_15777557/7580193

相关文章

  • Flutter/Dart第01天:Dart安装和初体验
    本博客原地址:https://ntopic.cn/p/2023092301/Dart的安装方式有几种:一种是下载源代码,然后编译安装;一种是通过包管理工具进行安装。Dart官方网站分表列出了针对Windows、Linux和MacOS的安装方式:https://dart.dev/get-dart我下面在个人MacOS上介绍brew包管理工具安装方法和过程:......
  • blender部分实用插件
    内置插件(直接在偏好设置里下载就行):BoolTool布尔插件AutoBoolean的是直接布尔;BrushBoolean的是可调整修改。LoopTool快捷编辑工具安装后编辑模式直接右击就可以使用部分功能1.Bridge桥接(左下角可设置段数和扭曲度)2.平化3.圆环ExtraObject(添加曲线)......
  • vscode highlight-words 插件
    转载于:https://www.niftyadmin.cn/n/4938901.html?action=onClick设置步骤:按按Ctrl+Shift+P,输入HighlightToggleCurrent,点击右边齿轮图标,进入快捷键页面,点击编辑按钮,按F8,然后按Enter键完成设置其他不变,调整box  "highlightwords.box":{    "light":true, ......
  • docker-compose 部署 jenkins Blue Ocean插件
    DockerfileFROMjenkins/jenkins:2.414.2-lts-jdk17USERrootRUNapt-getupdate&&apt-getinstall-ylsb-releaseRUNcurl-fsSLo/usr/share/keyrings/docker-archive-keyring.asc\https://download.docker.com/linux/debian/gpgRUNecho"deb[a......
  • Jenkins问题记录:Windows Server Jenkins修改配置后重启系统,Jenkins被初始化,启动后需要
    现象:WindowsServerJenkins修改配置后重启系统,Jenkins被初始化,启动后需要重新安装插件,配置管理员密码,项目列表丢失原因:修改"C:\ProgramFiles\Jenkins\jenkins.xml"配置,可能是配置异常,系统重启后,Jenkins自动重置了解决:重新安装Jenkins,配置文件就重新初始化,再启动不需要再安......
  • Flutter TextField 限制只允许输入数字、小数、字母
    FlutterTextField限制只允许输入数字、小数、字母-flutter教程-IT逐梦人http://www.fc-home.cn/article/57.html【Flutter】五、Flutter之表单输入框——TextField_fluttertextfield验证_MAXLZ的博客-CSDN博客https://blog.csdn.net/qq_33635385/article/details/10004......
  • 在不用插件和断网的情况下怎么实现编译python?
    要在不使用插件和断网的情况下编译Python代码,您通常不需要进行编译,因为Python是一种解释型语言,它将代码逐行执行而不需要显式编译过程。然而,如果您希望将Python代码打包成一个独立的可执行文件以便于分发,您可以使用一些第三方工具,如PyInstaller、cx_Freeze或Py2exe,但这些工具在没有......
  • Vue执行和开发流程、登录小案例、混入、插件、elementui
    一、Vue执行流程1、vue的执行流程#1为什么浏览器中访问某个地址,会显示某个页面组件 -根组件:App.vue必须是<template><divid="app"><router-view></router-view></div> </template> -1配置路由 router--......
  • [Unity] 基于 ParadoxNotion FlowCanvas 插件实现技能
    游戏中的技能总是有各种各样的逻辑比如持续性范围技能,魔兽争霸的暴雪风链式技能,博德之门的闪电链持续技能,博德之门的昼明术等等,这些技能都有各自特殊的逻辑,如何让这些技能有一个通用的配置方法像是RPGBuilder会有一个技能编辑器,里面提供了尽可能多的选择来配置技能编辑器......
  • flutter 复制文本功能文件
    //Copyright2014TheFlutterAuthors.Allrightsreserved.//UseofthissourcecodeisgovernedbyaBSD-stylelicensethatcanbe//foundintheLICENSEfile.import'package:flutter/foundation.dart';import'system_channels.dart�......