title: Flutter Provider: notifyListeners() to specific target
body: <p><strong>Background info:</strong></p>
  
  <p>For my flutter project, I am using <code>listview.builder</code> and <code>provider</code>:</p>
  
  <p><code>ListView.Builder</code>:  getting the <code>buttons</code> info using provider and <code>listen</code> is <code>false</code>.</p>
  
  <pre><code>@override
  Widget build(BuildContext context) {
  final buttons = Provider.of&lt;mybuttons&gt;(context, listen: false);
  
  return Container(    
    child: ListView.builder(
      itemCount: buttons.length,
      itemBuilder: (context, index) {
        return singleButton(listIndex: index);
      },
    ),
   );
  }
  </code></pre>
  
  <p><strong>Then...</strong> where, <code>singleButton()</code>: This will run according to the <code>length</code> from the parent widget.</p>
  
  <pre><code>@override
  Widget build(BuildContext context) {
  final singleButtonInfo = Provider.of&lt;mybuttons&gt;(context).buttonIndex[listIndex];
  
  return FlatButton(
    child: Text(singleButtonInfo.text),
    onTap: (){
         changeText(listIndex);
    }
   );
  }
  </code></pre>
  
  <p>Thus, if the <code>length</code> is 5, then there will be 5 flatbuttons with index from 0 to 4.</p>
  
  <p>Using the <code>onTap</code>function, I want to change the text of that specific button (ie. if 3rd button is clicked, then I want to change only the 3rd button without rebuilding all buttons).</p>
  
  <pre><code>changeText(int listIndex){
    ...logic
    notifyListeners();
  }
  </code></pre>
  
  <p><strong>Here is question:</strong></p>
  
  <p>My understanding of <code>notifyListeners()</code> is that it will notify everything with the <code>Provider.of&lt;T&gt;(context)</code>and those widgets will be rebuilt (ie. all 5 buttons will be rebuilt with the new data).</p>
  
  <p>Because each button will have an unique index, is there a way to target a specific button to be rebuilt and ignore the rest?</p>
  
  <p>Thanks!</p>