Flutter消息提示插件toaster_next的使用

Flutter消息提示插件toaster_next的使用

Toaster Next

image

这是一个用于显示消息提示(Toast)的包。相比于其他类似的包,它具有以下优点:

  • 更可定制化:可以使用默认的消息提示样式,也可以自定义消息提示。
  • 更灵活:消息提示样式足够通用,可以适用于所有场景;错误、警告、成功等信息,或者自定义类型。
  • 易于测试:Toaster 使用了一个简单的 API,便于在测试中进行模拟。
  • 简单易用:将 Toaster 小部件添加到小部件树中,然后开始添加消息提示。简单且方便。

快速上手

参考示例代码来了解如何使用。

快速设置步骤如下:

  1. 在你的小部件树中使用 Toaster.mount 添加 Toaster 小部件:
class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Toaster Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Toaster.mount(child: const Scaffold(body: AddToasts())),
    );
  }
}
  1. 然后,使用 Toaster 添加消息提示:
toaster.of(context).add(Toast(
    message: 'Im a message',
    type: warningToast
))

这样就完成了基本的配置!

不同的消息提示类型

默认情况下,提供了警告(warningToast)、成功(successToast)和错误(errorToast)三种类型。如果你想为其他用途创建新的消息提示类型,例如信息提示(infoToast)或通知提示(notificationToast),你可以创建一个 ToastType 的实例,如下所示:

final infoToast = ToastType(
  actionColor: Colors.red.blue900,
  iconBgColor: Colors.red.blue50,
  icon: const Icon(
    Icons.info,
    color: Colors.blue,
    size: ToastType.defaultToastIconSize,
  ),
);

这将自定义你在调用 toaster.of(context).add 时传递的提示样式。这样可以将提示的样式与提示本身分离,从而可以在不同的场合下(如错误、成功或警告)重用同一个小部件。

消息提示事件

消息提示有两个事件钩子:onDismisstoastActiononDismiss 会在消息提示被关闭时触发,包括用户手动关闭、点击操作按钮或超时时。toastAction 会在消息提示的操作按钮被点击时触发,这在确认某些操作时非常有用,例如用户执行破坏性操作前的确认。

Button(
  onClick: toaster.of(context).add(Toast(
    type: warningToast,
    message: 'Are you sure you want to do a destructive action?',
    action: ToastAction(
      action: destructiveActionHandler,
      text: 'Yes, I\'m sure'
    )
  ))
)

有关更多详细信息和选项,请参阅文档。

示例代码

以下是完整的示例代码:

import 'package:flutter/material.dart';
import 'package:toaster_next/toaster.dart';

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

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Toaster Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: Toaster.mount(child: const Scaffold(body: AddToasts())),
    );
  }
}

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

  [@override](/user/override)
  State<AddToasts> createState() => _AddToastsState();
}

class _AddToastsState extends State<AddToasts> {
  int counter = 0;

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Center(
      child: ElevatedButton(
        child: const Text('Add Toast'),
        onPressed: () {
          setState(() {
            counter++;
          });
          Toaster.of(context).add(Toast(
            action: ToastAction(
              // 忽略:避免打印
              action: () => print('Clicked on action'),
              actionText: 'Click me',
            ),
            duration: null,
            onDismiss: () =>
              // 忽略:避免打印
              print('Ive been dismissed; the action was not performed'),
            message: counter.toString(),
            type: counter % 3 == 0
                ? warningToast
                : counter % 3 == 1
                    ? successToast
                    : errorToast,
          ));
        },
      ),
    );
  }
}

更多关于Flutter消息提示插件toaster_next的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter消息提示插件toaster_next的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


toaster_next 是一个 Flutter 插件,用于在应用中显示简单的消息提示(Toast)。它提供了一个简单易用的 API,可以在应用的不同位置显示短暂的提示消息。以下是 toaster_next 的基本使用方法。

1. 添加依赖

首先,在 pubspec.yaml 文件中添加 toaster_next 依赖:

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

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

2. 导入包

在你的 Dart 文件中导入 toaster_next 包:

import 'package:toaster_next/toaster_next.dart';

3. 显示 Toast 消息

你可以使用 Toaster.show 方法来显示 Toast 消息。以下是一个简单的示例:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Toaster Next Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              // 显示 Toast 消息
              Toaster.show(
                context: context,
                message: 'Hello, Toaster Next!',
                duration: Duration(seconds: 2),
                position: ToasterPosition.bottom,
              );
            },
            child: Text('Show Toast'),
          ),
        ),
      ),
    );
  }
}

4. 参数说明

Toaster.show 方法接受以下参数:

  • context: BuildContext,用于获取当前的上下文。
  • message: 要显示的提示消息。
  • duration: 消息显示的持续时间,默认为 Duration(seconds: 2)
  • position: 消息显示的位置,可以是 ToasterPosition.topToasterPosition.bottom,默认为 ToasterPosition.bottom
  • textStyle: 消息的文本样式,可以自定义字体大小、颜色等。
  • backgroundColor: 消息的背景颜色,默认为 Colors.black54

5. 自定义样式

你可以通过 textStylebackgroundColor 参数来自定义 Toast 消息的样式:

Toaster.show(
  context: context,
  message: 'Custom Style Toast',
  duration: Duration(seconds: 3),
  position: ToasterPosition.top,
  textStyle: TextStyle(
    fontSize: 16.0,
    color: Colors.white,
    fontWeight: FontWeight.bold,
  ),
  backgroundColor: Colors.blue,
);
回到顶部