简体   繁体   中英

Call a HTTP request in flutter local notification

I would like to ask if there's a http get in flutter local notifications? My aim here is when the flutter notification will show, a http get request will be triggered

This my http request for my api:

final String url = 'http://192.168.43.45:8000/api';//url in my request
  List data;
  Future<String> getData() async {
    var response =await http.get(
      Uri.encodeFull(url),
      headers:{"Accept":"application/json"}   
    );//get data and decode it to json

  } 

This code will initialize the notifications:

      initializeNotifications() async {
        var initializationSettingsAndroid =
            AndroidInitializationSettings('@mipmap/launcher_icon');//icon will display when notification appears
        var initializationSettingsIOS = IOSInitializationSettings();
        var initializationSettings = InitializationSettings(
            initializationSettingsAndroid, initializationSettingsIOS);
        await flutterLocalNotificationsPlugin.initialize(initializationSettings,
            onSelectNotification: onSelectNotification);

      }

      Future onSelectNotification(String payload) async {
        if (payload != null) {
          debugPrint('notification payload: ' + payload);
        }

        await Navigator.push(
          context,
          new MaterialPageRoute(builder: (context) => HomePage()),
        );

      }

Code for the notification when click it will redirect to homePage:

      Future<void> scheduleNotification(Medicine medicine) async {
        var hour = int.parse(medicine.startTime[0] + medicine.startTime[1]);
        var ogValue = hour;
        var minute = int.parse(medicine.startTime[2] + medicine.startTime[3]);

        var androidPlatformChannelSpecifics = AndroidNotificationDetails(
          'repeatDailyAtTime channel id',
          'repeatDailyAtTime channel name',
          'repeatDailyAtTime description',
          importance: Importance.Max,
          ledColor: Color(0xFF3EB16F),
          ledOffMs: 1000,
          ledOnMs: 1000,
          enableLights: true,

        );


        //notification details 
        var iOSPlatformChannelSpecifics = IOSNotificationDetails();
        var platformChannelSpecifics = NotificationDetails(
            androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
          //this code will show the whats the notification must appear
          await flutterLocalNotificationsPlugin.showDailyAtTime(
              int.parse(medicine.notificationIDs[i]),
              'Mediminder: ${medicine.medicineName}',
              medicine.medicineType.toString() != 

MedicineType.None.toString()
                      ? 'It is time to take your Medicine, according to schedule'
                      : 'It is time to take your medicine, according to schedule',
                  Time(hour, minute,),
                  platformChannelSpecifics);
              hour = ogValue;

            }
            //await flutterLocalNotificationsPlugin.cancelAll();//cancel the flutter notifications
          }
        }

it seems that you are using flutter_local_notifications , looking at their documentation i don't think it's possible to you to handle the onReceive notification, this is done internally by the package.

But maybe you could implement your own receiver class extending BroadCastReceiver and listen for the same action that the packages send, from there you'll be able to send HTTP requests.

Take a look at this question , maybe it helps.



The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM