Flutter自定义对话框插件smart_alert_dialog的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter自定义对话框插件smart_alert_dialog的使用

简介

smart_alert_dialog 是一个用于Flutter应用程序的插件,它根据平台自动选择合适的样式来显示对话框:对于iOS设备使用Cupertino风格,对于Android设备则采用Material风格。这使得开发者可以轻松创建与原生应用一致的用户体验。

版本信息

对话框展示

Android

可取消的对话框

Android Dismissable Alert Dialog

确认/取消对话框

Android Accept/Cancel Alert Dialog

iOS

可取消的对话框

iOS Dismissable Alert Dialog

确认/取消对话框

iOS Accept/Cancel Alert Dialog

注意: 大部分新问题调试的支持依赖于开源社区。

属性介绍

属性名 类型 描述 是否必须 默认值
title String 设置对话框标题 -
message String 设置对话框内容描述 -
onConfirmPressed Function() 点击确认按钮时调用的函数。如果不设置,将显示可取消的对话框。 null
onCancelPressed Function() 点击取消按钮时调用的函数。 关闭对话框
text AlertDialogText 自定义按钮文本 AlertDialogText()
style AlertDialogStyle 自定义文本样式 AlertDialogStyle()

AlertDialogText

  • confirm: 确认按钮文本,默认为"Yes"
  • cancel: 取消按钮文本,默认为"No"
  • dismiss: 关闭按钮文本,默认为"Ok"

AlertDialogStyle

  • confirm: 确认按钮文本样式
  • cancel: 取消按钮文本样式
  • dismiss: 关闭按钮文本样式
  • title: 标题文本样式
  • message: 内容描述文本样式

示例代码

以下是一个完整的示例demo,展示了如何使用smart_alert_dialog

import 'package:flutter/material.dart';
import 'package:smart_alert_dialog/models/alert_dialog_text.dart';
import 'package:smart_alert_dialog/smart_alert_dialog.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
        visualDensity: VisualDensity.adaptivePlatformDensity,
      ),
      home: MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);
  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  void _showYesNoAlert(BuildContext context) {
    showDialog(
      context: context,
      builder: (_) => SmartAlertDialog(
        title: "你喜欢这个库吗?",
        text: AlertDialogText(confirm: "是", cancel: "否"),
        message:
            "你认为我的库很棒并且想要尝试一下吗?\n\n提示:欢迎提交PR以改进它 :)",
        onConfirmPressed: () {
          print("用户选择了确认");
          Navigator.of(context).pop(); // 关闭对话框
        },
        onCancelPressed: () {
          print("用户选择了取消");
          Navigator.of(context).pop(); // 关闭对话框
        },
      ),
    );
  }

  void _showDismissableAlert(BuildContext context) {
    showDialog(
      context: context,
      builder: (_) => SmartAlertDialog(
        title: "这是一个可关闭的对话框!",
        text: AlertDialogText(dismiss: "确定"),
        message:
            "嘿,你可以直接关闭这个对话框。另外,不要再点击那个按钮了。你已经被提醒过了!",
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      backgroundColor: Colors.white,
      body: SafeArea(
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.spaceEvenly,
            children: <Widget>[
              MaterialButton(
                child: Text(
                  "发送一个可关闭的对话框",
                  style: TextStyle(color: Colors.white, fontSize: 16),
                ),
                onPressed: () => _showDismissableAlert(context),
                color: Colors.blue,
              ),
              MaterialButton(
                child: Text(
                  "发送一个确认/取消对话框",
                  style: TextStyle(color: Colors.white, fontSize: 16),
                ),
                onPressed: () => _showYesNoAlert(context),
                color: Colors.green,
              ),
            ],
          ),
        ),
      ),
    );
  }
}

待办事项

  • [x] 添加 cancelTextColor - 在 AlertDialogStyle 中,检查 style 属性
  • [x] 添加 confirmTextColor - 在 AlertDialogStyle 中,检查 style 属性
  • [x] 添加 dismissText - 在 AlertDialogText 中,检查 text 属性
  • [x] 添加 dismissTextColor - 在 AlertDialogStyle 中,检查 style 属性
  • [ ] 创建平板电脑和Web的设计
  • [ ] 为每个组件添加测试

许可证

参见 LICENSE.md

如果有任何问题或不清楚的地方,请随时提出问题。


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

1 回复

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


当然,以下是如何在Flutter项目中集成和使用smart_alert_dialog插件的示例代码。smart_alert_dialog是一个用于创建自定义对话框的Flutter插件。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  smart_alert_dialog: ^2.0.13  # 请注意版本号,这里用的是2.0.13,实际使用时请检查最新版本

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

2. 导入插件

在你需要使用对话框的Dart文件中导入smart_alert_dialog

import 'package:smart_alert_dialog/smart_alert_dialog.dart';

3. 使用SmartAlertDialog

下面是一个简单的示例,展示如何使用SmartAlertDialog来创建一个自定义对话框:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Smart AlertDialog Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  void showCustomDialog() {
    SmartDialog.show(
      context,
      title: 'Custom Dialog',
      content: Text('This is a custom dialog created using smart_alert_dialog plugin.'),
      widgetButtons: [
        DialogButton(
          child: Text('Cancel'),
          color: Colors.red,
          onPressed: () => SmartDialog.dismiss(context),
          width: 120,
        ),
        DialogButton(
          child: Text('OK'),
          color: Colors.blue,
          onPressed: () {
            SmartDialog.dismiss(context);
            // Add your OK button logic here
          },
          width: 120,
        ),
      ],
      animationType: DialogAnimationType.TOP_TO_BOTTOM,
      width: double.infinity,
      borderRadius: 12,
      backgroundBlur: 5,
      backgroundColor: Colors.white.withOpacity(0.9),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Smart AlertDialog Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: showCustomDialog,
          child: Text('Show Dialog'),
        ),
      ),
    );
  }
}

4. 运行应用

将上述代码保存并运行你的Flutter应用。点击按钮后,你应该会看到一个自定义的对话框弹出,其中包括标题、内容以及两个按钮(取消和确定)。

总结

通过上述步骤,你已经学会了如何在Flutter项目中集成和使用smart_alert_dialog插件来创建自定义对话框。smart_alert_dialog提供了丰富的配置选项,你可以根据需要进一步自定义对话框的外观和行为。

回到顶部