Skip to content

Repository files navigation

inn_router

pub packageGitHub starsGitHub forksGitHub issues

使用方法:

  • 添加依赖
dependencies:
inn_router: any
  • 安装
flutter pub get
  • 导入和配置
import'package:inn_router/inn_router.dart';
Widgetbuild(BuildContext context) {
returnMaterialApp(
title:'',
navigatorKey:IRouter.navKey, //添加
);
}
  • 配置路由表

在lib中创建router文件夹,如果项目比较大,可以按模块来创建,一个模块一个文件。

路径命名推荐:/模块名/功能名

import'./page1.dart';
import'package:inn_router/inn_router.dart';
classRoutes {
staticString path ="/router";
staticIRouterClassget page1 =>IRouterClass(widget:Page1(), path:"$path/page1");
staticIRouterClasspage2(String parameter) =>IRouterClass(widget:Page1(parameter:parameter), path:"$path/page2");
}
  • 使用
IRouter.push(Routes.page1);
IRouter.push(Routes.page2("我是参数"));

功能

路由属性 IRouterClass

属性类型默认值描述
pathString必须跳转路径
widgetWidget必须页面
titleString可选标题
rolesList可选角色权限
transitionRoute Function(IRouterClass)可选单个路由过度动画
notAllowFunList可选权限不足回调,返回flase不跳转,true跳转
iconint可选图标
colorint可选颜色

设置权限表

IRouter.roles = ["admin"];

设置全局路由默认过度动画

IRouter.transition =IRouterTransition.cupertino;

自定义路由过渡动画

classSlideRightextendsPageRouteBuilder {
finalIRouterClass route;
SlideRight({this.route})
:super(
transitionDuration:Duration(milliseconds:300),
pageBuilder: (
BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
) =>
route.widget,
transitionsBuilder: (
BuildContext context,
Animation<double> animation,
Animation<double> secondaryAnimation,
Widget child,
) =>SlideTransition(
position:Tween<Offset>(begin:Offset(-1, 0), end:Offset.zero).animate(animation),
child: child,
),
);
}
// 全局使用IRouter.transition = (IRouterClass route) =>SlideRight(route: route);
// 单个路由使用IRouterClass(widget:Page1(), path:"$path/material", title:"material", transition: (IRouterClass route) =>SlideRight(route: route));

push 跳转新页面

IRouter.push(Routes.page1);

pop 返回

IRouter.pop();

popUntil 返回到指定路由

IRouter.popUntil(Routes.page1);

removeRoute 销毁当前页面并跳转新页面

IRouter.removeRoute(Routes.page1);

pushReplacementNamed 把当前页面替换成新页面

IRouter.pushReplacementNamed(Routes.page1);

popAndPushNamed 返回并跳转新页面

IRouter.popAndPushNamed(Routes.page1);

pushNamedAndRemoveUntil 删除之前页面并跳转新页面

IRouter.pushNamedAndRemoveUntil(Routes.page1, Routes.page2);

About

flutter路由

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages