A Flutter package that allows for neater declaration, abstraction and use of customisable dialogs

flutter_dialog_manager

A Flutter package that allows for neater declaration, abstraction and use of customisable dialogs.

Install

In the pubspec.yaml of your flutter project, add the following dependency:

dependencies:
  flutter_dialog_manager: ^1.0.0+2

Import the package in your project:

import 'package:flutter_dialog_manager/flutter_dialog_manager.dart';

Getting started

Wrap your MaterialApp widget with a DialogManager
and pass the required GlobalKey<NavigatorState> navigatorKey parameter.
Also pass the navigator key to MaterialApp.

@override
  Widget build(BuildContext context) {
    return DialogManager(
      navigatorKey: _navigatorKey,
      child: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        navigatorKey: _navigatorKey,
        home: const MyHomePage(title: 'Flutter Demo Home Page'),
      ),
    )

Usage

Declare dialog UI implementations and their associated route names with onGenerateDialogs or dialogRoutes

  onGenerateDialogs: (settings) {
        switch (settings.name) {
          case "/counter":
            if (settings.arguments != null) {
              return CounterDialog(
                counter: settings.arguments as int,
              );
            }
            break;
      }}

 dialogRoutes: {
        "/": (context) => DefaultDialog(),
        "/home": (context) => HomeDialog(),
      }

Show dialog in your UI

 DialogManager.of(context).showDialog(
      routeName: "/counter",
      arguments: _counter,
    );

Contributions

Feel free to contribute to this project.

If you find a bug or want a feature, but don’t know how to fix/implement it, please fill an issue.
If you fixed a bug or implemented a feature, please send a pull request.

GitHub

View Github