Flutter中LvPopup组件仅指定实例传图时资源加载报错问题
解决Flutter中LvPopup组件未传image参数时的资源加载错误
问题核心是:当未传入image参数时,你用image ?? ""给Image.asset传了空字符串,Flutter无法加载空路径的资源,因此抛出"unable to load assets"异常。
修复方案
只在image参数不为空时渲染Image.asset组件,否则不渲染该图片元素。修改LvPopup的build方法中图片部分的代码:
class LvPopup extends StatelessWidget { final String title; final String users_info; final String? image; LvPopup({ super.key, required this.title, required this.users_info, this.image, }); @override Widget build(BuildContext context) { return SingleChildScrollView( child: Column( children: [ SizedBox(height: 10), Column( children: [ Row( children: [ Text( title, style: TextStyle(color: PaidworkColors.lightTxtColor), ), ], ), SizedBox( height: 5, ), Row( children: [ // 仅当image不为null时渲染图片 if (image != null) Image.asset(image!), Padding( padding: const EdgeInsets.all(5.0), child: Text( users_info, ), ), ], ) ], ) ], ), ); } }
说明
- 使用Dart的条件Widget语法
if (image != null),只有当image参数存在有效值时,才会创建Image.asset组件 - 原有的调用代码无需修改,未传
image的LvPopup实例会自动跳过图片渲染,不会再触发资源加载异常
内容的提问来源于stack exchange,提问作者EL QONDZIX
相关产品推荐
相关产品推荐

