Flutter本地化DataTable表头报错:Expanded子组件非常量问题求助
解决Flutter DataTable本地化表头的编译错误
错误原因
你给columns数组加上了const修饰,但txt是运行时通过本地化工具获取文本创建的非常量子组件,const要求数组内所有元素必须是编译时常量,两者冲突导致报错。
解决方案
直接去掉columns前面的const修饰符,同时可以简化代码,无需单独定义txt变量,直接在DataColumn中构建本地化文本的Text组件:
return DataTable( columns: <DataColumn>[ // 移除const DataColumn( label: Expanded( child: Text( MainLocalizations.of(context)!.getText('col1'), style: const TextStyle(fontStyle: FontStyle.italic), ), ), ), // 其他需要本地化的列按相同逻辑处理 ], rows: const <DataRow>[ // 行内容如果是常量可保留const,不影响 DataRow(cells: <DataCell>[DataCell(Text('示例数据'))]), ], );
补充说明
本地化文本是根据设备语言环境运行时动态获取的,无法作为编译时常量,因此包含这类动态内容的columns数组不能用const修饰。所有需要本地化的表头列,都按照上述方式直接在DataColumn的label中构建Text组件即可。
内容的提问来源于stack exchange,提问作者nanev1976
相关产品推荐
相关产品推荐

