Reputation: 835
I have a child widget:
class MyWidget extends StatelessWidget {
final provider;
MyWidget({Key key, @required this.provider});
Widget build(BuildContext context) {
final data = Provider.of<provider>(context);
}
}
That I use multiple times from a parent widget:
class Parent extends StatelessWidget {
...
children: <Widget>[
ChangeNotifierProvider<Myproviderone>(
builder: (context) => Myproviderone(),
child: MyWidget(MyProviderone),
),
ChangeNotifierProvider<Myprovidertwo>(
builder: (context) => Myprovidertwo(),
child: MyWidget(MyProvidertwo),
),
],
...
}
I am using provider package. Basically I want to pass the Type Myproviderone/Myprovidertwo to be used as a generic inside Provider.of<>
How can this be achieved?
Upvotes: 1
Views: 259
Reputation: 1621
Make your MyWidget
a generic class:
class MyWidget<T> extends StatelessWidget {
MyWidget({Key key});
Widget build(BuildContext context) {
final data = Provider.of<T>(context);
}
}
and then build it from the outside like that:
class Parent extends StatelessWidget {
children: <Widget>[
ChangeNotifierProvider<Myproviderone>(
builder: (context) => Myproviderone(),
child: MyWidget<MyProviderone>(),
),
],
}
Upvotes: 1