Flutter快速对话框插件fc_quick_dialog的使用

Flutter快速对话框插件fc_quick_dialog的使用

fc_quick_dialog 是一个用于在 Flutter 应用程序中创建简单 Material 基础对话框的插件。它类似于 JavaScript 中的 alertconfirmprompt

使用

以下是一些基本示例,展示了如何使用 fc_quick_dialog 插件创建不同类型的对话框:

// 确认对话框。
final result = await FcQuickDialog.confirm(context,
    title: '确认',
    yesText: '是',
    noText: '否',
    cancelText: '取消',
    content: '你确定吗?');

// 标准对话框。
await FcQuickDialog.info(context,
    title: '信息',
    okText: '确定',
    content: '你选择了 $result');

// 错误对话框。
await FcQuickDialog.error(
    context,
    error: '异常: 测试插件错误',
    title: '错误',
    okText: '确定');

// 文本输入对话框。
final text = await FcQuickDialog.textInput(
    context,
    title: '请输入文本',
    subTitle: '这是副标题',
    okText: '确定',
    cancelText: '取消',
  );

// 密码输入对话框。
final pwd = await FcQuickDialog.textInput(
    context,
    title: '请输入密码',
    password: true,
    okText: '确定',
    cancelText: '取消',
  );

完整示例代码

以下是完整的示例代码,展示了如何在 Flutter 应用程序中使用 fc_quick_dialog 插件:

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

const colorSeed = Colors.deepPurple;

void main() {
  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(
        useMaterial3: true,
        colorSchemeSeed: colorSeed,
      ),
      darkTheme: ThemeData(
        brightness: Brightness.dark,
        useMaterial3: true,
        colorSchemeSeed: colorSeed,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  const MyHomePage({super.key, required this.title});

  // 这个小部件是你的应用程序的主页。它是有状态的,这意味着
  // 它有一个状态对象(定义在下面),其中包含影响其外观的字段。
  // 这个类是状态的配置。它持有由父级(在这个例子中是App小部件)提供的值(在这个例子中是标题)并
  // 由构建方法使用。Widget子类中的字段总是标记为"final"。

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _resultToString(bool? result) {
    if (result == null) {
      return '取消';
    }
    return result ? '是' : '否';
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 这个方法每次调用setState时都会被重新运行,例如上面的_incrementCounter方法所做的那样。
    //
    // Flutter框架已经优化了重新运行构建方法的速度,这样你可以只需重建需要更新的部分而不是个别更改小部件实例。
    return Scaffold(
      appBar: AppBar(
        // 尝试这个:尝试在这里将颜色更改为特定颜色(可能是Colors.amber),然后触发热重载以查看AppBar颜色改变而其他颜色保持不变。
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
        // 这里我们从MyHomePage对象获取值,该对象是由App.build方法创建的,并用它来设置我们的appbar标题。
        title: Text(widget.title),
      ),
      body: Padding(
        padding: const EdgeInsets.all(20),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            OutlinedButton(
                onPressed: () async {
                  await FcQuickDialog.info(context,
                      title: '信息', content: '你好,世界!', okText: '确定');
                },
                child: const Text('信息')),
            const SizedBox(height: 10),
            OutlinedButton(
                onPressed: () async {
                  await FcQuickDialog.error(context,
                      error: '异常: 测试插件错误',
                      title: '错误',
                      okText: '确定');
                },
                child: const Text('错误')),
            const SizedBox(height: 10),
            OutlinedButton(
                onPressed: () async {
                  final result = await FcQuickDialog.confirm(context,
                      title: '确认',
                      yesText: '是',
                      noText: '否',
                      content: '你确定吗?');
                  if (!context.mounted) {
                    return;
                  }
                  await FcQuickDialog.info(context,
                      title: '信息',
                      okText: '确定',
                      content: '你选择了 "${_resultToString(result)}"');
                },
                child: const Text('确认(是/否)')),
            const SizedBox(height: 10),
            OutlinedButton(
                onPressed: () async {
                  final result = await FcQuickDialog.confirm(context,
                      title: '确认',
                      yesText: '是',
                      noText: '否',
                      cancelText: '取消',
                      content: '你确定吗?');
                  if (!context.mounted) {
                    return;
                  }
                  await FcQuickDialog.info(context,
                      title: '信息',
                      okText: '确定',
                      content: '你选择了 "${_resultToString(result)}"');
                },
                child: const Text('确认(是/否/取消)')),
            const SizedBox(height: 10),
            OutlinedButton(
                onPressed: () async {
                  final result = await FcQuickDialog.textInput(
                    context,
                    title: '请输入文本',
                    subTitle: '这是副标题',
                    okText: '确定',
                    cancelText: '取消',
                  );
                  if (!context.mounted) {
                    return;
                  }
                  await FcQuickDialog.info(context,
                      title: '信息',
                      okText: '确定',
                      content: '你输入了 "$result"');
                },
                child: const Text('文本输入')),
            const SizedBox(height: 10),
            OutlinedButton(
                onPressed: () async {
                  final result = await FcQuickDialog.textInput(
                    context,
                    title: '请输入密码',
                    password: true,
                    okText: '确定',
                    cancelText: '取消',
                  );
                  if (!context.mounted) {
                    return;
                  }
                  await FcQuickDialog.info(context,
                      title: '信息',
                      okText: '确定',
                      content: '你输入了 "$result"');
                },
                child: const Text('密码输入')),
            const SizedBox(height: 10),
            OutlinedButton(
                onPressed: () async {
                  await FcQuickDialog.info(context,
                      titleWidget: const Text(
                        '加粗和蓝色文字',
                        style: TextStyle(
                          color: Colors.blue, // 设置文本颜色为蓝色
                          fontWeight: FontWeight.bold, // 使文本加粗
                          fontSize: 16, // 可选:设置字体大小
                        ),
                      ),
                      contentWidget: const Text(
                        '这是自定义小部件',
                        style: TextStyle(
                          color: Colors.green, // 设置文本颜色为绿色
                          fontSize: 14, // 可选:设置字体大小
                        ),
                      ),
                      okText: '确定');
                },
                child: const Text('自定义小部件')),
          ],
        ),
      ), // 这个尾随逗号使得自动格式化更好看。
    );
  }
}

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

