Flutter如何实例化无默认构造函数的第三方RecognisedText类并赋值
报错原因解析
- 调用默认构造函数报错:Dart 中以下划线开头的构造函数属于私有构造,仅能在类定义的源文件内部调用,
RecognisedText._(this.text, this.blocks)就是私有构造,外部无法直接调用,因此你尝试直接RecognisedText(mytext,myblocks)创建实例时,会提示类没有可用的默认构造函数。 - 直接给属性赋值报错:类中的
text、blocks属性都被final修饰,这类属性仅能在实例构造阶段完成赋值,实例创建后就变为只读属性,无法再修改值,因此后续给属性赋值的写法不合法。
正确创建实例的方法
这个第三方类对外暴露了公开的工厂构造方法RecognisedText.fromMap,你只需要按照要求构造对应结构的Map传入即可,你自己找到的写法是完全正确的:
RecognisedText myobject = RecognisedText.fromMap({"text": mytext, "blocks": myblocks});
如果运行时出现类型相关错误,只需要检查传入的blocks对应内容是否符合TextBlock.fromMap的入参格式要求即可,工厂方法内部会自动遍历blocks内容生成TextBlock实例,完成RecognisedText实例的构造。
内容的提问来源于stack exchange,提问作者Mozhgan Javadzadeh
相关产品推荐
相关产品推荐

