flutter_androssy_dialogs 1.0.13+1 copy "flutter_androssy_dialogs: ^1.0.13+1" to clipboard
flutter_androssy_dialogs: ^1.0.13+1 copied to clipboard

Customized alert dialog, editable dialog, loading dialog, message dialog, and some snacks

example/lib/main.dart

import 'package:flutter/material.dart';
import 'package:flutter_androssy_dialogs/dialogs.dart';

class DemoMessage extends StatelessWidget {
  final MessageDialogContent content;

  const DemoMessage({super.key, required this.content});

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisSize: MainAxisSize.min,
      children: [
        Container(
          margin: const EdgeInsets.all(24),
          alignment: Alignment.center,
          width: double.infinity,
          padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 24),
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(24),
            color: Colors.white,
          ),
          child: Center(child: Text(content.titleText ?? "Message")),
        ),
      ],
    );
  }
}

class DemoSnackBar extends StatelessWidget {
  final SnackBarContent content;

  const DemoSnackBar({super.key, required this.content});

  @override
  Widget build(BuildContext context) {
    return Column(
      mainAxisSize: MainAxisSize.min,
      children: [
        Container(
          margin: const EdgeInsets.all(24),
          alignment: Alignment.center,
          width: double.infinity,
          padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 24),
          decoration: BoxDecoration(
            borderRadius: BorderRadius.circular(24),
            color: Colors.white,
          ),
          child: Center(child: Text(content.titleText ?? "Error snack bar")),
        ),
      ],
    );
  }
}

void main() {
  Toast.alignment = Alignment(0, 0.7);
  Toast.duration = Duration(seconds: 5);
  Toast.builder = (context, msg, args) {
    return Container(
      decoration: BoxDecoration(
        color: Colors.black87,
        borderRadius: BorderRadius.circular(8),
        border: Border.all(color: Colors.red, width: 2),
      ),
      padding: EdgeInsets.symmetric(horizontal: 24, vertical: 12),
      child: Column(
        mainAxisSize: MainAxisSize.min,
        children: [
          Text(msg, style: TextStyle(color: Colors.white, fontSize: 16)),
          if (args != null)
            Text(
              args.toString(),
              style: TextStyle(color: Colors.white, fontSize: 12),
            ),
        ],
      ),
    );
  };
  Loader.init(barrierDismissible: false);
  Dialogs.init(
    alertDialogConfig: (context) {
      return AlertDialogConfig(
        builder: (context, content) {
          return Container(
            width: 300,
            height: 300,
            decoration: BoxDecoration(
              borderRadius: BorderRadius.circular(24),
              color: Colors.white,
            ),
            child: Text(content.titleText ?? "Alert dialog"),
          );
        },
      );
    },
    messageDialogConfig: (context) {
      return MessageDialogConfig(
        builder: (context, content) {
          return DemoMessage(content: content);
        },
      );
    },
    configs: {
      "custom": (context) {
        return DialogConfig(
          duration: const Duration(seconds: 3),
          reverseDuration: const Duration(seconds: 3),
          builder: (context, content) {
            return Container(
              width: 200,
              height: 200,
              decoration: const BoxDecoration(
                color: Colors.red,
                shape: BoxShape.circle,
              ),
            );
          },
        );
      },
    },
    snackBarConfig: (context) {
      return SnackBarConfig(
        builder: (context, content) {
          return DemoSnackBar(content: content);
        },
      );
    },
    errorSnackBarConfig: (context) {
      return SnackBarConfig(
        builder: (context, content) {
          return DemoSnackBar(content: content);
        },
      );
    },
    warningSnackBarConfig: (context) {
      return SnackBarConfig(
        builder: (context, content) {
          return DemoSnackBar(content: content);
        },
      );
    },
    infoSnackBarConfig: (context) {
      return SnackBarConfig(
        builder: (context, content) {
          return DemoSnackBar(content: content);
        },
      );
    },
    waitingSnackBarConfig: (context) {
      return SnackBarConfig(
        builder: (context, content) {
          return DemoSnackBar(content: content);
        },
      );
    },
  );
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(seedColor: Colors.deepPurple),
        useMaterial3: true,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key});

  @override
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  void initState() {
    super.initState();
    WidgetsBinding.instance.addPostFrameCallback((_) {
      Loader.darkMode = Theme.of(context).brightness == Brightness.dark;
    });
  }

  @override
  Widget build(BuildContext context) {
    Loader.context = context;
    Loader.isShowing;
    return Scaffold(
      body: Container(
        alignment: Alignment.center,
        padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 50),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            ElevatedButton(
              onPressed: () {
                Toast.show("Hello toast");
              },
              child: const Text("Show Toast"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                Widget child = Container(
                  width: double.infinity,
                  height: 500,
                  color: Colors.white,
                  alignment: Alignment.center,
                  child: ElevatedButton(
                    onPressed: () {
                      context.dismiss();
                    },
                    child: const Text("Close"),
                  ),
                );
                AndrossyDialog.show(
                  context: context,
                  position: AndrossyDialogPosition.center,
                  builder: (context) => child,
                );
              },
              child: const Text("Show Custom Dialog"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showAlert(
                  title: "This is a title!",
                  message: "This is a alert message",
                );
              },
              child: const Text("Show Alert Dialog"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showEditor(
                  hint: "Write something...",
                  title: "This is a title!",
                );
              },
              child: const Text("Show Editable Dialog"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () async {
                context.showLoader();
                await Future.delayed(Duration(seconds: 5));
                context.hideLoader();
              },
              child: const Text("Show Loading Dialog"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showMessage("This is a message", title: "Successful!");
              },
              child: const Text("Show Message Dialog"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showSnackBar("This is a snack bar message!");
              },
              child: const Text("Show Snack Bar"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showErrorSnackBar("This is a error snack bar message!");
              },
              child: const Text("Show Error Snack Bar"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showWarningSnackBar(
                  "This is a warning snack bar message!",
                );
              },
              child: const Text("Show Warning Snack Bar"),
            ),
          ],
        ),
      ),
    );
  }
}
2
likes
140
points
124
downloads

Publisher

unverified uploader

Weekly Downloads

Customized alert dialog, editable dialog, loading dialog, message dialog, and some snacks

Repository (GitHub)
View/report issues

Documentation

API reference

License

Apache-2.0 (license)

Dependencies

flutter

More

Packages that depend on flutter_androssy_dialogs