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

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

使用此包作为库

图像描述

平台支持

Android iOS MacOS Web Linux Windows
✔️ ✔️ ✔️ ✔️ ✔️ ✔️

运行此命令

通过Flutter:

$ flutter pub add fancy_flutter_dialog

这将在你的包的pubspec.yaml文件中添加如下行(并运行隐式的flutter pub get):

dependencies:
  fancy_flutter_dialog: ^1.0.0

或者,你的编辑器可能支持flutter pub get。请查阅你所使用的编辑器的文档以了解更多。

导入它

现在在你的Dart代码中,你可以使用:

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

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',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        // 这是你的应用的主题。
        //
        // 尝试用"flutter run"运行你的应用。你会看到应用有一个蓝色工具栏。然后,在不退出应用的情况下,尝试将primarySwatch改为Colors.green,然后触发"热重载"(在你运行"flutter run"的控制台中按"r"键,或者简单地保存更改以在Flutter IDE中触发"热重载")。请注意,计数器不会重置为零;应用不会重新启动。
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Fancy Flutter Dialog'),
    );
  }
}

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> {
  int _counter = 0;

  void _incrementCounter() {
    setState(() {
      // 这个对setState的调用告诉Flutter框架某些事情已经改变,这会导致它重新运行下面的构建方法,以便显示可以反映更新后的值。如果我们改变了_counter而不调用setState(),那么构建方法将不会再次被调用,因此什么也不会发生。
      _counter++;
    });
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    // 每次调用setState时都会重新运行此方法,例如上面的_incrementCounter方法所做的那样。
    //
    // Flutter框架已经被优化为使重建方法快速运行,这样你就可以重建任何需要更新的东西,而不是必须逐个改变小部件实例。
    return Scaffold(
      appBar: AppBar(
        // 这里我们从由App.build方法创建的MyHomePage对象中获取值,并用它来设置我们的appbar标题。
        title: Text(widget.title),
      ),
      body: Center(
        // Center是一个布局小部件。它接受一个子元素并将它放置在其父元素的中间。
        child: InkWell(
          child: Text("显示对话框"),
          onTap: () {
            showDialog(
              context: context,
              builder: (BuildContext context) {
                return FancyAlertDialog(
                  title: "如果您喜欢我们的应用,请给我们评分",
                  backgroundColor: Color(0xFF303F9F),
                  message: "您真的要退出吗?",
                  negativeBtnText: "取消",
                  positiveBtnBackground: Color(0xFFFF4081),
                  positiveBtnText: "评分",
                  negativeBtnBackground: Color(0xFFA9A7A8),
                  onPositiveClicked: () {
                    // 点击了肯定按钮的动作
                    print("评分");
                  },
                  onNegativeClicked: () {
                    // 点击了否定按钮的动作
                    print("取消");
                  },
                );
              },
            );
          },
        ),
      ), // 这个尾随逗号使得构建方法的自动格式化更美观。
    );
  }
}

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

1 回复

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


fancy_flutter_dialog 是一个用于在 Flutter 应用中创建自定义对话框的插件。它提供了多种样式和动画效果,使开发者能够轻松地创建出美观且功能丰富的对话框。以下是如何使用 fancy_flutter_dialog 插件的详细步骤。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 fancy_flutter_dialog 插件的依赖:

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

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

2. 导入包

在需要使用 fancy_flutter_dialog 的 Dart 文件中导入包:

import 'package:fancy_flutter_dialog/fancy_flutter_dialog.dart';

3. 使用 FancyDialog 创建对话框

fancy_flutter_dialog 提供了 FancyDialog 类来创建自定义对话框。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Fancy Flutter Dialog Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              showDialog(
                context: context,
                builder: (BuildContext context) {
                  return FancyDialog(
                    title: Text('Custom Dialog'),
                    content: Text('This is a fancy custom dialog.'),
                    positiveButtonText: 'OK',
                    negativeButtonText: 'Cancel',
                    onPositivePressed: () {
                      Navigator.of(context).pop();
                      print('OK button pressed');
                    },
                    onNegativePressed: () {
                      Navigator.of(context).pop();
                      print('Cancel button pressed');
                    },
                  );
                },
              );
            },
            child: Text('Show Dialog'),
          ),
        ),
      ),
    );
  }
}

4. 自定义对话框样式

FancyDialog 提供了多个参数来自定义对话框的外观和行为,以下是一些常用的参数:

  • title: 对话框的标题。
  • content: 对话框的内容。
  • positiveButtonText: 确认按钮的文本。
  • negativeButtonText: 取消按钮的文本。
  • onPositivePressed: 确认按钮的回调函数。
  • onNegativePressed: 取消按钮的回调函数。
  • animationType: 对话框的动画类型,如 FancyAnimationType.SCALEFancyAnimationType.SLIDE 等。
  • dialogType: 对话框的类型,如 FancyDialogType.INFOFancyDialogType.WARNING 等。

5. 示例:使用不同动画和类型的对话框

showDialog(
  context: context,
  builder: (BuildContext context) {
    return FancyDialog(
      title: Text('Info Dialog'),
      content: Text('This is an info dialog with scale animation.'),
      positiveButtonText: 'OK',
      negativeButtonText: 'Cancel',
      onPositivePressed: () {
        Navigator.of(context).pop();
      },
      onNegativePressed: () {
        Navigator.of(context).pop();
      },
      animationType: FancyAnimationType.SCALE,
      dialogType: FancyDialogType.INFO,
    );
  },
);
回到顶部