From eecb60ab0e56e1a4746d7e7f13254e4c1132014f Mon Sep 17 00:00:00 2001 From: broodjeaap89 Date: Thu, 5 Aug 2021 21:57:22 +0200 Subject: [PATCH] added (very) simple notifcations test to app --- lib/main.dart | 24 ++++++++++++++++++++++++ lib/pages/PizzaEventPage.dart | 24 ++++++++++++++++++++++++ pubspec.yaml | 2 ++ 3 files changed, 50 insertions(+) diff --git a/lib/main.dart b/lib/main.dart index 744029c..731659e 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:pizzaplanner/entities/PizzaEvent.dart'; import 'package:pizzaplanner/entities/PizzaRecipe/Ingredient.dart'; import 'package:pizzaplanner/entities/PizzaRecipe/PizzaRecipe.dart'; @@ -13,7 +14,10 @@ import 'package:hive/hive.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:pizzaplanner/util.dart'; +final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); + void main() async { + // hive init await Hive.initFlutter(); Hive.registerAdapter(PizzaEventAdapter()); @@ -30,6 +34,18 @@ void main() async { pizzaRecipesBox.addAll(await getRecipes()); } + // notification init + const initializationSettingsAndroid = AndroidInitializationSettings('@mipmap/app_icon'); + final initializationSettingsIOS = IOSInitializationSettings(); + final initializationSettingsMacOS = MacOSInitializationSettings(); + final initializationSettings = InitializationSettings( + android: initializationSettingsAndroid, + iOS: initializationSettingsIOS, + macOS: initializationSettingsMacOS + ); + await flutterLocalNotificationsPlugin.initialize(initializationSettings, + onSelectNotification: selectNotification); + runApp(PizzaPlanner()); //await Hive.close(); @@ -68,4 +84,12 @@ class RouteGenerator { } } } +} + +Future selectNotification(String? payload) async { + if (payload == null) { + print("Payload: null"); + return; + } + print("Payload: $payload"); } \ No newline at end of file diff --git a/lib/pages/PizzaEventPage.dart b/lib/pages/PizzaEventPage.dart index 004039d..b05d73f 100644 --- a/lib/pages/PizzaEventPage.dart +++ b/lib/pages/PizzaEventPage.dart @@ -1,8 +1,10 @@ import 'package:flutter/material.dart'; +import 'package:flutter_local_notifications/flutter_local_notifications.dart'; import 'package:fluttericon/font_awesome5_icons.dart'; import 'package:pizzaplanner/entities/PizzaEvent.dart'; import 'package:pizzaplanner/entities/PizzaRecipe/RecipeStep.dart'; import 'package:pizzaplanner/entities/PizzaRecipe/RecipeSubStep.dart'; +import 'package:pizzaplanner/main.dart'; class PizzaEventPage extends StatefulWidget { final PizzaEvent pizzaEvent; @@ -157,6 +159,28 @@ class SubStepDialogState extends State { }, ) ) + ), + SizedBox( + width: double.infinity, + height: 70, + child: Container( + color: Colors.grey, + child: TextButton( + child: Text("Notify!", style: TextStyle(color: Colors.white)), + onPressed: () async { + const androidPlatformChannelSpecifics = AndroidNotificationDetails( + "PizzaEvent", "PizzaEvent", "PizzaEvent notifications", + importance: Importance.max, + priority: Priority.high, + ticker: "ticker" + ); + const platformChannelSpecific = NotificationDetails(android: androidPlatformChannelSpecifics); + await flutterLocalNotificationsPlugin.show( + 0, 'test', 'teeest', platformChannelSpecific, + payload: "payload123"); + }, + ) + ) ) ] ) diff --git a/pubspec.yaml b/pubspec.yaml index 9ed3b21..b62cbf4 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -38,6 +38,8 @@ dependencies: hive: ^2.0.4 hive_flutter: ^1.1.0 + flutter_local_notifications: ^8.0.0 + dev_dependencies: flutter_test: sdk: flutter