Кто-нибудь может рассказать мне, как использовать функцию без кнопки. Функция должна срабатывать автоматически

Привет, я пытаюсь отобразить локальное уведомление о трепете в своем приложении. Функциональность, которую я хочу, заключается в том, что всякий раз, когда выполняется определенное условие, функция уведомления должна срабатывать, а затем она должна отображаться ... Вот исходный код ниже, пожалуйста, помогите мне (с этого момента я не могу понять, что делать ... Пожалуйста, помогите мне) ПРИМЕЧАНИЕ:- Функциональность должна выполняться без использования каких-либо кнопок на Press. Метод _show Notification() должен запускаться всякий раз, когда выполняется условие с помощью оператора if else.

      ***code***
import 'package:expilert/notificationscreen.dart';
import 'package:flutter/material.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';

class Notifications extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return PushNotifications();
  }
}

class PushNotifications extends StatefulWidget {
  @override
  _PushNotificationsState createState() => _PushNotificationsState();
}

class _PushNotificationsState extends State<PushNotifications> {
  FlutterLocalNotificationsPlugin fltrNotification;


  @override
  void initState() {
    super.initState();
    var androidInitilize = new AndroidInitializationSettings('app_icon');
    var initilizationsSettings =
        new InitializationSettings(android: androidInitilize);
    fltrNotification = new FlutterLocalNotificationsPlugin();
    fltrNotification.initialize(initilizationsSettings,
        onSelectNotification: notificationSelected);
    
  }
//this below function should be called without any button whenever the the condition is met
  Future _showNotification() async {
    var androidDetails = new AndroidNotificationDetails(
        "Channel ID", "5555", "This is my channel",
        importance: Importance.max);

    var generalNotificationDetails =
        new NotificationDetails(android: androidDetails);
    
    var scheduledTime = DateTime.now().add(Duration(seconds: 10));

    fltrNotification.schedule(1, "Your product has expired!!!", 'Task',
        scheduledTime, generalNotificationDetails);
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      body: Center(
        child: Container(),
      ),
    );
  }

  Future notificationSelected(String payload) async {
    print('Pressed');
    Navigator.pushNamed(context, NotificationPage.id);
  }
}

1 ответ

Возможно, вы написали код для получения документа в вашем приложении, сопоставления значений даты и вызова этого PushNotification.

Если нет, вы можете добавить слушателя в firebase сбор и послушайте, как изменится стоимость,

      final streamUser = Firestore.instance.collection("users").snapshots().asBroadcastStream();
streamUser.listen((event) {
  event.documents.forEach((user) {
    print(user.data);
    // add condition here and invoke PushNotification
  });
});
Другие вопросы по тегам