Flutter通知提示插件another_flushbar的使用

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

Flutter通知提示插件another_flushbar的使用

插件介绍

another_flushbar 是一个用于Flutter应用的通知提示插件,它提供了比原生Toast和Snackbar更丰富的自定义选项。无论你是Android开发者还是iOS开发者,这个插件都能帮助你创建出美观且功能强大的通知提示框。

你可以通过这里查看安装说明。

快速参考

以下是一些常用的属性及其作用:

属性 说明
title 显示给用户的标题
message 显示给用户的消息
duration 持续时间,设置为null则不会自动消失
isDismissible 是否可以通过滑动或点击关闭
flushbarPosition 通知的位置(顶部或底部)
flushbarStyle 样式(浮动或固定在边缘)

更多属性请参见官方文档。

示例代码

基础用法

import 'package:another_flushbar/flushbar.dart';
import 'package:flutter/material.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(title: 'Flutter Demo Home Page'),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key? key, required this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text('Hello flushbar:'),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: () async {
          await Flushbar(
            title: 'Hey Ninja',
            message:
                'Lorem Ipsum is simply dummy text of the printing and typesetting industry',
            duration: Duration(seconds: 3),
          ).show(context);
        },
        tooltip: 'Show Flushbar',
        child: Icon(Icons.add),
      ),
    );
  }
}

高级用法

自定义样式

Flushbar(
  title: "Hey Ninja",
  titleColor: Colors.white,
  message: "Customized message with advanced styling.",
  flushbarPosition: FlushbarPosition.TOP,
  flushbarStyle: FlushbarStyle.FLOATING,
  reverseAnimationCurve: Curves.decelerate,
  forwardAnimationCurve: Curves.elasticOut,
  backgroundColor: Colors.red,
  boxShadows: [BoxShadow(color: Colors.blue[800], offset: Offset(0.0, 2.0), blurRadius: 3.0)],
  backgroundGradient: LinearGradient(colors: [Colors.blueGrey, Colors.black]),
  isDismissible: false,
  duration: Duration(seconds: 4),
  icon: Icon(
    Icons.check,
    color: Colors.greenAccent,
  ),
  mainButton: FlatButton(
    onPressed: () {},
    child: Text(
      "CLAP",
      style: TextStyle(color: Colors.amber),
    ),
  ),
  showProgressIndicator: true,
  progressIndicatorBackgroundColor: Colors.blueGrey,
  titleText: Text(
    "Hello Hero",
    style: TextStyle(
        fontWeight: FontWeight.bold, fontSize: 20.0, color: Colors.yellow[600], fontFamily: "ShadowsIntoLightTwo"),
  ),
  messageText: Text(
    "You killed that giant monster in the city. Congratulations!",
    style: TextStyle(fontSize: 18.0, color: Colors.green, fontFamily: "ShadowsIntoLightTwo"),
  ),
)..show(context);

输入框

final GlobalKey<FormState> _formKey = GlobalKey<FormState>();

