Flutter Consumer<通用>?通用>
我正在尝试生成一个 Consumer 小部件,但它可以根据参数适用于两个不同的 Provider
class Header extends StatelessWidget {
const Header({
Key? key,
required this.dataProvider,
}) : super(key: key);
final IceCreamProvider dataProvider;
@override
Widget build(BuildContext context) {
return Consumer<dataProvider>(builder: (context, value, child) {
return Container();
},),
}
当然,此代码不起作用,但我想知道是否有办法让它工作?
I'm trying to generate a Consumer widget but that can work for two different Providers depending on a parameter
class Header extends StatelessWidget {
const Header({
Key? key,
required this.dataProvider,
}) : super(key: key);
final IceCreamProvider dataProvider;
@override
Widget build(BuildContext context) {
return Consumer<dataProvider>(builder: (context, value, child) {
return Container();
},),
}
Of course, this code is not working, but I'm wondering if there is a way to make it work?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通用应该是变量的
TYPE
,因此在您的情况下,您必须使用IceCreamProvider
而不是变量名称dataProvider
Updated添加 HeaderWrapper
因为您想传递提供程序,所以您必须上升一级并为您的
ChangeNotifierProvider
(假设您正在使用它)提供您想要在内部 使用的正确实例这
Header
,使用之前写的Consumer即可(甚至可以跳过里面的dataProvider字段,因为不会用到)通用处理:在用户评论后编辑
不能只需传递一个类型作为参数并将其作为泛型设置到括号中,但是您可以将泛型添加到您的类
用法:
标头()
The generic should be the
TYPE
of the variable, so in your case you have to useIceCreamProvider
and not the variable namedataProvider
Updated with the addition of HeaderWrapper
Since you want to pass the provider, you must go up one level and give your
ChangeNotifierProvider
(assuming you are using that) the correct instance you want to usethen inside the
Header
, just use the Consumer as written before (you can even skip the field dataProvider inside since it will be not used)Generic handling: Edit after user comment
You can't simply pass a Type as a parameter and set into the bracket as a Generic, however you can add a generic to your class
usage:
Header<IceCreamProvider>()