Черный фон при отображении полезной нагрузки в приложении флаттера - PullRequest
0 голосов
/ 02 мая 2019

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

class _StatefulListTileState extends State<StatefulListTile> {
  Color _iconColor1 = Colors.white;
  Color _iconColor2 = Colors.yellow;
  FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin;

  @override
  initState() {
    super.initState();
    var initializationSettingsAndroid =
        new AndroidInitializationSettings('@mipmap/ic_launcher'); 
    var initializationSettingsIOS = new IOSInitializationSettings();
    var initializationSettings = new InitializationSettings(
        initializationSettingsAndroid, initializationSettingsIOS);
    flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
    flutterLocalNotificationsPlugin.initialize(initializationSettings,
        onSelectNotification: onSelectNotification);
  }

  @override
  Widget build(BuildContext context) {
    return new Container(
      child: new FutureBuilder(
        future: saveColors(),
        builder: (context, snapshot) {
        return new ListTile(
        title: new Text(widget.title),
        leading: new IconButton(
          icon: Icon(Icons.star, color: snapshot.data.contains('${widget.id}') ? _iconColor2: _iconColor1),
          onPressed: () {
            setState(() {
              if (snapshot.data.contains('${widget.id}')) {
                _iconColor2 = Colors.white;
                _iconColor1 = Colors.white;
                flutterLocalNotificationsPlugin.cancel(widget.id);
                snapshot.data.remove('${widget.id}');
              } else {
                _iconColor1 = Colors.yellow;
                _iconColor2 = Colors.yellow;
                _showNotification(widget.id, widget.day, widget.clock);
                snapshot.data.add('${widget.id}');
              }});},),);}));}

 Future onSelectNotification(String payload) async {
    showDialog(
      context: context,
      builder: (_) {
        return new AlertDialog(...

        );},);}

  Future _showNotification(id, day, clock) async {
    //determine hour, minute and d

    var time = new Time(hour, minute, 0);
    var androidPlatformChannelSpecifics =
      new AndroidNotificationDetails('show weekly channel id',
          'show weekly channel name', 'show weekly description');
    var iOSPlatformChannelSpecifics =
      new IOSNotificationDetails();
    var platformChannelSpecifics = new NotificationDetails(
        androidPlatformChannelSpecifics, iOSPlatformChannelSpecifics);
    await flutterLocalNotificationsPlugin.showWeeklyAtDayAndTime(
    id,
    widget.title,
    widget.team, 
    d,
    time,
    platformChannelSpecifics,
    payload: widget.title + '\n' + widget.team + '\n' + widget.channel);          
  }
}

Буду признателен за любую помощь, которую вы можете мне дать.

1 Ответ

0 голосов
/ 06 мая 2019

Убедитесь, что вы делаете это только один раз в вашем коде

@override
initState() {
    super.initState();
    var initializationSettingsAndroid =
            new AndroidInitializationSettings('@mipmap/ic_launcher'); 
    var initializationSettingsIOS = new IOSInitializationSettings();
    var initializationSettings = new InitializationSettings(
            initializationSettingsAndroid, initializationSettingsIOS);
    flutterLocalNotificationsPlugin = new FlutterLocalNotificationsPlugin();
    flutterLocalNotificationsPlugin.initialize(initializationSettings,
            onSelectNotification: onSelectNotification);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...