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,
            ),
          },
        ),
      ),
    );
  }
}
22
likes
150
points
3.13k
downloads

Documentation

API reference

Publisher

verified publishercanonical.com

Weekly Downloads

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

License

BSD-3-Clause (license)

Dependencies

collection, flow_builder, flutter

More

Packages that depend on wizard_router