Flutter两类报错:List<Widget>无法赋值给Widget及GridView参数不匹配
错误分析与修复方案
第一个错误:element type 'List<Widget>' can't be assigned to the list type 'Widget'
原因:给GridView.count的children传了<Widget>[result],但result本身就是List<Widget>类型,相当于把列表作为单个元素塞进了children列表,而children需要的是Widget类型的元素,类型不匹配。
修复:直接将result赋值给children,无需额外嵌套列表:
final GridView results = GridView.count( crossAxisCount: 2, children: result // 直接使用result,不要套[result] );
第二个错误:the argument type "GridView" can't be assigned to the parameter type "Iterable"
原因:categoriesWidgets.addAll()要求传入Iterable<Widget>类型参数,但你传了单个GridView实例。addAll用于批量添加元素,单个元素应该用add方法。
修复:把categoriesWidgets.addAll(results);改为:
categoriesWidgets.add(results);
额外修正项
List<Widget> categoriesWidgets;未初始化,会触发空指针异常,需改为List<Widget> categoriesWidgets = [];String categoryCaption,末尾多余逗号,改为String categoryCaption;
完整修正代码
List<Widget> categoriesWidgets = []; String categoryCaption; final List<Widget> result = <Widget>[]; final Padding categoryTitleWidget = Padding( padding: const EdgeInsets.fromLTRB(0, 10, 0, 10), child: Text(categoryCaption) ); final GridView results = GridView.count( crossAxisCount: 2, children: result ); categoriesWidgets.add(categoryTitleWidget); categoriesWidgets.add(results);
内容的提问来源于stack exchange,提问作者Abu Bakar
相关产品推荐
相关产品推荐

