block_dialog 3.0.1 copy "block_dialog: ^3.0.1" to clipboard
block_dialog: ^3.0.1 copied to clipboard

Block-based, animated dialogs for Flutter with composable layout, typed results, and fine-grained dismissal control.

block_dialog #

Block-based, animated dialogs for Flutter with composable layout, typed results, full interaction among blocks, and fine-grained dismissal control.

Features #

  • Compose dialogs from rows of blocks (text, buttons, inputs, radio group, checkbox, spacer, custom).
  • Typed results with BlocksResult<T> and per-block blockTag keys.
  • Multiple built-in block animations with easy customization.
  • Animated dimmed background synchronized with dialog animation.
  • Per-block overrides for position and animation.

Install #

Add to pubspec.yaml:

dependencies:
  block_dialog: ^2.0.2

Preview #

Slide Scale Cinematic

Quick Start #

BlockDialog.show(
  context,
  rows: [
    BlockRow(blocks: [
      BlockText(text: 'Create account?', isDialogTitle: true),
    ]),
    BlockRow(blocks: [
      BlockTextField(blockTag: 'email', hintText: 'Email'),
    ]),
    BlockRow(blocks: [
      BlockTextField(blockTag: 'password', hintText: 'Password'),
    ]),
    BlockRow(blocks: [
      BlockButton(
        label: 'Continue',
        isPositive: true,
        onPressed: (results) {
          final email = result.get<String>('email');
        },
      ),
      BlockButton(
        label: 'Cancel',
      ),
    ]),
  ],
);

Blocks #

  • BlockText — simple text/title block.
  • BlockTextField — text input.
  • BlockCheckbox — boolean input.
  • BlockRadioGroup<T> — single-choice selection.
  • BlockButton — action button (optionally closes the dialog).
  • BlockSpacer — vertical gap.
  • BlockCustom — any widget, optionally with its own BlockCustomController.

Blocks interaction through the DialogController #

  • Block
    • shakeBlock
  • BlockText
    • setBlockText
  • BlockButton
    • setBlockButtonLabel
    • setBlockButtonEnabled
    • performButtonTap
  • BlockCheckbox
    • setBlockCheckboxValue
    • toggleBlockCheckboxValue
    • setBlockCheckboxEnabled
  • BlockRadioGroup<T>
    • setBlockRadioGroupValue
    • setBlockRadioGroupOptionEnabled
  • BlockTextField
    • setBlockTextFieldText
    • appendBlockTextFieldText
    • setBlockTextFieldErrorText
    • setBlockTextFieldEnabled
    • setBlockTextFieldReadOnly
    • clearBlockTextField
    • focusBlockTextField
    • unfocusBlockTextField
  • BlockCustom
    • getBlockCustomController

Styling & Config #

const DialogConfig(
  backgroundColor: Color(0xFFF8FAFC),
  backgroundColorPressed: Color(0xFFE2E8F0),
  strokeColor: Color(0xFFCBD5E1),
  strokeWidth: 1,
  borderRadius: 20,
  blocksSpacing: 6,
  barrierColor: Color(0xB3000000),
  animationDuration: Duration(milliseconds: 420),
  blockAnimation: BlockAnimation.cinematic(),
  textStyle: TextStyle(fontSize: 16, color: Colors.black87),
)

Animations #

  • BlockAnimation.slide()
  • BlockAnimation.scale
  • BlockAnimation.elastic
  • BlockAnimation.depth
  • BlockAnimation.cinematic()
  • BlockAnimation.expandFromCorner()

Results & Dismissal #

  • Each block that produces a value must provide a unique blockTag.
  • BlocksResult.dismissReason indicates how the dialog closed.
  • Tapping outside can be enabled/disabled with barrierDismissible.

Custom Blocks #

BlockCustom(
  blockTag: 'rating',
  blockController: BlockCustomController(),
  builder: (context, dialogController, controller, configs) {
    return const Center(child: Text('Custom'));
  },
)

Example Project #

See the example/ folder for a full working demo.


Additional Information #

Contributing #

  1. Fork the repository
  2. Create a feature branch
  3. Submit a pull request
  4. Include tests for new features

Issues #

  • File issues on GitHub
  • Include Flutter/Dart version and error details
  • Expect response within 1–3 business days

License #

MIT License. See LICENSE file.

1
likes
160
points
188
downloads

Documentation

API reference

Publisher

verified publishertripletroop.com

Weekly Downloads

Block-based, animated dialogs for Flutter with composable layout, typed results, and fine-grained dismissal control.

Repository (GitHub)
View/report issues

Topics

#dialog #form #material #ui #widget

License

MIT (license)

Dependencies

flutter

More

Packages that depend on block_dialog