Flutter-路由

Flutter路由之fluro

Fluro作为 一个Flutter的 企业级的路由框架 ,确实不错,可以解决多变的需求情况 ,是时候搞一波了

引入fluro

fluro: ^1.5.1

基础配置路由

  • routes.dart
    routes.dart文件中配置路由,这里需要注意的事首页一定要用“/”配置
import 'package:flutter/material.dart';
import 'package:fluro/fluro.dart';
import 'route_handlers.dart';
class Routers {
  static String root = Navigator.defaultRouteName;
  static String curved = "/curved";
  static String tween = "/tween";
  static String loading = "/loading";
  static String fade = "/fade";
  static String hero = "/hero";
  static String hero2 = "/hero2";

  static void configRoutes(){
    final router = Router.appRouter;
    router.notFoundHandler = Handler(
      handlerFunc: (BuildContext context,Map<String, List<String>> params){
       print('dddddddd');
      }
    );
    router.define(root,handler:rootHandler);
    router.define(curved,handler: curvedHandler);
    router.define(tween,handler: tweenHandler);
    router.define(loading,handler: loadingHandler);
    router.define(fade,handler: fadeHandler);
    router.define(hero,handler: heroHandler);
    router.define(hero2,handler: hero2Handler);
  }

  // 导航方法
  static Future navigateTo(BuildContext context, String path,
      {bool replace = false,
      bool clearStack = false,
      TransitionType transition = TransitionType.native,
      Duration transitionDuration = const Duration(milliseconds: 250),
      RouteTransitionsBuilder transitionBuilder}){
        return Router.appRouter.navigateTo(
          context, 
          path,
          replace: replace,
          transition: transition,
          transitionDuration: transitionDuration,
          transitionBuilder: transitionBuilder
          );
      }
}
  • route_handlers.dart

import 'dart:convert';

import "package:demoweb/curved_animation.dart";
import 'package:demoweb/animation_page.dart';
import 'package:demoweb/tween_animation.dart';
import 'package:demoweb/loading.dart';
import 'package:demoweb/fade.dart';
import 'package:demoweb/hero_animation.dart';
import 'package:demoweb/hero2_animation.dart';
import 'package:demoweb/animation_page.dart';
import "package:fluro/fluro.dart";
import 'package:flutter/material.dart';

var rootHandler = Handler(handlerFunc: (BuildContext context,Map<String, List<String>> params){
  return FlutterAnimationPage(title: "动画",);
});

var curvedHandler = Handler(handlerFunc: (BuildContext context,Map<String, List<String>> params){
  var dd = params["name"].first;
  
  // print(Uri.splitQueryString(dd));
  return CurvedAnimationPage(title: dd);
});

var tweenHandler = Handler(handlerFunc: (BuildContext context,Map<String, List<String>> params){
  return TweenAnimationWidget(title: "动画",);
});

var loadingHandler = Handler(handlerFunc: (BuildContext context,Map<String, List<String>> params){
  return LoadingPage(title: "动画",);
});

var fadeHandler = Handler(handlerFunc: (BuildContext context,Map<String, List<String>> params){
  return Fade(title: "动画",);
});

var heroHandler = Handler(handlerFunc: (BuildContext context,Map<String, List<String>> params){
  return HeroAnimationPage(title: "动画",);
});

var hero2Handler = Handler(handlerFunc: (BuildContext context,Map<String, List<String>> params){
  return Hero2AnimationPage();
});
  • main.dart
void main(){
// 注册 fluro routes
  Routers.configRoutes();
  runApp(MyApp());
}

  • MyApp.dart
class MyApp extends StatelessWidget {
  // This widget is the root of your application.
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      /// 生成路由
      onGenerateRoute: Router.appRouter.generator,
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
    );
  }
}

使用场景

    return InkWell(
      child: Container(
        height: 50,
        // color: Colors.red,
        alignment: Alignment.centerLeft,
        padding: EdgeInsets.all(10),
        child: Text(strList[index]),
      ),
      onTap: () {
        Routers.navigateTo(context, "${Routers.curved}?name=${strList[index]}");
      },
    );

非常开心本人开通了微信公众号请关注一下:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值