Flutter对话框管理插件flutter_androssy_dialogs的使用

Flutter对话框管理插件flutter_androssy_dialogs的使用

特性

  • 提示消息对话框
  • 可编辑对话框
  • 加载对话框
  • 消息对话框
  • 消息通知栏
  • 错误通知栏
  • 警告通知栏

导入

import 'package:flutter_androssy_dialogs/dialogs.dart';

初始化自定义设置(可选)

void initDialogs() {
  Dialogs.init(
    alertDialogConfig: (context) => 
    const AlertDialogConfig(
      positiveButtonTextStyle: TextStyle(
        color: Colors.orange,
        fontWeight: FontWeight.bold,
        fontSize: 18,
      ),
      material: false,
    ),
    messageDialogConfig: (context) => 
    const MessageDialogConfig(
      buttonTextStyle: TextStyle(
        color: Colors.orange,
        fontWeight: FontWeight.bold,
        fontSize: 18,
      ),
      material: false,
    ),
    loadingDialogConfig: (context) => 
        LoadingDialogConfig(
          loader: Center(
            child: Container(
              width: 120,
              height: 120,
              decoration: BoxDecoration(
                color: Colors.white,
                borderRadius: BorderRadius.circular(25),
              ),
              child: const Center(
                child: CircularProgressIndicator(),
              ),
            ),
          ),
          material: false,
        ),
    snackBarConfig: (context) => 
    const SnackBarConfig(
      messageStyle: TextStyle(
        color: Colors.white,
        fontWeight: FontWeight.bold,
        fontSize: 16,
      ),
    ),
    errorSnackBarConfig: (context) => 
        SnackBarConfig(
          background: Colors.red.withOpacity(0.1),
          messageStyle: const TextStyle(
            color: Colors.red,
            fontWeight: FontWeight.bold,
            fontSize: 16,
          ),
        ),
    warningSnackBarConfig: (context) => 
        SnackBarConfig(
          background: Colors.orange.withOpacity(0.1),
          messageStyle: const TextStyle(
            color: Colors.orange,
            fontWeight: FontWeight.bold,
            fontSize: 16,
          ),
        ),
  );
}

示例

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

void main() {
  Dialogs.init(
    alertDialogConfig: (context) => 
    const AlertDialogConfig(
      positiveButtonTextStyle: TextStyle(
        color: Colors.orange,
        fontWeight: FontWeight.bold,
        fontSize: 18,
      ),
      material: false,
    ),
    messageDialogConfig: (context) => 
    const MessageDialogConfig(
      buttonTextStyle: TextStyle(
        color: Colors.orange,
        fontWeight: FontWeight.bold,
        fontSize: 18,
      ),
      material: false,
    ),
    loadingDialogConfig: (context) => 
        LoadingDialogConfig(
          loader: Center(
            child: Container(
              width: 120,
              height: 120,
              decoration: BoxDecoration(
                color: Colors.white,
                borderRadius: BorderRadius.circular(25),
              ),
              child: const Center(
                child: CircularProgressIndicator(),
              ),
            ),
          ),
          material: false,
        ),
    snackBarConfig: (context) => 
    const SnackBarConfig(
      messageStyle: TextStyle(
        color: Colors.white,
        fontWeight: FontWeight.bold,
        fontSize: 16,
      ),
    ),
    errorSnackBarConfig: (context) => 
        SnackBarConfig(
          background: Colors.red.withOpacity(0.1),
          messageStyle: const TextStyle(
            color: Colors.red,
            fontWeight: FontWeight.bold,
            fontSize: 16,
          ),
        ),
    warningSnackBarConfig: (context) => 
        SnackBarConfig(
          background: Colors.orange.withOpacity(0.1),
          messageStyle: const TextStyle(
            color: Colors.orange,
            fontWeight: FontWeight.bold,
            fontSize: 16,
          ),
        ),
  );
  runApp(const MyApp());
}

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

  [@override](/user/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 StatelessWidget {
  const MyHomePage({super.key});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Container(
        alignment: Alignment.center,
        padding: const EdgeInsets.symmetric(horizontal: 32, vertical: 50),
        child: Column(
          mainAxisSize: MainAxisSize.min,
          children: [
            ElevatedButton(
              onPressed: () {
                context.showAlert(
                  title: "这是一个标题!",
                  message: "这是一个警告消息",
                );
              },
              child: const Text("显示警告对话框"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showEditor(
                  hint: "写点东西...",
                  title: "这是一个标题!",
                );
              },
              child: const Text("显示可编辑对话框"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showLoader();
              },
              child: const Text("显示加载对话框"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showMessage("这是一个消息", title: "成功!");
              },
              child: const Text("显示消息对话框"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showSnackBar("这是一个通知栏消息!");
              },
              child: const Text("显示通知栏"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showErrorSnackBar("这是一个错误通知栏消息!");
              },
              child: const Text("显示错误通知栏"),
            ),
            const SizedBox(height: 24),
            ElevatedButton(
              onPressed: () {
                context.showWarningSnackBar(
                    "这是一个警告通知栏消息!");
              },
              child: const Text("显示警告通知栏"),
            ),
          ],
        ),
      ),
    );
  }
}

