beamer 1.3.0 copy "beamer: ^1.3.0" to clipboard
beamer: ^1.3.0 copied to clipboard

outdated

A routing package that lets you navigate through guarded page stacks and URLs using the Router and Navigator's Pages API, aka "Navigator 2.0".

example/lib/main.dart

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

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

final guardCheck = ValueNotifier<bool>(true);

class MyApp extends StatefulWidget {
  @override
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  @override
  Widget build(BuildContext context) {
    return MaterialApp.router(
      routeInformationParser: BeamerParser(),
      routerDelegate: BeamerDelegate(
        initialPath: '/foo',
        locationBuilder: RoutesLocationBuilder(
          routes: <Pattern, dynamic Function(BuildContext, BeamState, Object?)>{
            '/foo': (_, __, ___) => const FooScreen(),
            '/bar': (_, __, ___) {
              return const BarScreen();
            },
          },
        ),
        guards: <BeamGuard>[
          BeamGuard(
            pathPatterns: <Pattern>['/bar'],
            check: (_, __) => guardCheck.value,
            beamToNamed: (_, __) => '/foo',
          ),
        ],
        updateListenable: guardCheck,
      ),
    );
  }
}

class FooScreen extends StatelessWidget {
  const FooScreen();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Foo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Container(
              height: 200,
              child: ElevatedButton(
                child: Text('Go to Bar'),
                onPressed: () => Beamer.of(context).beamToNamed('/bar'),
              ),
            ),
          ],
        ),
      ),
    );
  }
}

class BarScreen extends StatelessWidget {
  const BarScreen();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Bar'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Container(
              height: 200,
              child: ElevatedButton(
                child: Text('update'),
                onPressed: () => guardCheck.value = false,
              ),
            ),
          ],
        ),
      ),
    );
  }
}
1233
likes
0
pub points
96%
popularity

Publisher

verified publisherbeamer.dev

A routing package that lets you navigate through guarded page stacks and URLs using the Router and Navigator's Pages API, aka "Navigator 2.0".

Repository (GitHub)
View/report issues

License

unknown (LICENSE)

Dependencies

flutter, flutter_web_plugins

More

Packages that depend on beamer