Javascript is required
Fluro路由管理

Fluro

Flutter路由管理。

Fluro作为一款优秀的Flutter企业级路由框架,Fluro的使用比官方提供的路由框架要复杂一些,但是却非常适合中大型项目。因为它具有层次分明、条理化、方便扩展和便于整体管理路由等优点。

fluro: ^1.7.8

修正 flutter fluro与系统Router冲突

在新版本使用FluroRouter 代替Router对象

或者

import 'package:flutter/material.dart' hide Router;

使用

dependencies:
 fluro: ^1.7.8

建立路由映射文件

import 'package:fluro/fluro.dart';

application.dart

Router进行静态化,这样在任何一个页面都可以直接调用它。

import 'package:fluro/fluro.dart';
 
class FluroApplication{
  static FluroRouter router;
}

routes/fluro_routes.dart

新建一个路由映射文件,用来对每个路由进行管理。

import 'package:flutter/cupertino.dart';
import 'package:fluro/fluro.dart';


class Routes {
  static String splash = '/splash';
  static String index = '/index';
  static void configureRoutes(FluroRouter router){
    // 路由未找到404
    router.notFoundHandler = Handler(
      handlerFunc: (BuildContext context, Map<String, List<String>> params) {
        return NotFoundPage();// 响应404Page
      }
    );
    // 定义
    router.define(splash, handler: splashHandler);
    //...
    //...
  }
}

routes/route_handlers.dart

完成基本的路由配置

import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';

var splashHandler = Handler(
    handlerFunc: (BuildContext context, Map<String, List<String>> params) {
  return SplashPage();
});

var rankHandler = Handler(
    handlerFunc: (BuildContext context, Map<String, List<String>> params) {
  return HotRankPage();
});

main.dart

在main.dart文件中引入路由配置文件和静态化文件了

import 'package:fluro/fluro.dart';


void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
 
  MyApp() {
  //初始化Fluro
    final router = new FluroRouter();
    FluroRoutes.configureRoutes(router);
    FluroApplication.router = router;
  }
 
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
        home:Scaffold(
          appBar: AppBar(
              title: Text('Flutter Demo')
          ),
          body: HomePage(),
        )
    }
}

如何调用/

FluroApplication.router.navigateTo(context, '/index');