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
相关产品推荐
相关产品推荐

