ttrouter 0.0.2 copy "ttrouter: ^0.0.2" to clipboard
ttrouter: ^0.0.2 copied to clipboard

discontinued
outdated

A Router For Flutter

TTRouter 基于 Flutter Navigator 2,通过注解的方式生成 App 页面路由配置,提供了简单易用的接口实现路由跳转。

部分支持特性:

  • null-safe
  • Dart Annotation
  • Without Context
  • Url Parser
  • Interceptor
  • Route Transition
  • Route Document/Manager(Additional Web App)

Getting Started #

1. Setup Dependencies #

dependencies:
  flutter:
    sdk: flutter
  ttrouter: ^1.0.0

dev_dependencies:
  ttrouter_generator: ^1.0.0
  build_runner: ^2.0.0

2. Widget With Dart Annotation #

@TTRoute(
  path: SchemeConst.Home,
  desc: 'home page, show transition demo',
  sample: '${SchemeConst.Scheme}://${SchemeConst.Home}',
)
class HomePage extends StatelessWidget {
  //...
}

3. Run Build Runner #

注解生成。

flutter pub run build_runner build --delete-conflicting-outputs 

等待命令跑完后,可以看到 lib 目录下,多出一个 output 文件夹,有两个文件 output_json.dartoutput_router.dart

4. Setup TTRouter #

App 通过 MaterialApp.router(...) 建立路由,详细代码可参考 example。

class MyApp extends StatelessWidget {
  late final TTRouterConfig routerConfig;
  late final Map<String, TTRouteInfo> routes;
  late final TTRouterState routerState;
  late final TTRouterDelegate routerDelegate;
  late final TTRouteInfoParser routeInformationParser;

  MyApp() {
    routerConfig = TTRouterConfig(
        scheme: SchemeConst.Scheme,
        defaultRouteItemBuilder: () => HomePage.getDefault(),
        transitionType: TransitionType.cupertino,
        navigatorKey: GlobalKey<NavigatorState>(debugLabel: 'TTRouter_Sample'),
        interceptor: _interceptor,
        observersProvider: () => [_NavigatorObserver()]);
    routes = TTRouterCollect.routes;
    routerState = TTRouterState(routerConfig, routes);
    routerDelegate = TTRouterDelegate(routerState, routerConfig);
    routeInformationParser = TTRouteInfoParser(routerConfig);

    // ios universal link
    // https://github.com/flutter/flutter/issues/82550
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
          visualDensity: VisualDensity.adaptivePlatformDensity,
        ),
        routeInformationParser: routeInformationParser,
        routerDelegate: routerDelegate);
  }
}

5. Navigate Route #

跳转有多种方式

  1. 不需要传参
TTRouter.toPath(SchemeConst.Page1);
  1. 带参
TTRouter.to(TTRouter.builder(SchemeConst.Page2)
    .put(SchemeConst.Param_content, 'from page2')
    .build());
  1. 跳转动画
TTRouter.to(TTRouter.builder(SchemeConst.Page1)
    .setTransitionType(TransitionType.leftToRight)
    .build());

License #

0
likes
0
points
2
downloads

Publisher

unverified uploader

Weekly Downloads

A Router For Flutter

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter

More

Packages that depend on ttrouter