更多关于Flutter对话框管理插件flutter_androssy_dialogs的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter对话框管理插件flutter_androssy_dialogs的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


flutter_androssy_dialogs 是一个用于管理 Flutter 应用中的对话框的插件。它提供了一种简单而灵活的方式来显示不同类型的对话框,如提示框、确认框、输入框等。以下是如何使用 flutter_androssy_dialogs 插件的简要指南。

1. 添加依赖

首先,你需要在 pubspec.yaml 文件中添加 flutter_androssy_dialogs 插件的依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_androssy_dialogs: ^1.0.0  # 请使用最新版本

然后运行 flutter pub get 来安装依赖。

2. 导入插件

在你的 Dart 文件中导入 flutter_androssy_dialogs 插件:

import 'package:flutter_androssy_dialogs/flutter_androssy_dialogs.dart';

3. 使用对话框

flutter_androssy_dialogs 提供了多种类型的对话框,以下是几个常见的用法示例。

3.1 显示提示框(Alert Dialog)

AndrossyDialogs.alert(
  context,
  title: "提示",
  message: "这是一个提示框",
  positiveText: "确定",
  onPositive: () {
    print("确定按钮被点击");
  },
);

3.2 显示确认框(Confirm Dialog)

AndrossyDialogs.confirm(
  context,
  title: "确认",
  message: "你确定要执行此操作吗?",
  positiveText: "确定",
  negativeText: "取消",
  onPositive: () {
    print("确定按钮被点击");
  },
  onNegative: () {
    print("取消按钮被点击");
  },
);

3.3 显示输入框(Input Dialog)

AndrossyDialogs.input(
  context,
  title: "输入",
  hint: "请输入内容",
  positiveText: "提交",
  negativeText: "取消",
  onPositive: (value) {
    print("提交按钮被点击,输入内容为: $value");
  },
  onNegative: () {
    print("取消按钮被点击");
  },
);

3.4 显示进度对话框(Progress Dialog)

AndrossyDialogs.progress(
  context,
  title: "加载中",
  message: "请稍候...",
);

// 关闭进度对话框
Navigator.pop(context);

4. 自定义对话框

flutter_androssy_dialogs 允许你通过传递自定义的 Widget 来创建完全自定义的对话框。

AndrossyDialogs.custom(
  context,
  builder: (context) {
    return AlertDialog(
      title: Text("自定义对话框"),
      content: Text("这是一个完全自定义的对话框"),
      actions: [
        TextButton(
          onPressed: () {
            Navigator.pop(context);
          },
          child: Text("关闭"),
        ),
      ],
    );
  },
);
回到顶部