Flutter通知管理插件starlight_notification的使用

Flutter通知管理插件starlight_notification的使用

简介

Starlight Notification 是一个用于在 Flutter 中使用 flutter_local_notifications 显示通知的简单方式。

功能

  • ☑️ 显示通知
  • ☑️ 取消通知
  • ☑️ 取消所有通知

安装

在你的 pubspec.yaml 文件中添加 starlight_notification 作为依赖项:

dependencies:
  starlight_notification:
    git:
      url: https://github.com/YeMyoAung/starlight_notification.git

Android 设置

你需要将 ic_launcher 放入 app/src/main/res/drawable 文件夹中。

activity 中添加以下属性:

<activity
    android:showWhenLocked="true"
    android:turnScreenOn="true">
</activity>

iOS 设置

AppDelegate.swift 文件的 didFinishLaunchingWithOptions 方法中添加以下代码:

if #available(iOS 10.0, *) {
  UNUserNotificationCenter.current().delegate = self as UNUserNotificationCenterDelegate
}

使用

首先,需要导入我们的包:

import 'package:starlight_notification/starlight_notification.dart';

初始化 StarlightNotification

调用 StarlightNotificationService 类的实例方法进行初始化:

await StarlightNotificationService.setup();

你还可以传递回调函数:

await StarlightNotificationService.setup(
  onSelectNotification: (e) {
    /// TODO: 处理通知点击事件
  }
);

显示通知

你可以随时调用 show 方法来显示通知:

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

Future<void> main() async {
  /// 重要
  WidgetsFlutterBinding.ensureInitialized();

  /// 重要
  await StarlightNotificationService.setup(
    onSelectNotification: (e) {
      /// TODO: 处理通知点击事件
    }
  );

  /// 显示通知
  await StarlightNotificationService.show(
    StarlightNotification(
      title: '你好',
      body: '你好',
      payload: '{"name":"张三","age":25}',
    ),
  );
}

取消通知

你可以调用 cancel 方法来取消特定的通知:

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

Future<void> main() async {
  /// 重要
  WidgetsFlutterBinding.ensureInitialized();

  /// 重要
  await StarlightNotificationService.setup(
    onSelectNotification: (e) {
      /// TODO: 处理通知点击事件
    }
  );

  /// 取消通知
  await StarlightNotificationService.cancel('你好');
}

取消所有通知

你可以调用 cancelAll 方法来取消所有通知:

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

Future<void> main() async {
  /// 重要
  WidgetsFlutterBinding.ensureInitialized();

  /// 重要
  await StarlightNotificationService.setup(
    onSelectNotification: (e) {
      /// TODO: 处理通知点击事件
    }
  );

  /// 取消所有通知
  await StarlightNotificationService.cancelAll();
}

示例代码

下面是一个完整的示例代码,展示了如何使用 starlight_notification 插件来显示和处理通知:

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

Future<void> main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await StarlightNotificationService.setup();
  runApp(const MyApp());
}

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

  [@override](/user/override)
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(title: 'Flutter Demo Home Page'),
    );
  }
}

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

  final String title;

  [@override](/user/override)
  State<MyHomePage> createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final int _counter = 0;

  void _incrementCounter() {
    StarlightNotificationService.show(
      StarlightNotification(title: "你好", body: '你好')
    );
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            const Text(
              '你已经按了按钮很多次:',
            ),
            Text(
              '$_counter',
              style: Theme.of(context).textTheme.headline4,
            ),
          ],
        ),
      ),
      floatingActionButton: FloatingActionButton(
        onPressed: _incrementCounter,
        tooltip: '显示通知',
        child: const Icon(Icons.notifications),
      ),
    );
  }
}

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

1 回复

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


当然,关于如何在Flutter项目中使用starlight_notification插件进行通知管理,下面是一个简单的代码示例。这个示例将展示如何初始化插件、发送本地通知以及处理通知点击事件。

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

dependencies:
  flutter:
    sdk: flutter
  starlight_notification: ^最新版本号  # 请替换为实际的最新版本号

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

接下来,在你的Flutter项目中,你可以按照以下步骤使用starlight_notification插件:

  1. 初始化插件

在你的主文件(通常是main.dart)中,初始化StarlightNotification插件。

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

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  StarlightNotification.initialize(); // 初始化插件
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Notification Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}
  1. 发送本地通知

在你的主页面或其他需要发送通知的地方,使用StarlightNotification.show方法来发送本地通知。

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

class _MyHomePageState extends State<MyHomePage> {
  void _showNotification() {
    StarlightNotification.show(
      title: 'Hello Flutter',
      body: 'This is a local notification!',
      payload: 'custom_data', // 可选的自定义数据
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Flutter Notification Demo'),
      ),
      body: Center(
        child: ElevatedButton(
          onPressed: _showNotification,
          child: Text('Show Notification'),
        ),
      ),
    );
  }
}
  1. 处理通知点击事件

要处理通知点击事件,你需要在你的main.dart文件中添加一个监听器。这通常在你的应用初始化部分完成。

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  StarlightNotification.initialize();

  // 添加通知点击事件监听器
  StarlightNotification.notificationClickStream.listen((event) {
    // 处理点击事件,event包含通知的payload等信息
    print('Notification clicked with payload: ${event.payload}');
    // 根据需要执行相应操作,比如导航到特定页面
  });

  runApp(MyApp());
}

以上代码展示了如何使用starlight_notification插件进行基本的通知管理,包括初始化插件、发送本地通知以及处理通知点击事件。请注意,starlight_notification插件的具体API可能会随着版本更新而变化,因此请参考插件的官方文档以获取最新和最准确的信息。

回到顶部