1 回复

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


fc_quick_dialog 是一个用于 Flutter 的快速对话框插件,它可以帮助开发者快速创建和显示各种类型的对话框,如确认对话框、输入对话框、选择对话框等。这个插件的目标是简化对话框的创建过程,让开发者可以更专注于业务逻辑。

安装插件

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

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

然后运行 flutter pub get 来安装插件。

基本使用

1. 显示确认对话框

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

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('FcQuickDialog Example')),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              FcQuickDialog.showConfirmDialog(
                context,
                title: '确认',
                message: '你确定要删除这个项目吗?',
                onConfirm: () {
                  print('用户点击了确认');
                },
                onCancel: () {
                  print('用户点击了取消');
                },
              );
            },
            child: Text('显示确认对话框'),
          ),
        ),
      ),
    );
  }
}

2. 显示输入对话框

ElevatedButton(
  onPressed: () {
    FcQuickDialog.showInputDialog(
      context,
      title: '输入',
      message: '请输入你的名字:',
      onConfirm: (String value) {
        print('用户输入了:$value');
      },
      onCancel: () {
        print('用户点击了取消');
      },
    );
  },
  child: Text('显示输入对话框'),
);

3. 显示选择对话框

ElevatedButton(
  onPressed: () {
    FcQuickDialog.showSelectionDialog(
      context,
      title: '选择',
      items: ['选项1', '选项2', '选项3'],
      onSelected: (int index, String value) {
        print('用户选择了:$value (索引:$index)');
      },
    );
  },
  child: Text('显示选择对话框'),
);

自定义对话框

fc_quick_dialog 也允许你自定义对话框的外观和行为。你可以通过传递 dialogStyle 参数来自定义对话框的样式。

ElevatedButton(
  onPressed: () {
    FcQuickDialog.showCustomDialog(
      context,
      dialogStyle: DialogStyle(
        titleStyle: TextStyle(fontSize: 20, fontWeight: FontWeight.bold),
        messageStyle: TextStyle(fontSize: 16),
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        backgroundColor: Colors.white,
        borderRadius: 10.0,
      ),
      title: '自定义对话框',
      message: '这是一个自定义样式的对话框。',
      onConfirm: () {
        print('用户点击了确定');
      },
      onCancel: () {
        print('用户点击了取消');
      },
    );
  },
  child: Text('显示自定义对话框'),
);
回到顶部