使用dash_chat包实现聊天功能时遇参数非空约束错误
问题根源
你遇到的错误是因为dash_chat的messageImageBuilder回调中,第二个参数chatmessage的类型被定义为非空类型(如ChatMessage),但你将其声明为可选位置参数(用方括号[]包裹)却未提供显式的非null默认值,Dart会自动给可选位置参数设置隐式默认值null,这就违反了非空类型的约束。
解决方法
方案1:指定非空默认值
给chatmessage显式设置一个合法的非空默认值,比如使用dash_chat提供的空消息实例:
messageImageBuilder: (url, [chatmessage = const ChatMessage.empty()]) => Container( height: 200, width: 200, child: PhotoView( imageProvider: NetworkImage(url!), ), ),
如果ChatMessage没有empty()构造函数,可手动构造一个符合要求的空实例(根据ChatMessage的实际构造参数调整):
messageImageBuilder: (url, [chatmessage = ChatMessage( text: '', user: User(id: 'default_user'), )]) => Container( height: 200, width: 200, child: PhotoView( imageProvider: NetworkImage(url!), ), ),
方案2:声明参数为可空类型(若业务无需使用该参数)
如果你的代码逻辑中不需要用到chatmessage,可以将其声明为可空类型,明确允许它为null:
messageImageBuilder: (url, [ChatMessage? chatmessage]) => Container( height: 200, width: 200, child: PhotoView( imageProvider: NetworkImage(url!), ), ),
这种方式会告诉Dart该参数可以为null,不会触发非空约束错误。
内容的提问来源于stack exchange,提问作者Jatin Pandey
相关产品推荐
相关产品推荐

