nichol_ui_lib_modals_and_button_triggers

A lightweight Flutter UI package for quickly creating modal-triggering buttons and reusable modal layouts.

This package provides:

  • Simple modal launcher utilities
  • Reusable modal toggle buttons
  • A customizable template modal page
  • Clean abstractions for rapidly building dialog-driven interfaces

Designed for fast prototyping and internal tooling while still being flexible enough for production Flutter apps.


Features

  • Easy modal launching with a single helper function

  • Prebuilt modal toggle button widgets

  • Fully customizable modal pages

  • Reusable template modal component

  • Optional:

    • Text input handling
    • Submit callbacks
    • Escape/outside-click dismissal
    • Additional custom widgets
  • Responsive sizing for mobile and desktop layouts


Installation

Add the package to your pubspec.yaml:

dependencies:
  nichol_ui_lib_modals_and_button_triggers:
    path: ../nichol_ui_lib_modals_and_button_triggers

Or from pub.dev once published:

dependencies:
  nichol_ui_lib_modals_and_button_triggers: ^0.0.1

Then run:

flutter pub get

Exports

Import the package:

import 'package:nichol_ui_lib_modals_and_button_triggers/nichol_ui_lib_modals_and_button_triggers.dart';

Included exports:

  • NicholUILibModalToggleButtonWithCustomModalPage
  • NicholUILibModalToggleButtonWithTemplateModalPage
  • nicholUILibModalThrower
  • NicholUILibTemplateModalPage

Quick Start

Simple Modal Trigger

NicholUILibModalToggleButtonWithCustomModalPage(
  buttonText: "Open Modal",
  modalPage: Scaffold(
    body: Center(
      child: Text("Hello from the modal!"),
    ),
  ),
)

Template Modal Example

NicholUILibModalToggleButtonWithTemplateModalPage(
  modalTitle: "Create Account",
  modalSubtitle: "Enter your username below",
  buttonText: "Open Form",
  modalOnSubmit: (value) {
    print(value);
  },
  modalOnButtonPress: () {
    print("Button pressed");
  },
)

Using the Template Modal Directly

nicholUILibModalThrower(
  context,
  NicholUILibTemplateModalPage(
    title: "Settings",
    subtitle: "Adjust your preferences",
    buttonText: "Save",
    onButtonPress: () {
      print("Saved");
    },
    additionalWidgets: [
      const SizedBox(height: 12),
      const Text("Additional custom content here"),
    ],
  ),
);

API Overview

nicholUILibModalThrower

Shows a modal using showGeneralDialog.

nicholUILibModalThrower(context, modalPage);

NicholUILibModalToggleButton

Basic reusable button that launches a modal.

Parameters:

  • modalPage: Widget
  • buttonText: String

NicholUILibTemplateModalPage

Reusable modal page widget with optional:

  • title
  • subtitle
  • text input
  • submit callbacks
  • action button
  • additional custom widgets

Useful for:

  • forms
  • confirmations
  • settings dialogs
  • quick data entry
  • internal tools

Example Use Cases

  • Admin dashboards
  • CRUD forms
  • Confirmation dialogs
  • Login/register flows
  • Internal business tools
  • Developer utilities
  • Quick popup workflows

Notes

  • The template modal automatically closes on submit/button press unless overridden.
  • Tapping outside the modal dismisses it by default.
  • The layout adapts between mobile and desktop widths.

Future Improvements

Potential additions:

  • Animations and transitions
  • Theme customization
  • Better accessibility support
  • Modal stacking
  • Built-in validation helpers
  • Prebuilt confirmation dialog variants

License

Add your preferred license to the LICENSE file before publishing.