Flutter轻量级提示插件snacky的使用

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

Flutter轻量级提示插件snacky的使用

Logo

Logo

pub package publish to github pages live_demo

You deserve a simple snack!

很多当前的Snackbar和Toast库对于简单的使用场景来说过于复杂。Snacky是一个简单的库,允许你用最少的设置创建一个Snackbar,并且API易于使用。

Demo

你可以通过以下链接查看Live Web demo

Usage

基本配置

在你的Flutter应用中使用Snacky,首先需要进行基本配置:

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

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return SnackyConfiguratorWidget(
      app: MaterialApp(
        title: 'Flutter Demo',
        theme: ThemeData(
          primarySwatch: Colors.blue,
        ),
        home: MyHomePage(),
        navigatorObservers: [
          SnackyNavigationObserver(), // 可选,如果你想在页面切换时关闭snacky
        ],
      ),
    );
  }
}

显示一个简单的Snacky

要显示一个简单的Snacky,可以使用以下代码:

class MyHomePage extends StatelessWidget {
  final SnackyController _controller = SnackyController.instance;

  void showSimpleSnacky(BuildContext context) {
    final snacky = Snacky(
      title: 'My super simple snacky title',
      type: SnackyType.info, // 或者 SnackyType.error, SnackyType.success, SnackyType.warning, SnackyType.info
      showDuration: Duration(seconds: 3), // 显示时长
      transitionDuration: Duration(milliseconds: 300), // 过渡动画时长
      transitionCurve: Curves.easeInOut, // 动画曲线
      location: SnackyLocation.top, // 显示位置 (顶部或底部)
      openUntillClosed: false, // 是否保持打开直到手动关闭
      canBeClosed: true, // 用户是否可以关闭
      onTap: () => print('Snacky tapped'), // 点击事件
      subtitle: 'My super simple snacky subtitle', // 副标题
      leadingWidgetBuilder: (context, snacky) => Icon(Icons.check), // 前置图标
      trailingWidgetBuilder: (context, snacky) => Icon(Icons.close), // 后置图标
    );
    _controller.showMessage((context) => snacky);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("Snacky Example"),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () => showSimpleSnacky(context),
          child: Text("Show Simple Snacky"),
        ),
      ),
    );
  }
}

显示带有自定义组件的Snacky

如果你想要显示一个带有自定义组件的Snacky,可以使用以下代码:

void showCustomSnacky(BuildContext context) {
  final snacky = Snacky.widget(
    builder: (context, cancelableSnacky) => Container(
      padding: EdgeInsets.all(16.0),
      color: Colors.red,
      child: Text(
        "This is a custom snacky!",
        style: TextStyle(color: Colors.white),
      ),
    ),
    showDuration: Duration(seconds: 3), // 显示时长
    transitionDuration: Duration(milliseconds: 300), // 过渡动画时长
    transitionCurve: Curves.easeInOut, // 动画曲线
    location: SnackyLocation.top, // 显示位置 (顶部或底部)
  );
  _controller.showMessage((context) => snacky);
}

取消活动中的Snacky

你可以取消当前正在显示的Snacky:

_controller.cancelActiveSnacky();

取消所有Snacky

你可以取消所有未完成的Snacky:

_controller.cancelAll();

Easy to extend

你可以使用自己的SnackyControllerSnackyBuilderSnacky消息。这允许你创建自己的Snacky消息并使用自己的Snacky控制器。

默认情况下,SnackyController是单例的,但你可以创建自己的实例并在应用中使用它。确保将其传递给SnackyConfiguratorWidget,以便可以在应用中使用。

默认情况下,SnackyBuilderSimpleSnackyBuilder,但你可以创建自己的SnackyBuilder并在应用中使用它。确保将其传递给SnackyConfiguratorWidget,以便可以在应用中使用。

Todo

  • ❌ Add tests
  • ❌ Add support for “material”-like snackies

希望这篇文档能帮助你更好地理解和使用Snacky插件!如果你有任何问题或建议,请随时提出。


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

1 回复

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


当然,下面是一个关于如何在Flutter中使用轻量级提示插件snacky的示例代码。snacky是一个用于显示简单、轻量级提示(Snackbar)的Flutter包。

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

dependencies:
  flutter:
    sdk: flutter
  snacky: ^2.0.0  # 请根据需要检查最新版本号

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

接下来,你可以在你的Flutter应用中使用Snacky来显示提示。以下是一个简单的示例:

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

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

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

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

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Snacky Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: () {
            // 显示Snacky提示
            Snacky.snack(
              context,
              '这是一个Snackbar提示!',
              duration: SnackyDuration.lengthLong,
              backgroundColor: Colors.green,
              textColor: Colors.white,
              action: SnackyAction(
                label: '确定',
                onPressed: () {
                  // 点击确定按钮后的操作
                  print('点击确定按钮');
                },
              ),
            );
          },
          child: Text('显示Snackbar'),
        ),
      ),
    );
  }
}

在这个示例中,我们创建了一个简单的Flutter应用,其中包含一个按钮。当用户点击按钮时,会显示一个Snackbar提示。

以下是代码的关键部分解释:

  1. 导入包

    import 'package:snacky/snacky.dart';
    
  2. 显示Snackbar

    Snacky.snack(
      context,
      '这是一个Snackbar提示!',
      duration: SnackyDuration.lengthLong,
      backgroundColor: Colors.green,
      textColor: Colors.white,
      action: SnackyAction(
        label: '确定',
        onPressed: () {
          print('点击确定按钮');
        },
      ),
    );
    
  • context:当前的BuildContext。
  • message:Snackbar上显示的消息。
  • duration:Snackbar显示的持续时间。
  • backgroundColor:Snackbar的背景颜色。
  • textColor:Snackbar的文本颜色。
  • action:Snackbar上的操作按钮,包含标签和点击事件。

通过这种方式,你可以轻松地在Flutter应用中集成和使用snacky插件来显示轻量级提示。

回到顶部