simplified_router 0.0.4 copy "simplified_router: ^0.0.4" to clipboard
simplified_router: ^0.0.4 copied to clipboard

A simpler API for RouterDelegate and Router

example/lib/main.dart

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

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

class ExampleApp extends StatefulWidget {
  @override
  _ExampleAppState createState() => _ExampleAppState();
}

class _ExampleAppState extends State<ExampleApp> {
  late final SimplifiedRouter _routerData;
  final navigatorKey = GlobalKey<NavigatorState>();

  _ExampleAppState() {
    _routerData =
        SimplifiedRouter(builder: _appBuilder, navigatorKey: navigatorKey);
  }

  @override
  Widget build(BuildContext context) {
    return SimplifiedRouterScope(
      router: _routerData,
      child: MaterialApp.router(
        routerDelegate: _routerData.delegate,
        routeInformationParser: _routerData.parser,
      ),
    );
  }

  Widget _appBuilder(BuildContext context, String routePath) {
    var uri = Uri.parse(routePath);
    var segments = uri.pathSegments;
    return Navigator(
      key: navigatorKey,
      onPopPage: (route, result) {
        return route.didPop(result);
      },
      pages: [
        if (segments.length == 0)
          FadeTransitionPage(
            key: ValueKey('/'),
            child: Scaffold(
              body: Center(
                child: Column(
                  children: [
                    Text(
                      '🏡 Home Page',
                      style: Theme.of(context).textTheme.headline4,
                    ),
                    ElevatedButton(
                      onPressed: () {
                        _routerData.navigateTo('/books');
                      },
                      child: Text('Go to /books'),
                    ),
                  ],
                ),
              ),
            ),
          ),
        if (segments.length >= 1 && segments[0] == 'books')
          FadeTransitionPage(
            key: ValueKey('/books'),
            child: Scaffold(
              body: Center(
                child: Column(
                  children: [
                    Text('📕 Books Page',
                        style: Theme.of(context).textTheme.headline4),
                    ElevatedButton(
                      onPressed: () {
                        _routerData.navigateTo('/');
                      },
                      child: Text('Go to /'),
                    ),
                  ],
                ),
              ),
            ),
          ),
      ],
    );
  }
}

class FadeTransitionPage extends Page {
  final Widget child;

  FadeTransitionPage({
    LocalKey? key,
    required this.child,
  }) : super(key: key);

  Route createRoute(BuildContext context) {
    return PageRouteBuilder(
      settings: this,
      pageBuilder: (context, animation, animation2) {
        return FadeTransition(
          opacity: animation,
          child: child,
        );
      },
    );
  }
}
1
likes
110
pub points
0%
popularity

Publisher

unverified uploader

A simpler API for RouterDelegate and Router

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (LICENSE)

Dependencies

flutter

More

Packages that depend on simplified_router