使用Workmanager在flutter中本地通知,仅显示通知标题

问题描述 投票:0回答:1

使用按钮生成通知时,通知显示完整且没有问题,但是当我使用 Workmanager 安排任务来显示相同的通知时,它会生成,但只显示标题,而不显示其余内容,这是从另一个类获得的数据类型字符串。该应用程序仅适用于Android。

这是用于flutter本地通知的代码:

import 'package:flutter_local_notifications/flutter_local_notifications.dart';

var variableString = "Notificación de prueba";

  final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin();

  Future<void> initNotifications() async {
    const AndroidInitializationSettings initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/ic_launcher');
    const DarwinInitializationSettings initializationSettingsIOS = DarwinInitializationSettings();
    const InitializationSettings initializationSettings = InitializationSettings(android: initializationSettingsAndroid, iOS: initializationSettingsIOS);
    await flutterLocalNotificationsPlugin.initialize(initializationSettings);
  }

  Future<void> showNotificacion() async {
    const AndroidNotificationDetails androidNotificationDetails =
    AndroidNotificationDetails(
      '1', 'My App Name',
      playSound: true,
      importance: Importance.max,
      priority: Priority.max,
      showWhen: true,
      showProgress: true,
      enableVibration: true,
      ongoing: true,
      styleInformation: BigTextStyleInformation(''),
    );

    const NotificationDetails notificationDetails =
    NotificationDetails(android: androidNotificationDetails);

    await flutterLocalNotificationsPlugin.show(
        1, 'My App Name', variableString, notificationDetails);
  }

这是App的初始化代码:

@pragma('vm:entry-point')
void callbackDispatcher() {
  Workmanager().executeTask((task, inputData) {
    showNotificacion(); // Envía una notificación cada 45 minutos
    return Future.value(true);
  });
}


Future<void> main() async {
   WidgetsFlutterBinding.ensureInitialized();
   await initNotifications(); // Local Notifications
   await Workmanager().initialize(callbackDispatcher, isInDebugMode: true);
   await Workmanager().registerPeriodicTask(
   "1", "simplePeriodicTask", frequency: Duration(minutes: 45),);
  runApp(
    const MyApp(),
  );
}

我尝试以不同的方式获取所述变量的值(使用sharedPreferences将其存储在存储中,使用全局变量等...),但我无法通过workmanager获取要通过flutter本地通知显示的信息.

非常感谢您抽出时间!!

flutter dart
1个回答
0
投票

你必须在 showNotificacion 函数中声明变量(variableString)。

因为执行任务时u只调用showNotificacion()函数所以应用程序看不到你的varvariableString =“Notificacióndeprueba”;变量

示例代码:

Future<void> showNotificacion() async {
    const AndroidNotificationDetails androidNotificationDetails =
    AndroidNotificationDetails(
      '1', 'My App Name',
      playSound: true,
      importance: Importance.max,
      priority: Priority.max,
      showWhen: true,
      showProgress: true,
      enableVibration: true,
      ongoing: true,
      styleInformation: BigTextStyleInformation(''),
    );

const NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails);

String? variableString =  // ur variableString

await flutterLocalNotificationsPlugin.show(
    1, 'My App Name', variableString, notificationDetails);

}

© www.soinside.com 2019 - 2024. All rights reserved.