title: Which is better when using provider instance in a new widget?
body: <p>Let's say I've written my code as below.
  I've got a provider called SampleProvider, and I'm using it in my main widget.</p>
  <pre><code>class SampleProvider extends ChangeNotifier {}
  
  class MainWidget extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      SampleProvider provider = Provider.of&lt;SampleProvider&gt;(context);
    }
  }
  </code></pre>
  <p>And then, I want to make a new widget and use this provider in the new widget.
  There will be two choices.
  First, I just instantiate another provider in the new widget as below.</p>
  <pre><code>class NewWidget extends StatelessWidget {
    @override
    Widget build(BuildContext context) {
      SampleProvider provider = Provider.of&lt;SampleProvider&gt;(context);
    }
  }
  </code></pre>
  <p>Or, I can send it from the main widget to the new widget as a constructor parameter.
  Like this:</p>
  <pre><code>class NewWidget extends StatelessWidget {
    final SampleProvider provider;
    NewWidget(this.provider);
  
    @override
    Widget build(BuildContext context) {
    }
  }
  </code></pre>
  <p>I guess the first option is better because flutter draws a widget based on its build context, but I'm not sure.
  I've googled it quite long, but there was no success.
  Can anybody tell me whether I am right or wrong? Or Do they have no difference?</p>