Flutter对话框辅助插件flutter_dialog_helper的使用

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

Flutter对话框辅助插件flutter_dialog_helper的使用

本README描述了该软件包。如果您将此软件包发布到pub.dev,则此README的内容将出现在您的软件包首页。

有关如何编写好的软件包README的指南,请参阅编写软件包页面

有关开发软件包的一般信息,请参阅Dart指南创建软件包和Flutter指南开发软件包和插件

安装

添加到pubspec.yaml

dependencies:
  flutter_dialog_helper: ^0.1.0

使用

通常,您希望在按钮回调中调用任何方法:

成功消息

ElevatedButton(
  onPressed: (){
    showSuccessMessage(context, '成功!!!');
  },
  child: const Text('成功消息'),
),

错误消息

ElevatedButton(
  onPressed: (){
    showErrorMessage(context, '错误!!!');
  },
  child: const Text('错误消息'),
),

确认对话框

ElevatedButton(
  onPressed: () async{
    bool? confirm = await showConfirmationDialog(context, '确认', '你确定吗?');
    setState(() {
      lastConfirmation = confirm;
    });
  },
  child: const Text('确认对话框'),
),

提示对话框

ElevatedButton(
  onPressed: () async{
    String? input = await showPromtDialog(context, '输入对话框',);
    setState(() {
      lastInput = input;
    });
  },
  child: const Text('提示对话框'),
),

示例代码

以下是完整的示例代码,展示了如何使用flutter_dialog_helper插件。

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

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter 对话框助手示例',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('Flutter 对话框助手示例'),
      ),
      body: Center(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          children: const [
            StaticDialogs(),
            DynamicDialogs(),
          ],
        ),
      ),
    );
  }
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          children: [
            ElevatedButton(
              onPressed: (){
                showSuccessMessage(context, '成功!!!');
              },
              child: const Text('成功消息'),
            ),
            ElevatedButton(
              onPressed: (){
                showErrorMessage(context, '错误!!!');
              },
              child: const Text('错误消息'),
            ),
          ],
        ),
    );
  }
}

class DynamicDialogs extends StatefulWidget {
  const DynamicDialogs({super.key});

  [@override](/user/override)
  State<DynamicDialogs> createState() => _DynamicDialogsState();
}

class _DynamicDialogsState extends State<DynamicDialogs> {

  bool? lastConfirmation;
  String? lastInput;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.center,
          mainAxisAlignment: MainAxisAlignment.spaceEvenly,
          children: [
            ElevatedButton(
              onPressed: () async{
                bool? confirm = await showConfirmationDialog(context, '确认', '你确定吗?');
                setState(() {
                  lastConfirmation = confirm;
                });
              },
              child: const Text('确认对话框'),
            ),
            Text('最后确认值: $lastConfirmation'),
            ElevatedButton(
              onPressed: () async{
                String? input = await showPromtDialog(context, '输入对话框',);
                setState(() {
                  lastInput = input;
                });
              },
              child: const Text('提示对话框'),
            ),
            Text('最后输入值: $lastInput'),
          ],
        ),
    );
  }
}

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

1 回复

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


当然,以下是如何在Flutter项目中使用flutter_dialog_helper插件的示例代码。这个插件简化了对话框的创建和管理,使得在应用中显示不同类型的对话框变得更加容易。

首先,确保你的pubspec.yaml文件中已经添加了flutter_dialog_helper依赖:

dependencies:
  flutter:
    sdk: flutter
  flutter_dialog_helper: ^x.y.z  # 请替换为最新版本号

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

示例代码

以下是一个简单的Flutter应用示例,展示了如何使用flutter_dialog_helper来显示不同类型的对话框。

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

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

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

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

class _MyHomePageState extends State<MyHomePage> {
  final FlutterDialogHelper _dialogHelper = FlutterDialogHelper();

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Dialog Helper Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            ElevatedButton(
              onPressed: () {
                _showAlertDialog(context);
              },
              child: Text('Show Alert Dialog'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                _showConfirmationDialog(context);
              },
              child: Text('Show Confirmation Dialog'),
            ),
            SizedBox(height: 20),
            ElevatedButton(
              onPressed: () {
                _showLoadingDialog(context);
              },
              child: Text('Show Loading Dialog'),
            ),
          ],
        ),
      ),
    );
  }

  void _showAlertDialog(BuildContext context) {
    _dialogHelper.showAlertDialog(
      context: context,
      title: 'Alert',
      description: 'This is an alert dialog.',
      confirmText: 'OK',
      onConfirm: () {
        // Handle confirm button press
        print('Alert Dialog Confirmed');
      },
    );
  }

  void _showConfirmationDialog(BuildContext context) {
    _dialogHelper.showConfirmationDialog(
      context: context,
      title: 'Confirmation',
      description: 'Are you sure you want to proceed?',
      confirmText: 'Yes',
      cancelText: 'No',
      onConfirm: () {
        // Handle confirm button press
        print('Confirmation Dialog Confirmed');
      },
      onCancel: () {
        // Handle cancel button press
        print('Confirmation Dialog Cancelled');
      },
    );
  }

  void _showLoadingDialog(BuildContext context) {
    _dialogHelper.showLoadingDialog(
      context: context,
      title: 'Loading',
      message: 'Please wait...',
    );

    // Simulate a long-running task
    Future.delayed(Duration(seconds: 3)).then((_) {
      Navigator.of(context).pop(); // Dismiss the loading dialog after 3 seconds
      _showAlertDialog(context); // Show an alert dialog after loading completes
    });
  }
}

解释

  1. 依赖安装:在pubspec.yaml中添加flutter_dialog_helper依赖并运行flutter pub get
  2. 创建主应用MyApp是一个简单的Flutter应用,它包含一个主页面MyHomePage
  3. 对话框帮助器:在MyHomePage的状态类中,我们创建了一个FlutterDialogHelper的实例。
  4. 显示对话框
    • _showAlertDialog方法使用showAlertDialog显示一个简单的警告对话框。
    • _showConfirmationDialog方法使用showConfirmationDialog显示一个带确认和取消按钮的对话框。
    • _showLoadingDialog方法使用showLoadingDialog显示一个加载对话框,并在3秒后自动关闭并显示一个警告对话框。

这个示例展示了如何使用flutter_dialog_helper插件来简化对话框的创建和管理。你可以根据需要进一步自定义对话框的样式和行为。

回到顶部