title: How to implement multiple local notification in Flutter?
body: <p>I use flutter_local_notifications package to set notifications. I have an expandable list and every option of a title has a star icon. When I press one of white star icons, its color changes and set a notification("_showNotification" method).</p>
  
  <p>In case that I press two or more stars, my app shows only last notification, but I want to show all of them. How can I do this?</p>
  
  <p>This is whole code:</p>
  
  <pre><code>import 'package:flutter/material.dart';
  import 'package:flutter_local_notifications/flutter_local_notifications.dart';
  
  void main() {
    runApp(new MaterialApp(home: new Home()));
  }
  
  class Home extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      return new Scaffold(
        appBar: new AppBar(
          title: new Text("Expandable List"),
        ),
        body: new ListView.builder(
          itemBuilder: (BuildContext context, int index) {
            return new ExpandableListView(ind: index, title: broadcast[index].title);
          },
          itemCount: 2,
        ),
      );
    }
  }
  
  class ExpandableListView extends StatefulWidget {
    final String title;
    final int ind;
  
    const ExpandableListView({this.ind, this.title});
  
    @override
    _ExpandableListViewState createState() =&gt; new _ExpandableListViewState();
  }
  
  class _ExpandableListViewState extends State&lt;ExpandableListView&gt; {
    bool expandFlag = false;
    Color _iconColor = Colors.white;
  
    @override
    Widget build(BuildContext context) {
      return new Container(
        margin: new EdgeInsets.symmetric(vertical: 1.0),
        child: new Column(
          children: &lt;Widget&gt;[
            new Container(
              padding: new EdgeInsets.symmetric(horizontal: 5.0),
              child: new Row(
                mainAxisAlignment: MainAxisAlignment.spaceBetween,
                children: &lt;Widget&gt;[
                  new IconButton(
                      icon: new Container(
                        height: 50.0,
                        width: 50.0,
                        decoration: new BoxDecoration(
                          color: Colors.orange,
                          shape: BoxShape.circle,
                        ),
                        child: new Center(
                          child: new Icon(
                            expandFlag ? Icons.keyboard_arrow_up : Icons.keyboard_arrow_down,
                          ),
                        ),
                      ),
                      onPressed: () {
                        setState(() {
                          expandFlag = !expandFlag;
                        });
                      }),
                  new Text(
                    widget.title,
                  )
                ],
              ),
            ),
            new ExpandableContainer(              
                expanded: expandFlag,
                expandedHeight: 60.0 * 3,              
                child: new ListView.builder(
                  itemBuilder: (BuildContext context, int index) {
                     return StatefulListTile(
                      title: broadcast[widget.ind].contents[index],
                      second: broadcast[widget.ind].time[index],
                    );
                    },
                  itemCount: broadcast[widget.ind].contents.length,
                ))
          ],
        ),
      );
    }
  }
  
  class ExpandableContainer extends StatelessWidget {
    final bool expanded;
    final double expandedHeight;
    final Widget child;
  
    ExpandableContainer({
      @required this.child,
      this.expandedHeight,
      this.expanded = true,
    });
  
    @override
    Widget build(BuildContext context) {
      double screenWidth = MediaQuery.of(context).size.width;
      return new AnimatedContainer(
        duration: new Duration(milliseconds: 100),
        curve: Curves.easeInOut,
        width: screenWidth,
        height: expanded ? expandedHeight : 0.0,
        child: new Container(
          child: child,
          decoration: new BoxDecoration(border: new Border.all(width: 1.0)),
        ),
      );
    }
  }
  
  class StatefulListTile extends StatefulWidget {
    const StatefulListTile({this.title, this.second});
    final String title;
    final int second;
  
    @override
    _StatefulListTileState createState() =&gt; _StatefulListTileState();
  }
  
  class _StatefulListTileState extends State&lt;StatefulListTile&gt; {
    Color _iconColor = Colors.white;
    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(
        decoration: new BoxDecoration(
            border: new Border.all(width: 1.0, color: Colors.grey),
            color: Colors.blue,),
        child: new ListTile(
          title: new Text(widget.title), 
          leading: new IconButton(
            icon: Icon(Icons.star, color: _iconColor),
            onPressed: () {
              setState(() {
                if (_iconColor == Colors.white) {
                  _iconColor = Colors.yellow;
                  _showNotification(widget.second);
                } else {
                  _iconColor = Colors.white;
                }
              });
            },
          ),
        ),
      );
    }
    Future onSelectNotification(String payload) async {
      showDialog(
        context: context,
        builder: (_) {
          return new AlertDialog(
            title: Text("PayLoad"),
            content: Text("Payload : $payload"),
          );
        },
      );
    }
  
    Future _showNotification(second) async {  
      var time = new Time(10, 18, second);
      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(
          0,
          widget.title,
          '', 
          Day.Monday,
          time,
          platformChannelSpecifics,
          payload: widget.title);
    }
  }
  
  class Broadcast {
    final String title;
    List&lt;String&gt; contents;
    List&lt;int&gt; time = [];
  
    Broadcast(this.title, this.contents, this.time);
  }
  
  
   List&lt;Broadcast&gt; broadcast = [
    new Broadcast(
      'A',
      ['1', '2', '3'],
      [5, 10, 15],
    ),
    new Broadcast(
      'B',
      ['4', '5'],
      [20, 25],
    ),
  ];
  </code></pre>