Flutter路由管理插件clean_framework_router的使用
Flutter路由管理插件clean_framework_router的使用
Clean Framework Router
Flutter实现的Clean架构,灵感来源于Uncle Bob的指导原则。
安装插件
首先,在你的pubspec.yaml
文件中添加依赖:
dependencies:
clean_framework_router: ^1.0.0
然后运行flutter pub get
以安装该库。
基本使用
创建路由配置
首先,你需要创建一个路由配置类来定义你的路由。例如:
import 'package:clean_framework_router/clean_framework_router.dart';
class AppRouter extends Router {
@override
void configureRoutes() {
addRoute(
routeName: 'home',
path: '/',
viewBuilder: (_) => HomeScreen(),
);
addRoute(
routeName: 'details',
path: '/details/:id',
viewBuilder: (Map<String, dynamic> params) => DetailsScreen(id: params['id']),
);
}
}
初始化路由器
在你的应用入口点初始化路由器:
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
final router = AppRouter();
@override
Widget build(BuildContext context) {
return MaterialApp.router(
routerDelegate: router.delegate(),
routeInformationParser: router.parser(),
);
}
}
导航到其他页面
你可以在任何地方通过路由器导航到其他页面:
// 在某个Widget中
void navigateToDetails(String id) {
router.go('details', {'id': id});
}
获取当前路径参数
在目标页面中,你可以通过RouteData
获取当前路径参数:
class DetailsScreen extends StatefulWidget {
final String id;
DetailsScreen({required this.id});
@override
_DetailsScreenState createState() => _DetailsScreenState();
}
class _DetailsScreenState extends State<DetailsScreen> {
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('详情'),
),
body: Center(
child: Text('ID: ${widget.id}'),
),
);
}
}
路由管理
替换当前路由
如果你想替换当前路由而不增加历史记录,可以使用replace
方法:
router.replace('details', {'id': 'newId'});
返回上一级
你可以通过pop
方法返回上一级:
router.pop();
监听路由变化
你还可以监听路由的变化:
router.addListener(() {
print('Route changed to ${router.currentRoute}');
});
更多关于Flutter路由管理插件clean_framework_router的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
1 回复