You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flutter使用Consumer时builder参数类型不匹配报错问题求助

报错原因
  • 你使用provider库的Consumer组件时没有指定泛型类型,默认Consumer的builder回调约定的参数类型为(BuildContext, dynamic, Widget?)
  • 你当前定义的builder参数类型为(BuildContext, TransactionProvider, Widget),第二个参数的具体类型和第三个参数的可空性都不匹配,因此触发类型校验报错
解决方案

推荐使用指定泛型的类型安全方案,直接给Consumer声明你要监听的TransactionProvider类型,同时将第三个参数child调整为可空类型Widget?即可,修改后的代码如下:

body: Consumer<TransactionProvider>(
  builder: (context, TransactionProvider provider, Widget? child) {
    return ListView.builder(
      itemCount: 4, //菜单数量为4
      itemBuilder: (context, int index) {
        return Card(
          elevation: 6,
          margin: const EdgeInsets.all(10),
          child: ListTile(
            //leading: CircleAvatar(
            //child: FittedBox
            //child: Text("500"),),
            title: Text('menu'),
            subtitle: Text('1235'),
          ),
        );
      }
    );
  }
)

如果你的代码里不会用到child参数,也可以直接用下划线占位省略类型声明:

builder: (context, TransactionProvider provider, _) {
  // 原有逻辑
}

内容的提问来源于stack exchange,提问作者Sareerawan Tabcharaenthun

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 23:45:00