Flutter紧凑对话框插件flutter_compact_dialog的使用

Flutter紧凑对话框插件flutter_compact_dialog的使用

安装与使用

在您的pubspec.yaml文件中添加flutter_compact_dialog作为依赖项:

dependencies:
  flutter_compact_dialog: <当前版本>

在Dart文件中导入CompactDialog

import 'package:flutter_compact_dialog/compact_dialog.dart';

示例

alert(警告)

// 弹出一个警告对话框
CompactDialog.alert(
  context: context, // 当前上下文
  title: '信息', // 对话框标题
  body: '这是一个示例。', // 对话框内容
  iconData: Icons.info, // 图标
  iconColor: Colors.blue, // 图标颜色
  primaryFunction: () { // 确定按钮点击事件
    Navigator.of(context).pop(); // 关闭对话框
  },
);

confirm(确认)

// 弹出一个确认对话框
CompactDialog.confirm(
  context: context, // 当前上下文
  title: '警告', // 对话框标题
  body: '这是一个示例。你想运行它吗?', // 对话框内容
  iconData: Icons.warning, // 图标
  iconColor: Colors.yellow, // 图标颜色
  barrierDismissible: false, // 是否可以通过点击背景关闭对话框
  primaryFunction: () { // 确定按钮点击事件
    Navigator.of(context).pop(); // 关闭对话框
  },
  secondaryFunction: () { // 取消按钮点击事件
    Navigator.of(context).pop(); // 关闭对话框
  },
);

progress(进度条)

// 弹出一个进度条对话框
CompactDialog.progress(
  context: context, // 当前上下文
  body: '加载中...', // 对话框内容
  isCenterBody: true, // 内容是否居中
);

// 延迟3秒后关闭对话框
Future.delayed(Duration(milliseconds: 3000)).then(
  (_) => Navigator.of(context).pop(), // 关闭对话框
);

完整示例

import 'package:flutter/material.dart';
import 'package:flutter_compact_dialog/compact_dialog.dart';

void main() {
  runApp(
    MaterialApp(
      theme: ThemeData(
        brightness: Brightness.light,
      ),
      home: MyApp(),
    ),
  );
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {
  [@override](/user/override)
  void initState() {
    super.initState();
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('紧凑对话框示例'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            ElevatedButton(
              onPressed: () {
                CompactDialog.alert(
                  context: context,
                  title: '信息',
                  body: '这是一个示例。',
                  iconData: Icons.info,
                  iconColor: Colors.blue,
                  barrierDismissible: false,
                  primaryFunction: () {
                    Navigator.of(context).pop();
                  },
                );
              },
              child: Text('弹出警告对话框'),
            ),
            ElevatedButton(
              onPressed: () {
                CompactDialog.alert(
                  context: context,
                  title: '信息',
                  body: '这是一个示例。',
                  iconData: Icons.info,
                  iconColor: Colors.blue,
                  barrierDismissible: false,
                  primaryButtonText: '确定',
                  primaryButtonRadius: 20,
                  primaryFunction: () {
                    Navigator.of(context).pop();
                  },
                  radius: 40,
                );
              },
              child: Text('弹出警告对话框 2'),
            ),
            ElevatedButton(
              onPressed: () {
                CompactDialog.confirm(
                  context: context,
                  title: '警告',
                  body: '这是一个示例。你想运行它吗?',
                  iconData: Icons.warning,
                  iconColor: Colors.yellow,
                  barrierDismissible: false,
                  primaryFunction: () {
                    Navigator.of(context).pop();
                  },
                  secondaryFunction: () {
                    Navigator.of(context).pop();
                  },
                );
              },
              child: Text('弹出确认对话框'),
            ),
            ElevatedButton(
              onPressed: () {
                CompactDialog.confirm(
                  context: context,
                  title: '删除',
                  body: '你确定要删除吗?',
                  iconData: Icons.close,
                  iconColor: Colors.red,
                  barrierDismissible: false,
                  primaryButtonText: '删除',
                  primaryButtonColor: Colors.red,
                  primaryFunction: () {
                    Navigator.of(context).pop();
                  },
                  secondaryFunction: () {
                    Navigator.of(context).pop();
                  },
                );
              },
              child: Text('弹出确认对话框 2'),
            ),
            ElevatedButton(
              onPressed: () {
                CompactDialog.progress(
                  context: context,
                  body: '加载中...',
                  isCenterBody: true,
                );

                Future.delayed(Duration(milliseconds: 3000)).then(
                  (_) => Navigator.of(context).pop(),
                );
              },
              child: Text('弹出进度条对话框'),
            ),
          ],
        ),
      ),
    );
  }
}

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

1 回复

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


flutter_compact_dialog 是一个用于在 Flutter 应用中显示紧凑对话框的插件。它可以帮助你快速创建简洁、轻量级的对话框,适用于需要快速提示用户或获取简单输入的场景。

安装

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

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

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

基本用法

1. 显示简单的对话框

你可以使用 CompactDialog.show 方法来显示一个简单的对话框:

import 'package:flutter/material.dart';
import 'package:flutter_compact_dialog/flutter_compact_dialog.dart';

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Compact Dialog Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              CompactDialog.show(
                context: context,
                title: '提示',
                message: '这是一个简单的紧凑对话框',
                positiveText: '确定',
                onPositivePressed: () {
                  print('确定按钮被点击');
                },
              );
            },
            child: Text('显示对话框'),
          ),
        ),
      ),
    );
  }
}

void main() => runApp(MyApp());

2. 带取消按钮的对话框

你可以通过设置 negativeTextonNegativePressed 来添加取消按钮:

CompactDialog.show(
  context: context,
  title: '提示',
  message: '你确定要删除这个项目吗?',
  positiveText: '删除',
  negativeText: '取消',
  onPositivePressed: () {
    print('删除按钮被点击');
  },
  onNegativePressed: () {
    print('取消按钮被点击');
  },
);

3. 自定义对话框内容

如果你需要自定义对话框的内容,可以使用 CompactDialog.custom 方法:

CompactDialog.custom(
  context: context,
  title: '自定义对话框',
  content: Column(
    mainAxisSize: MainAxisSize.min,
    children: [
      Text('这是一个自定义内容的对话框'),
      TextField(
        decoration: InputDecoration(labelText: '输入框'),
      ),
    ],
  ),
  positiveText: '确定',
  onPositivePressed: () {
    print('确定按钮被点击');
  },
);
回到顶部