Flutter拖拽弹窗动画插件bouncing_draggable_dialog的使用

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

Flutter拖拽弹窗动画插件bouncing_draggable_dialog的使用

Bouncing Draggable Dialog 插件允许你在 Flutter 应用程序中添加一个带有动画弹跳效果的可拖拽对话框。

特性

BouncingDraggableDialog 小部件是为了在你的 Flutter 应用程序中创建一个独特的对话框而设计的。它能够替代默认的 Flutter 对话框。通过使用 contentheightwidth 属性,你可以指定对话框的内容以及其大小。

该插件会自动处理动画。


开始使用

1. 添加依赖

在你的 pubspec.yaml 文件中添加最新版本的插件,并运行 dart pub get

dependencies:
  bouncing_draggable_dialog: ^1.0.2

2. 导入并使用

在你的 Flutter 应用程序中导入该插件并使用它:

import 'package:bouncing_draggable_dialog/bouncing_draggable_dialog.dart';

使用方法

你可以修改以下属性:

  • content: 对话框的内容。
  • height: 对话框的高度。
  • width: 对话框的宽度。

示例代码(包含所有参数)

class HomePageScreen extends StatefulWidget {
  const HomePageScreen({Key? key}) : super(key: key);

  [@override](/user/override)
  State<HomePageScreen> createState() => _HomePageScreenState();
}

class _HomePageScreenState extends State<HomePageScreen> {
  Widget content() {
    return Center(
      child: Column(
        mainAxisAlignment: MainAxisAlignment.center,
        children: [
          Text(
            'Breaking News!',
            style: TextStyle(
              color: Colors.black,
              fontWeight: FontWeight.w700,
              fontSize: 20,
            ),
          ),
          SizedBox(
            height: 8.0,
          ),
          Divider(
            color: Colors.black,
          ),
          Padding(
            padding: const EdgeInsets.all(8.0),
            child: Text(
              'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.',
              style: TextStyle(
                color: Colors.black,
                fontWeight: FontWeight.normal,
                fontSize: 12,
              ),
              textAlign: TextAlign.center,
            ),
          ),
          Padding(
            padding: const EdgeInsets.only(right: 24.0, top: 8.0, bottom: 8.0),
            child: Container(
              alignment: Alignment.bottomRight,
              child: GestureDetector(
                onTap: () {
                  Navigator.pop(context);
                },
                child: Text(
                  'Close',
                  style: TextStyle(
                    color: Colors.black,
                    fontWeight: FontWeight.bold,
                    fontSize: 14,
                  ),
                ),
              ),
            ),
          ),
        ],
      ),
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      body: Builder(builder: (context) {
        return Center(
          child: GestureDetector(
            onTap: () {
              showDialog(
                context: context,
                builder: (BuildContext context) {
                  return BouncingDraggableDialog(
                    width: 400,
                    height: 200,
                    content: content(),
                  );
                },
              );
            },
            child: Text('Open dialog'),
          ),
        );
      }),
    );
  }
}

更多关于Flutter拖拽弹窗动画插件bouncing_draggable_dialog的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter拖拽弹窗动画插件bouncing_draggable_dialog的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,以下是如何在Flutter项目中使用bouncing_draggable_dialog插件来实现拖拽弹窗动画的一个示例代码。bouncing_draggable_dialog是一个允许你创建可拖拽且具有弹跳动画效果的对话框的插件。

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

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

然后,运行flutter pub get来获取依赖。

接下来,在你的Flutter项目中,你可以这样使用BouncingDraggableDialog

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

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

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

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

class _MyHomePageState extends State<MyHomePage> {
  void _showDraggableDialog() {
    showDialog(
      context: context,
      builder: (BuildContext context) {
        return BouncingDraggableDialog(
          title: Text('Draggable Dialog'),
          content: SingleChildScrollView(
            child: Column(
              crossAxisAlignment: CrossAxisAlignment.start,
              children: <Widget>[
                Text('This is a draggable dialog with bounce effect.'),
                SizedBox(height: 20),
                Text('You can drag it around the screen.'),
              ],
            ),
          ),
          actions: <Widget>[
            TextButton(
              onPressed: () {
                Navigator.of(context).pop();
              },
              child: Text('Close'),
            ),
          ],
          backgroundColor: Colors.white,
          elevation: 8.0,
          shape: RoundedRectangleBorder(
            borderRadius: BorderRadius.circular(12),
          ),
          dragHandle: GestureDetector(
            child: Container(
              height: 40,
              color: Colors.blue.withOpacity(0.2),
              child: Center(child: Text('Drag me')),
            ),
            onPanDown: (details) {
              // Optional: Handle pan down event if needed
            },
          ),
        );
      },
    );
  }

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

在这个示例中:

  1. 我们创建了一个基本的Flutter应用,并在MyHomePage中定义了一个按钮,点击按钮时会显示一个可拖拽的对话框。
  2. 使用BouncingDraggableDialog来创建对话框,并设置了标题、内容、操作按钮等。
  3. dragHandle属性定义了一个拖拽把手,这里简单地使用了一个带有文本的容器。你可以根据需要自定义拖拽把手的样式和位置。
  4. 对话框内容被包裹在SingleChildScrollView中,以便在内容较多时可以滚动。

运行这个示例,你将看到一个按钮,点击它会显示一个可拖拽且具有弹跳动画效果的对话框。你可以拖动对话框到屏幕上的任何位置。

回到顶部