Android Studio中Flutter开发DatabaseService与initialData报错如何解决?
报错修复方案
问题1:DatabaseService()实例化提示缺少必填命名参数uid
原因
你的DatabaseService类的默认构造函数中,将uid声明为了required命名参数,即使当前读取全量users集合的逻辑不需要用到uid,实例化时也必须满足构造函数的参数要求。
修复方案二选一:
- 若
uid参数仅在部分业务场景需要,直接去掉构造函数中uid的required修饰符,设置默认值即可:// DatabaseService类构造函数修改示例 DatabaseService({this.uid = ''}); - 若其余业务场景确实要求
uid必须传参,可以新增一个无参数的命名构造函数专门用于全局集合读取场景:// DatabaseService类新增命名构造函数 DatabaseService.withoutUid(); // 实例化时调用该构造函数即可 value: DatabaseService.withoutUid().users,
问题2:initialData: null提示参数类型不兼容
原因
你定义的StreamProvider泛型为非空类型QuerySnapshot,Dart空安全规则下不允许给非空类型赋值null。
修复方案二选一:
- 更推荐的方案:将
StreamProvider的泛型修改为可空类型,匹配初始无数据的业务逻辑:
后续在消费该Provider的位置注意对// 修改泛型为可空的QuerySnapshot? return StreamProvider<QuerySnapshot?>.value( value: DatabaseService().users, initialData: null, child: Scaffold(QuerySnapshot做判空处理即可。 - 若不想使用可空类型,可以给
initialData传入一个空的QuerySnapshot实例作为占位值。
内容的提问来源于stack exchange,提问作者Something You
相关产品推荐
相关产品推荐

