I'm working with the provider package for Flutter. What I want to accomplish is to have a simple provider just for one view or page. So I tried the following in my widget:
Widget build(BuildContext context) {
return ChangeNotifierProvider<MyModel>(
create: (_) => MyModel(),
child: Scaffold(
appBar: AppBar(
title: Text(
'Screen 1',
),
),
body: _buildBody(),
),
);
}
but when I try to access the provider using a Provider.of<MyModel>(context, listen: false).value
in my _buildBody()
method I get the error:
Could not find the correct Provider above this MyPageWidget
When I move the declaration of the provider to where I declare my App above this Widget it works. Unfortunately this makes the provider public for all of my views to access which is not what I want. How can I make a provider that just can be accessed within that one view or widget. Thanks for any help.
Note: I tried this answer but I'm still getting the same result.
Edit: I could use a Consumer
at the top of my widget tree, but doesn't that cause the page to rebuild too much if my whole widget tree is in the Consumer
. Further, what if I need to use Provider.of(...)
?