wizard_router 0.10.2 copy "wizard_router: ^0.10.2" to clipboard
wizard_router: ^0.10.2 copied to clipboard

Routing for linear wizards. No dependencies between pages. Pages merely request the next page. Routes and conditions defined in a central place.

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:provider/provider.dart';
import 'package:wizard_router/wizard_router.dart';

import 'actions.dart';
import 'models.dart';
import 'pages.dart';
import 'routes.dart';
import 'services.dart';

void main() {
  final service = NetworkService();
  runApp(
    ChangeNotifierProvider(
      create: (_) => NetworkModel(service),
      child: WizardApp(),
    ),
  );
}

class WizardApp extends StatelessWidget {
  WizardApp({super.key});

  /// Optional to show use of Actions + controller in example
  /// Off by default to not affect tests.
  static bool useActions = false;

  final WizardController controller = WizardController();

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Actions(
        actions: wizardActions(controller: controller),
        child: Wizard(
          controller: controller,
          initialRoute: Routes.initial,
          routes: <String, WizardRoute>{
            Routes.welcome: const WizardRoute(
              builder: WelcomePage.create,
            ),
            Routes.chooser: WizardRoute(
              builder: ChooserPage.create,
              onNext: (settings) {
                switch (settings.arguments as Choice?) {
                  case Choice.preview:
                    return Routes.preview;
                  case Choice.install:
                    if (!context.read<NetworkModel>().isConnected) {
                      return Routes.connect;
                    }
                    return Routes.install;
                  default:
                    throw ArgumentError(settings.arguments);
                }
              },
            ),
            Routes.preview: const WizardRoute(
              builder: PreviewPage.create,
            ),
            Routes.connect: WizardRoute(
              builder: ConnectPage.create,
              onBack: (_) => Routes.chooser,
            ),
            Routes.install: WizardRoute(
              builder: InstallPage.create,
              onBack: (_) => Routes.chooser,
            ),
          },
        ),
      ),
    );
  }
}
21
likes
150
pub points
76%
popularity

Publisher

verified publishercanonical.com

Routing for linear wizards. No dependencies between pages. Pages merely request the next page. Routes and conditions defined in a central place.

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

collection, flow_builder, flutter

More

Packages that depend on wizard_router