Flushbar<List<String>> flush = Flushbar<List<String>>(
  userInputForm: Form(
    key: _formKey,
    child: Column(
      mainAxisSize: MainAxisSize.min,
      children: [
        TextFormField(
          initialValue: "Initial Value",
          style: TextStyle(color: Colors.white),
          maxLength: 100,
          maxLines: 1,
          maxLengthEnforced: true,
          decoration: InputDecoration(
            fillColor: Colors.white10,
            filled: true,
            icon: Icon(Icons.label, color: Colors.grey[500]),
            border: UnderlineInputBorder(),
            helperText: "Helper Text",
            helperStyle: TextStyle(color: Colors.grey),
            labelText: "Label Text",
            labelStyle: TextStyle(color: Colors.grey),
          ),
        ),
        TextFormField(
          initialValue: "Initial Value Two",
          style: TextStyle(color: Colors.white),
          maxLength: 100,
          maxLines: 1,
          maxLengthEnforced: true,
          decoration: InputDecoration(
            fillColor: Colors.white10,
            filled: true,
            icon: Icon(Icons.label, color: Colors.grey[500]),
            border: UnderlineInputBorder(),
            helperText: "Helper Text",
            helperStyle: TextStyle(color: Colors.grey),
            labelText: "Label Text",
            labelStyle: TextStyle(color: Colors.grey),
          ),
        ),
        Align(
          alignment: Alignment.bottomRight,
          child: Padding(
            padding: const EdgeInsets.only(top: 8.0),
            child: MaterialButton(
              textColor: Colors.amberAccent,
              child: Text("SUBMIT"),
              onPressed: () {
                if (_formKey.currentState!.validate()) {
                  // Perform action on form submit
                  flush.dismiss(["Value1", "Value2"]);
                }
              },
            ),
          ),
        ),
      ],
    ),
  ),
)..show(context).then((result) {
  if (result != null) {
    print("User input: ${result.join(", ")}");
  }
});

以上就是关于another_flushbar的基本使用方法以及一些高级特性的示例代码。希望这些信息能够帮助到你!如果你有任何问题或者需要进一步的帮助,请随时提问。


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

1 回复

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


当然,以下是如何在Flutter项目中使用another_flushbar插件来实现通知提示的详细代码示例。

1. 添加依赖

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

dependencies:
  flutter:
    sdk: flutter
  another_flushbar: ^1.10.29  # 请检查最新版本号

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

2. 导入插件

在你的Dart文件中导入another_flushbar插件:

import 'package:another_flushbar/flushbar_helper.dart';
import 'package:another_flushbar/flushbar.dart';

3. 使用Flushbar

以下是一个简单的例子,展示了如何在Flutter中使用Flushbar来显示一个基本的通知提示:

import 'package:flutter/material.dart';
import 'package:another_flushbar/flushbar_helper.dart';
import 'package:another_flushbar/flushbar.dart';

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

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: Text('Flushbar Example'),
        ),
        body: Center(
          child: ElevatedButton(
            onPressed: () {
              _showFlushbar(context);
            },
            child: Text('Show Flushbar'),
          ),
        ),
      ),
    );
  }

  void _showFlushbar(BuildContext context) {
    Flushbar(
      message: "This is a Flushbar message!",
      duration: Duration(seconds: 3),
      leftBarIndicatorColor: Colors.blue,
      backgroundColor: Colors.white,
      flushbarPosition: FlushbarPosition.TOP,
      mainButton: FlushbarButton(
        onPressed: () {
          // Action when main button is pressed
          print("Main button pressed!");
        },
        text: "OK",
      ),
    )..show(context);
  }
}

4. 自定义Flushbar

你还可以根据需要自定义Flushbar,比如添加图标、更改按钮文本和颜色等:

void _showCustomFlushbar(BuildContext context) {
  Flushbar(
    title: "Attention!",
    message: "This is a custom Flushbar with an icon.",
    icon: Icon(Icons.warning, color: Colors.amber, size: 28),
    duration: Duration(seconds: 4),
    leftBarIndicatorColor: Colors.amber,
    backgroundColor: Colors.white.withOpacity(0.9),
    flushbarPosition: FlushbarPosition.BOTTOM,
    mainButton: FlushbarButton(
      onPressed: () {
        // Action when main button is pressed
        print("Custom main button pressed!");
      },
      text: "Dismiss",
      textColor: Colors.amber,
      backgroundColor: Colors.white,
    ),
    isDismissible: true,
  )..show(context);
}

在你的ElevatedButtononPressed回调中调用这个新的函数来显示自定义的Flushbar:

ElevatedButton(
  onPressed: () {
    _showCustomFlushbar(context);
  },
  child: Text('Show Custom Flushbar'),
),

这样,你就可以在你的Flutter应用中成功地使用another_flushbar插件来显示通知提示了。希望这些代码示例对你有所帮助!

回到顶部