Flutter intl 0.17.0-nullsafety.2调用initializeDateFormatting空参报错如何解决
报错原因
你使用的intl 0.17.0空安全预览版本对initializeDateFormatting方法的参数做了非空约束,旧官方示例中传入null的写法已不符合空安全规则,方法的第二个参数localePath要求必须传入非空字符串类型的值。
修复方案
两种方案按需选择:
- 方案一(推荐):升级intl到正式稳定空安全版本
稳定版已优化参数兼容,第二个参数恢复为可选类型,传null不会触发报错。先修改pubspec.yaml依赖配置:
修改后执行flutter: sdk: flutter # 替换为稳定空安全版本即可,可根据需求使用更高版本 intl: ^0.18.1flutter pub get重新拉取依赖,原有代码即可正常运行。 - 方案二:保留当前版本,修改入参
如果你必须保留当前0.17.0-nullsafety.2版本,直接将第二个参数传入空字符串''替代null即可,同时注意意大利locale的正确写法是下划线分隔的it_IT,不要使用横杠分隔:import 'package:intl/date_symbol_data_local.dart'; initializeDateFormatting('it_IT', '').then((value) => print('intl ok'));
意大利格式日期使用示例
初始化完成后即可正常调用DateFormat生成对应格式的日期:
// 示例:格式化当前日期为意大利语长日期格式 String italianDate = DateFormat.yMMMMd('it_IT').format(DateTime.now()); // 输出示例:7 settembre 2024
内容的提问来源于stack exchange,提问作者Francesco
相关产品推荐
相关产品推荐

