Flutter/Dart PDF包表格创建报错:‘TableRow’类型无法分配给列表类型‘TableRow’
Flutter/Dart PDF包表格创建报错:‘TableRow’类型无法分配给列表类型‘TableRow’
嗨,这个报错看起来有点让人摸不着头脑对吧?其实本质是命名空间冲突导致的,我来给你拆解下问题和解决办法:
问题根源
你在导入pdf包的时候用了as pw的别名:
import 'package:pdf/widgets.dart' as pw;
但在写表格代码的时候,直接用了TableRow、Widget、TableCell这些类——这些其实是Flutter核心material库中的默认组件类,和pdf包中pw命名空间下的pw.TableRow、pw.Widget完全不是同一个类型!编译器自然会判定“类型不匹配”,也就是你看到的这个报错。
解决办法
所有用到pdf包内的组件,都必须加上pw.前缀,明确告诉编译器你要用的是pdf包的组件,而不是全局的material组件。
修改后的完整代码如下:
import 'package:pdf/pdf.dart'; import 'package:pdf/widgets.dart' as pw; pdf.addPage(pw.Page(pageFormat: PdfPageFormat.standard, build: (pw.Context context) { return pw.SizedBox( child: pw.Table(children: [ pw.TableRow(children: <pw.Widget>[ pw.TableCell(child: pw.Container(height: 30, width: 30, child: pw.Text(''))) ]), pw.TableRow(children: <pw.Widget>[ pw.TableCell(child: pw.Container(height: 30, width: 30, child: pw.Text(''))) ]) ]), ); }));
小提醒
以后使用带别名导入的第三方包时,一定要记得给包内的所有组件加上别名前缀,这样就能避免和全局类名冲突的问题啦~
备注:内容来源于stack exchange,提问作者DktPhl2018
相关产品推荐
相关产品推荐

